From aac2d8b2fa5ca26bd5412153b8d48f1b90b24d23 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 29 Sep 2002 17:46:12 +0000 Subject: [PATCH] (STOP_POLLING, RESUME_POLLING): New macros. (redisplay_internal): Use them. Do RESUME_POLLING at end of function. --- src/ChangeLog | 10 ++++++++++ src/xdisp.c | 16 +++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 73abc9bdfa4..9a4a0a446ce 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,13 @@ +2002-09-29 Richard M. Stallman + + * xdisp.c (STOP_POLLING, RESUME_POLLING): New macros. + (redisplay_internal): Use them. Do RESUME_POLLING at end of function. + +2002-09-27 Richard M. Stallman + + * keyboard.c (STOP_POLLING, RESUME_POLLING): New macros. + (read_char): Use them. Do all exits thru the end of the function. + 2002-09-27 Kenichi Handa * xfaces.c (try_font_list): Pay attention to the case that FAMILY diff --git a/src/xdisp.c b/src/xdisp.c index 16c351b9f91..64e94a9d6d1 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -8471,6 +8471,14 @@ reconsider_clip_changes (w, b) 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 @@ redisplay_internal (preserve_echo_area) 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 @@ redisplay_internal (preserve_echo_area) 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 @@ redisplay_internal (preserve_echo_area) 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 @@ redisplay_internal (preserve_echo_area) 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 @@ redisplay_internal (preserve_echo_area) end_of_redisplay: unbind_to (count, Qnil); + RESUME_POLLING; } -- 2.39.2