# HG changeset patch # User Kim F. Storm # Date 1126218589 0 # Node ID 26a30c06dc4591a517d2a4b563d173df0620be09 # Parent d2b1170c4ac420c78d1b63ff45a8c0c1be10479e (redisplay_internal): Mark updated frames in new updated_p member. Remove local `updated' array and associated variables. diff -r d2b1170c4ac4 -r 26a30c06dc45 src/xdisp.c --- 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); + } } } }