changeset 47684:a0360c4a3066

(STOP_POLLING, RESUME_POLLING): New macros. (redisplay_internal): Use them. Do RESUME_POLLING at end of function.
author Richard M. Stallman <rms@gnu.org>
date Sun, 29 Sep 2002 17:44:16 +0000
parents 9597eaa105a1
children 3fab8e0e1480
files src/xdisp.c
diffstat 1 files changed, 13 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Sun Sep 29 16:22:19 2002 +0000
+++ b/src/xdisp.c	Sun Sep 29 17:44:16 2002 +0000
@@ -8471,6 +8471,14 @@
 	b->clip_changed = 1;
     }
 }
+
+#define STOP_POLLING					\
+do { if (! polling_stopped_here) stop_polling ();	\
+       polling_stopped_here = 1; } while (0)
+
+#define RESUME_POLLING					\
+do { if (polling_stopped_here) start_polling ();	\
+       polling_stopped_here = 0; } while (0)
 
 
 /* If PRESERVE_ECHO_AREA is nonzero, it means this redisplay is not in
@@ -8491,6 +8499,7 @@
   int number_of_visible_frames;
   int count;
   struct frame *sf = SELECTED_FRAME ();
+  int polling_stopped_here = 0;
 
   /* Non-zero means redisplay has to consider all windows on all
      frames.  Zero means, only selected_window is considered.  */
@@ -8979,7 +8988,7 @@
 		     error.  */
 		  if (interrupt_input)
 		    unrequest_sigio ();
-		  stop_polling ();
+		  STOP_POLLING;
 
 		  /* Update the display.  */
 		  set_window_update_flags (XWINDOW (f->root_window), 1);
@@ -9035,7 +9044,7 @@
 	 which can cause an apparent I/O error.  */
       if (interrupt_input)
 	unrequest_sigio ();
-      stop_polling ();
+      STOP_POLLING;
 
       if (FRAME_VISIBLE_P (sf) && !FRAME_OBSCURED_P (sf))
 	{
@@ -9111,7 +9120,7 @@
      But it is much hairier to try to do anything about that.  */
   if (interrupt_input)
     request_sigio ();
-  start_polling ();
+  RESUME_POLLING;
 
   /* If a frame has become visible which was not before, redisplay
      again, so that we display it.  Expose events for such a frame
@@ -9152,6 +9161,7 @@
 
  end_of_redisplay:
   unbind_to (count, Qnil);
+  RESUME_POLLING;
 }