emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r104724: Fix handling of pending sign


From: Chong Yidong
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r104724: Fix handling of pending signals in wait_reading_process_output (Bug#8869).
Date: Sat, 25 Jun 2011 23:40:40 -0400
User-agent: Bazaar (2.3.1)

------------------------------------------------------------
revno: 104724
committer: Chong Yidong <address@hidden>
branch nick: trunk
timestamp: Sat 2011-06-25 23:40:40 -0400
message:
  Fix handling of pending signals in wait_reading_process_output (Bug#8869).
  
  * process.c (wait_reading_process_output): Bypass select if
  waiting for a cell while ignoring keyboard input, and input is
  pending.  Suggested by Jan Djärv.
modified:
  src/ChangeLog
  src/process.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2011-06-25 20:53:24 +0000
+++ b/src/ChangeLog     2011-06-26 03:40:40 +0000
@@ -1,3 +1,9 @@
+2011-06-26  Chong Yidong  <address@hidden>
+
+       * process.c (wait_reading_process_output): Bypass select if
+       waiting for a cell while ignoring keyboard input, and input is
+       pending.  Suggested by Jan Djärv (Bug#8869).
+
 2011-06-25  Paul Eggert  <address@hidden>
 
        Use gnulib's dup2 module instead of rolling our own.
@@ -351,7 +357,7 @@
 
 2011-06-22  Jim Meyering  <address@hidden>
 
-       don't leak an XBM-image-sized buffer
+       Don't leak an XBM-image-sized buffer
        * image.c (xbm_load): Free the image buffer after using it.
 
 2011-06-21  Paul Eggert  <address@hidden>

=== modified file 'src/process.c'
--- a/src/process.c     2011-06-24 21:25:22 +0000
+++ b/src/process.c     2011-06-26 03:40:40 +0000
@@ -4479,13 +4479,19 @@
            set_waiting_for_input (&timeout);
        }
 
+      /* Skip the `select' call if input is available and we're
+        waiting for keyboard input or a cell change (which can be
+        triggered by processing X events).  In the latter case, set
+        nfds to 1 to avoid breaking the loop.  */
       no_avail = 0;
-      if (read_kbd && detect_input_pending ())
+      if ((read_kbd || !NILP (wait_for_cell))
+         && detect_input_pending ())
        {
-         nfds = 0;
+         nfds = read_kbd ? 0 : 1;
          no_avail = 1;
        }
-      else
+
+      if (!no_avail)
        {
 
 #ifdef ADAPTIVE_READ_BUFFERING


reply via email to

[Prev in Thread] Current Thread [Next in Thread]