aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKim F. Storm2005-09-08 22:29:49 +0000
committerKim F. Storm2005-09-08 22:29:49 +0000
commit2bb212bd1fcad3599d0a2634beb2668e9a7c0d4a (patch)
tree62a649cf14cd7fd6d96f167e57cea7a7964232d6 /src
parentae8a56896804637a69c299ade53b2295f9ab7138 (diff)
downloademacs-2bb212bd1fcad3599d0a2634beb2668e9a7c0d4a.tar.gz
emacs-2bb212bd1fcad3599d0a2634beb2668e9a7c0d4a.zip
(redisplay_internal): Mark updated frames in new updated_p
member. Remove local `updated' array and associated variables.
Diffstat (limited to 'src')
-rw-r--r--src/xdisp.c29
1 files changed, 10 insertions, 19 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index 33317f4c491..324e7e29f07 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -10615,13 +10615,9 @@ redisplay_internal (preserve_echo_area)
10615 if (consider_all_windows_p) 10615 if (consider_all_windows_p)
10616 { 10616 {
10617 Lisp_Object tail, frame; 10617 Lisp_Object tail, frame;
10618 int i, n = 0, size = 5;
10619 struct frame **updated;
10620 10618
10621 FOR_EACH_FRAME (tail, frame) 10619 FOR_EACH_FRAME (tail, frame)
10622 size++; 10620 XFRAME (frame)->updated_p = 0;
10623
10624 updated = (struct frame **) alloca (size * sizeof *updated);
10625 10621
10626 /* Recompute # windows showing selected buffer. This will be 10622 /* Recompute # windows showing selected buffer. This will be
10627 incremented each time such a window is displayed. */ 10623 incremented each time such a window is displayed. */
@@ -10683,15 +10679,7 @@ redisplay_internal (preserve_echo_area)
10683 break; 10679 break;
10684#endif 10680#endif
10685 10681
10686 if (n == size) 10682 f->updated_p = 1;
10687 {
10688 int nbytes = size * sizeof *updated;
10689 struct frame **p = (struct frame **) alloca (2 * nbytes);
10690 bcopy (updated, p, nbytes);
10691 size *= 2;
10692 }
10693
10694 updated[n++] = f;
10695 } 10683 }
10696 } 10684 }
10697 } 10685 }
@@ -10701,12 +10689,15 @@ redisplay_internal (preserve_echo_area)
10701 /* Do the mark_window_display_accurate after all windows have 10689 /* Do the mark_window_display_accurate after all windows have
10702 been redisplayed because this call resets flags in buffers 10690 been redisplayed because this call resets flags in buffers
10703 which are needed for proper redisplay. */ 10691 which are needed for proper redisplay. */
10704 for (i = 0; i < n; ++i) 10692 FOR_EACH_FRAME (tail, frame)
10705 { 10693 {
10706 struct frame *f = updated[i]; 10694 struct frame *f = XFRAME (frame);
10707 mark_window_display_accurate (f->root_window, 1); 10695 if (f->updated_p)
10708 if (frame_up_to_date_hook) 10696 {
10709 frame_up_to_date_hook (f); 10697 mark_window_display_accurate (f->root_window, 1);
10698 if (frame_up_to_date_hook)
10699 frame_up_to_date_hook (f);
10700 }
10710 } 10701 }
10711 } 10702 }
10712 } 10703 }