]> git.eshelyaron.com Git - emacs.git/commitdiff
Separate parameter faces (those created and modified by the user)
authorJim Blandy <jimb@redhat.com>
Tue, 22 Jun 1993 07:25:11 +0000 (07:25 +0000)
committerJim Blandy <jimb@redhat.com>
Tue, 22 Jun 1993 07:25:11 +0000 (07:25 +0000)
from the computed faces (the combinations created by
compute_char_face), so that we don't waste global face id's.
* xterm.h (struct x_display): Replace the fields faces and n_faces
with fields param_faces, n_param_faces, computed_faces,
n_computed_faces, and size_computed_faces.
(FRAME_FACES, FRAME_N_FACES): Replaced by...
(FRAME_COMPUTED_FACES, FRAME_N_COMPUTED_FACES, FRAME_PARAM_FACES,
FRAME_N_PARAM_FACES): New macros.
* xfaces.c: Doc fixes.
(init_frame_faces): Call new_computed_face to create entries for
the default and mode line faces.  Use the FRAME...PARAM_FACES
macros.
(free_frame_faces): Use the FRAME...PARAM_FACES and
FRAME...COMPUTED_FACES macros.  Don't use the copy flag; all
parameter faces have real X resources, and all computed faces just
have copies.  Free both the parameter and computed face arrays.
(new_computed_face): New function.
(intern_computed_face): Renamed from intern_frame_face; callers
changed.  Call new_computed_face.
(ensure_face_ready, compute_char_face, compute_glyph_face): Use the
FRAME...PARAM_FACES macros.
(recompute_basic_faces): Use the FRAME...PARAM_FACES and
FRAME...COMPUTED_FACES macros.  Produce the computed faces by
starting with the base faces and merging in the parameter faces.
(Fset_face_attribute_internal): Use the FRAME...PARAM_FACES
macros.  Just call recompute_basic_faces if the default or mode
line faces have changed.
* xfns.c (Fx_list_fonts): Use the FRAME...PARAM_FACES macros.
* xterm.c (dumpglyphs): Use the FRAME...COMPUTED_FACES macros.
* dispextern.h (struct face): Remove the copy member.  This is no
longer necessary; all computed faces are copies, and no parameter
faces are.

* xfns.c (Fx_open_connection): Remember to block input while
calling x_load_resources.
* xrdb.c: Undo change of June 19th; it was a BLOCK_INPUT problem,
not a server-specific bug.

src/xfns.c

index db0cd640074dc67f909b61c547481b5f3376cfb7..a103cfc9e479b2c841781b8652ad4a495b9db44c 100644 (file)
@@ -2208,12 +2208,12 @@ fonts), even if they match PATTERN and FACE.")
       FRAME_PTR f = NILP (frame) ? selected_frame : XFRAME (frame);
       int face_id = face_name_id_number (f, face);
 
-      if (face_id < 0 || face_id >= FRAME_N_FACES (f)
-         || FRAME_FACES (f) [face_id] == 0)
+      if (face_id < 0 || face_id >= FRAME_N_PARAM_FACES (f)
+         || FRAME_PARAM_FACES (f) [face_id] == 0)
        size_ref = f->display.x->font;
       else
        {
-         size_ref = FRAME_FACES (f) [face_id]->font;
+         size_ref = FRAME_PARAM_FACES (f) [face_id]->font;
          if (size_ref == (XFontStruct *) (~0))
            size_ref = f->display.x->font;
        }
@@ -3483,7 +3483,9 @@ arg XRM_STRING is a string of resources in xrdb format.")
     }
   else
     xrm_option = (unsigned char *) 0;
+  BLOCK_INPUT;
   xrdb = x_load_resources (x_current_display, xrm_option, EMACS_CLASS);
+  UNBLOCK_INPUT;
 #if defined (HAVE_X11R5) || defined (HAVE_XRMSETDATABASE)
   XrmSetDatabase (x_current_display, xrdb);
 #else