Mercurial > emacs
changeset 65372:26a30c06dc45
(redisplay_internal): Mark updated frames in new updated_p
member. Remove local `updated' array and associated variables.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Thu, 08 Sep 2005 22:29:49 +0000 |
parents | d2b1170c4ac4 |
children | efc66a29d707 |
files | src/xdisp.c |
diffstat | 1 files changed, 11 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xdisp.c Thu Sep 08 22:29:35 2005 +0000 +++ b/src/xdisp.c Thu Sep 08 22:29:49 2005 +0000 @@ -10615,13 +10615,9 @@ if (consider_all_windows_p) { Lisp_Object tail, frame; - int i, n = 0, size = 5; - struct frame **updated; FOR_EACH_FRAME (tail, frame) - size++; - - updated = (struct frame **) alloca (size * sizeof *updated); + XFRAME (frame)->updated_p = 0; /* Recompute # windows showing selected buffer. This will be incremented each time such a window is displayed. */ @@ -10683,15 +10679,7 @@ break; #endif - if (n == size) - { - int nbytes = size * sizeof *updated; - struct frame **p = (struct frame **) alloca (2 * nbytes); - bcopy (updated, p, nbytes); - size *= 2; - } - - updated[n++] = f; + f->updated_p = 1; } } } @@ -10701,12 +10689,15 @@ /* Do the mark_window_display_accurate after all windows have been redisplayed because this call resets flags in buffers which are needed for proper redisplay. */ - for (i = 0; i < n; ++i) - { - struct frame *f = updated[i]; - mark_window_display_accurate (f->root_window, 1); - if (frame_up_to_date_hook) - frame_up_to_date_hook (f); + FOR_EACH_FRAME (tail, frame) + { + struct frame *f = XFRAME (frame); + if (f->updated_p) + { + mark_window_display_accurate (f->root_window, 1); + if (frame_up_to_date_hook) + frame_up_to_date_hook (f); + } } } }