From: Richard M. Stallman Date: Wed, 15 Jun 1994 20:15:59 +0000 (+0000) Subject: (x_noop_count): New variable. X-Git-Tag: emacs-19.34~7937 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=ef2a22d0bba8a4de98a52ebddae092632fb5c594;p=emacs.git (x_noop_count): New variable. (x_term_init) [X_IO_BUG]: Init it. (XTread_socket) [X_IO_BUG]: Don't do XNoOp every time, just 1 in 100. --- diff --git a/src/xterm.c b/src/xterm.c index 7d5cd5a5de9..e942938d861 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -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