aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGlenn Morris2011-02-16 00:39:19 -0800
committerGlenn Morris2011-02-16 00:39:19 -0800
commit8678d9e413593b0abab296551a20589745c459da (patch)
tree6ce66f613a4cccad3708e3682218d7978b97de3f /src
parentda5e0ce4d6e000b1bc493cb20ce0cc9ecb1ba244 (diff)
parent4648b91b097ad9f3dfbd8a988846293ea5a5c78c (diff)
downloademacs-8678d9e413593b0abab296551a20589745c459da.tar.gz
emacs-8678d9e413593b0abab296551a20589745c459da.zip
Merge from emacs-23; up to 2010-05-28T19:18:47Z!juri@jurta.org.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog6
-rw-r--r--src/xdisp.c21
2 files changed, 25 insertions, 2 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index aae583094f2..d70da316ba9 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
12011-02-16 Eli Zaretskii <eliz@gnu.org>
2
3 * xdisp.c (redisplay_internal): Resynchronize `w' if the selected
4 window is changed inside calls to do_pending_window_change.
5 (Bug#8020)
6
12011-02-16 Paul Eggert <eggert@cs.ucla.edu> 72011-02-16 Paul Eggert <eggert@cs.ucla.edu>
2 8
3 Remove no-longer needed getloadavg symbols. 9 Remove no-longer needed getloadavg symbols.
diff --git a/src/xdisp.c b/src/xdisp.c
index 68f7835f0d7..147f2965d0e 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -11419,6 +11419,7 @@ static void
11419redisplay_internal (int preserve_echo_area) 11419redisplay_internal (int preserve_echo_area)
11420{ 11420{
11421 struct window *w = XWINDOW (selected_window); 11421 struct window *w = XWINDOW (selected_window);
11422 struct window *sw;
11422 struct frame *f; 11423 struct frame *f;
11423 int pause; 11424 int pause;
11424 int must_finish = 0; 11425 int must_finish = 0;
@@ -11479,6 +11480,9 @@ redisplay_internal (int preserve_echo_area)
11479 } 11480 }
11480 11481
11481 retry: 11482 retry:
11483 /* Remember the currently selected window. */
11484 sw = w;
11485
11482 if (!EQ (old_frame, selected_frame) 11486 if (!EQ (old_frame, selected_frame)
11483 && FRAME_LIVE_P (XFRAME (old_frame))) 11487 && FRAME_LIVE_P (XFRAME (old_frame)))
11484 /* When running redisplay, we play a bit fast-and-loose and allow e.g. 11488 /* When running redisplay, we play a bit fast-and-loose and allow e.g.
@@ -11546,6 +11550,14 @@ redisplay_internal (int preserve_echo_area)
11546 /* Notice any pending interrupt request to change frame size. */ 11550 /* Notice any pending interrupt request to change frame size. */
11547 do_pending_window_change (1); 11551 do_pending_window_change (1);
11548 11552
11553 /* do_pending_window_change could change the selected_window due to
11554 frame resizing which makes the selected window too small. */
11555 if (WINDOWP (selected_window) && (w = XWINDOW (selected_window)) != sw)
11556 {
11557 sw = w;
11558 reconsider_clip_changes (w, current_buffer);
11559 }
11560
11549 /* Clear frames marked as garbaged. */ 11561 /* Clear frames marked as garbaged. */
11550 if (frame_garbaged) 11562 if (frame_garbaged)
11551 clear_garbaged_frames (); 11563 clear_garbaged_frames ();
@@ -11815,6 +11827,10 @@ redisplay_internal (int preserve_echo_area)
11815 if (!must_finish) 11827 if (!must_finish)
11816 { 11828 {
11817 do_pending_window_change (1); 11829 do_pending_window_change (1);
11830 /* If selected_window changed, redisplay again. */
11831 if (WINDOWP (selected_window)
11832 && (w = XWINDOW (selected_window)) != sw)
11833 goto retry;
11818 11834
11819 /* We used to always goto end_of_redisplay here, but this 11835 /* We used to always goto end_of_redisplay here, but this
11820 isn't enough if we have a blinking cursor. */ 11836 isn't enough if we have a blinking cursor. */
@@ -12109,8 +12125,9 @@ redisplay_internal (int preserve_echo_area)
12109 do_pending_window_change (1); 12125 do_pending_window_change (1);
12110 12126
12111 /* If we just did a pending size change, or have additional 12127 /* If we just did a pending size change, or have additional
12112 visible frames, redisplay again. */ 12128 visible frames, or selected_window changed, redisplay again. */
12113 if (windows_or_buffers_changed && !pause) 12129 if ((windows_or_buffers_changed && !pause)
12130 || (WINDOWP (selected_window) && (w = XWINDOW (selected_window)) != sw))
12114 goto retry; 12131 goto retry;
12115 12132
12116 /* Clear the face and image caches. 12133 /* Clear the face and image caches.