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);
+		}
 	    }
 	}
     }