# HG changeset patch # User Jim Blandy # Date 739600601 0 # Node ID 0bc9838eb0bbf0d87526bdbbf9d31a78b7da165d # Parent eb75df1104ebeec2a7443961443d56c67950c748 * xfaces.c (init_frame_faces): Remove assumption that the selected frame must be an X frame whenever there is already an X frame. diff -r eb75df1104eb -r 0bc9838eb0bb src/xfaces.c --- 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); + } + } }