Commit 98594580 authored by Stefan Monnier's avatar Stefan Monnier
Browse files

(redisplay_internal): Make sure Elisp code always sees

consistent values of selected_frame and selected_window.
parent fad930b6
2007-09-06 Stefan Monnier <monnier@iro.umontreal.ca>
* xdisp.c (redisplay_internal): Make sure Elisp code always sees
consistent values of selected_frame and selected_window.
2007-09-04 Jason Rumney <jasonr@gnu.org> 2007-09-04 Jason Rumney <jasonr@gnu.org>
   
* w32console.c (initialize_w32_display): Zero unused hooks. * w32console.c (initialize_w32_display): Zero unused hooks.
...@@ -10847,6 +10847,7 @@ redisplay_internal (preserve_echo_area) ...@@ -10847,6 +10847,7 @@ redisplay_internal (preserve_echo_area)
int count, count1; int count, count1;
struct frame *sf; struct frame *sf;
int polling_stopped_here = 0; int polling_stopped_here = 0;
Lisp_Object old_frame = selected_frame;
   
/* Non-zero means redisplay has to consider all windows on all /* Non-zero means redisplay has to consider all windows on all
frames. Zero means, only selected_window is considered. */ frames. Zero means, only selected_window is considered. */
...@@ -10908,6 +10909,14 @@ redisplay_internal (preserve_echo_area) ...@@ -10908,6 +10909,14 @@ redisplay_internal (preserve_echo_area)
} }
   
retry: retry:
if (!EQ (old_frame, selected_frame)
&& FRAME_LIVE_P (XFRAME (old_frame)))
/* When running redisplay, we play a bit fast-and-loose and allow e.g.
selected_frame and selected_window to be temporarily out-of-sync so
when we come back here via `goto retry', we need to resync because we
may need to run Elisp code (via prepare_menu_bars). */
select_frame_for_redisplay (old_frame);
pause = 0; pause = 0;
reconsider_clip_changes (w, current_buffer); reconsider_clip_changes (w, current_buffer);
last_escape_glyph_frame = NULL; last_escape_glyph_frame = NULL;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment