10615 |
if (consider_all_windows_p) |
if (consider_all_windows_p) |
10616 |
{ |
{ |
10617 |
Lisp_Object tail, frame; |
Lisp_Object tail, frame; |
|
int i, n = 0, size = 5; |
|
|
struct frame **updated; |
|
10618 |
|
|
10619 |
FOR_EACH_FRAME (tail, frame) |
FOR_EACH_FRAME (tail, frame) |
10620 |
size++; |
XFRAME (frame)->updated_p = 0; |
|
|
|
|
updated = (struct frame **) alloca (size * sizeof *updated); |
|
10621 |
|
|
10622 |
/* Recompute # windows showing selected buffer. This will be |
/* Recompute # windows showing selected buffer. This will be |
10623 |
incremented each time such a window is displayed. */ |
incremented each time such a window is displayed. */ |
10679 |
break; |
break; |
10680 |
#endif |
#endif |
10681 |
|
|
10682 |
if (n == size) |
f->updated_p = 1; |
|
{ |
|
|
int nbytes = size * sizeof *updated; |
|
|
struct frame **p = (struct frame **) alloca (2 * nbytes); |
|
|
bcopy (updated, p, nbytes); |
|
|
size *= 2; |
|
|
} |
|
|
|
|
|
updated[n++] = f; |
|
10683 |
} |
} |
10684 |
} |
} |
10685 |
} |
} |
10689 |
/* Do the mark_window_display_accurate after all windows have |
/* Do the mark_window_display_accurate after all windows have |
10690 |
been redisplayed because this call resets flags in buffers |
been redisplayed because this call resets flags in buffers |
10691 |
which are needed for proper redisplay. */ |
which are needed for proper redisplay. */ |
10692 |
for (i = 0; i < n; ++i) |
FOR_EACH_FRAME (tail, frame) |
10693 |
{ |
{ |
10694 |
struct frame *f = updated[i]; |
struct frame *f = XFRAME (frame); |
10695 |
mark_window_display_accurate (f->root_window, 1); |
if (f->updated_p) |
10696 |
if (frame_up_to_date_hook) |
{ |
10697 |
frame_up_to_date_hook (f); |
mark_window_display_accurate (f->root_window, 1); |
10698 |
|
if (frame_up_to_date_hook) |
10699 |
|
frame_up_to_date_hook (f); |
10700 |
|
} |
10701 |
} |
} |
10702 |
} |
} |
10703 |
} |
} |