changeset 3583:0bc9838eb0bb

* xfaces.c (init_frame_faces): Remove assumption that the selected frame must be an X frame whenever there is already an X frame.
author Jim Blandy <jimb@redhat.com>
date Wed, 09 Jun 1993 04:36:41 +0000
parents eb75df1104eb
children 06708f4682d0
files src/xfaces.c
diffstat 1 files changed, 26 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/src/xfaces.c	Wed Jun 09 04:06:57 1993 +0000
+++ b/src/xfaces.c	Wed Jun 09 04:36:41 1993 +0000
@@ -465,22 +465,34 @@
 
   recompute_basic_faces (f);
 
-  /* Supposedly, we only apply this function to newly-created frames.  */
-  if (selected_frame == f)
-    abort ();
+  /* Find another X frame.  */
+  {
+    Lisp_Object tail, frame, result;
+    
+    result = Qnil;
+    FOR_EACH_FRAME (tail, frame)
+      if (FRAME_X_P (XFRAME (frame))
+	  && XFRAME (frame) != f)
+	{
+	  result = frame;
+	  break;
+	}
 
-  /* Make sure that all faces valid on the selected frame are also valid
-     on this new frame.  */
-  if (FRAME_X_P (selected_frame))
-    {
-      int i;
-      int n_faces = selected_frame->display.x->n_faces;
-      struct face **faces = selected_frame->display.x->faces;
+    /* If we didn't find any X frames other than f, then we don't need
+       any faces other than 0 and 1, so we're okay.  Otherwise, make
+       sure that all faces valid on the selected frame are also valid
+       on this new frame.  */
+    if (FRAMEP (result))
+      {
+	int i;
+	int n_faces = XFRAME (result)->display.x->n_faces;
+	struct face **faces = XFRAME (result)->display.x->faces;
 
-      for (i = 2; i < n_faces; i++)
-	if (faces[i])
-	  ensure_face_ready (f, i);
-    }
+	for (i = 2; i < n_faces; i++)
+	  if (faces[i])
+	    ensure_face_ready (f, i);
+      }
+  }
 }