aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJim Blandy1993-06-22 07:25:11 +0000
committerJim Blandy1993-06-22 07:25:11 +0000
commita081bd37248abe85b193f4fdd59506b0b6a6f6ee (patch)
treec18269f4024e3708f76e9a28ed3b0ad2009fb7d4 /src
parent85f26be98d75498956b04a4b03e1f6c918c840ba (diff)
downloademacs-a081bd37248abe85b193f4fdd59506b0b6a6f6ee.tar.gz
emacs-a081bd37248abe85b193f4fdd59506b0b6a6f6ee.zip
Separate parameter faces (those created and modified by the user)
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.
Diffstat (limited to 'src')
-rw-r--r--src/xfns.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/xfns.c b/src/xfns.c
index db0cd640074..a103cfc9e47 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -2208,12 +2208,12 @@ fonts), even if they match PATTERN and FACE.")
2208 FRAME_PTR f = NILP (frame) ? selected_frame : XFRAME (frame); 2208 FRAME_PTR f = NILP (frame) ? selected_frame : XFRAME (frame);
2209 int face_id = face_name_id_number (f, face); 2209 int face_id = face_name_id_number (f, face);
2210 2210
2211 if (face_id < 0 || face_id >= FRAME_N_FACES (f) 2211 if (face_id < 0 || face_id >= FRAME_N_PARAM_FACES (f)
2212 || FRAME_FACES (f) [face_id] == 0) 2212 || FRAME_PARAM_FACES (f) [face_id] == 0)
2213 size_ref = f->display.x->font; 2213 size_ref = f->display.x->font;
2214 else 2214 else
2215 { 2215 {
2216 size_ref = FRAME_FACES (f) [face_id]->font; 2216 size_ref = FRAME_PARAM_FACES (f) [face_id]->font;
2217 if (size_ref == (XFontStruct *) (~0)) 2217 if (size_ref == (XFontStruct *) (~0))
2218 size_ref = f->display.x->font; 2218 size_ref = f->display.x->font;
2219 } 2219 }
@@ -3483,7 +3483,9 @@ arg XRM_STRING is a string of resources in xrdb format.")
3483 } 3483 }
3484 else 3484 else
3485 xrm_option = (unsigned char *) 0; 3485 xrm_option = (unsigned char *) 0;
3486 BLOCK_INPUT;
3486 xrdb = x_load_resources (x_current_display, xrm_option, EMACS_CLASS); 3487 xrdb = x_load_resources (x_current_display, xrm_option, EMACS_CLASS);
3488 UNBLOCK_INPUT;
3487#if defined (HAVE_X11R5) || defined (HAVE_XRMSETDATABASE) 3489#if defined (HAVE_X11R5) || defined (HAVE_XRMSETDATABASE)
3488 XrmSetDatabase (x_current_display, xrdb); 3490 XrmSetDatabase (x_current_display, xrdb);
3489#else 3491#else