]> git.eshelyaron.com Git - emacs.git/commitdiff
(x_noop_count): New variable.
authorRichard M. Stallman <rms@gnu.org>
Wed, 15 Jun 1994 20:15:59 +0000 (20:15 +0000)
committerRichard M. Stallman <rms@gnu.org>
Wed, 15 Jun 1994 20:15:59 +0000 (20:15 +0000)
(x_term_init) [X_IO_BUG]: Init it.
(XTread_socket) [X_IO_BUG]: Don't do XNoOp every time, just 1 in 100.

src/xterm.c

index 7d5cd5a5de9aaa18a0322fa7f89b4701591147f7..e942938d861da0a4e647265a988d1cc42e4c16cd 100644 (file)
@@ -347,6 +347,11 @@ static short grey_bits[] = {
 static Pixmap GreyPixmap = 0;
 #endif /* ! defined (HAVE_X11) */
 
+#ifdef X_IO_BUG
+static int x_noop_count;
+#endif
+
+
 /* From time to time we get info on an Emacs window, here.  */
 
 static WINDOWINFO_TYPE windowinfo;
@@ -4310,10 +4315,20 @@ XTread_socket (sd, bufp, numchars, waitp, expected)
     }
 
 #ifdef X_IO_BUG
-  if (! event_found)
-    /* On some systems, an X bug causes Emacs to get no more events
-       when the window is destroyed.  Detect that.  (1994.)  */
-    XNoOp (x_current_display);
+  if (! event_found) 
+    {
+      /* On some systems, an X bug causes Emacs to get no more events
+        when the window is destroyed.  Detect that.  (1994.)  */
+      /* Emacs and the X Server eats up CPU time if XNoOp is done every time.
+        One XNOOP in 100 loops will make Emacs terminate.
+        B. Bretthauer, 1994 */
+      x_noop_count++;
+      if (x_noop_count >= 100) 
+       {
+         x_noop_count=0;
+         XNoOp (x_current_display);
+       }
+    }
 #endif /* X_IO_BUG */
 
 #if 0 /* This fails for serial-line connections to the X server, 
@@ -6078,6 +6093,10 @@ x_term_init (display_name, xrm_option, resource_name)
 #endif /* ! defined (F_SETOWN) */
 #endif /* F_SETOWN_BUG */
   
+#ifdef X_IO_BUG
+  x_noop_count = 0;
+#endif
+
   x_focus_frame = x_highlight_frame = 0;
 
 #ifdef USE_X_TOOLKIT