diff options
Diffstat (limited to 'src/xfaces.c')
-rw-r--r-- | src/xfaces.c | 61 |
1 files changed, 25 insertions, 36 deletions
diff --git a/src/xfaces.c b/src/xfaces.c index 5077cb2d944..accb98bf4c7 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -200,6 +200,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ used to fill in unspecified attributes of the default face. */ #include <config.h> +#include <stdlib.h> #include "sysstdio.h" #include <sys/types.h> #include <sys/stat.h> @@ -221,7 +222,6 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ #include TERM_HEADER #include "fontset.h" #ifdef HAVE_NTGUI -#define x_display_info w32_display_info #define GCGraphicsExposures 0 #endif /* HAVE_NTGUI */ @@ -495,7 +495,7 @@ x_create_gc (struct frame *f, unsigned long mask, XGCValues *xgcv) { GC gc; block_input (); - gc = XCreateGC (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), mask, xgcv); + gc = XCreateGC (FRAME_X_DISPLAY (f), FRAME_X_DRAWABLE (f), mask, xgcv); unblock_input (); IF_DEBUG (++ngcs); return gc; @@ -738,8 +738,7 @@ the pixmap. Bits are stored row by row, each row occupies && RANGED_INTEGERP (1, width, INT_MAX) && RANGED_INTEGERP (1, height, INT_MAX)) { - int bytes_per_row = ((XINT (width) + BITS_PER_CHAR - 1) - / BITS_PER_CHAR); + int bytes_per_row = (XINT (width) + CHAR_BIT - 1) / CHAR_BIT; if (XINT (height) <= SBYTES (data) / bytes_per_row) pixmap_p = true; } @@ -1520,7 +1519,7 @@ the WIDTH times as wide as FACE on FRAME. */) Lisp_Object maximum, Lisp_Object width) { struct frame *f; - int size, avgwidth IF_LINT (= 0); + int size, avgwidth; check_window_system (NULL); CHECK_STRING (pattern); @@ -1553,9 +1552,7 @@ the WIDTH times as wide as FACE on FRAME. */) /* This is of limited utility since it works with character widths. Keep it for compatibility. --gerd. */ int face_id = lookup_named_face (f, face, false); - struct face *width_face = (face_id < 0 - ? NULL - : FACE_FROM_ID (f, face_id)); + struct face *width_face = FACE_FROM_ID_OR_NULL (f, face_id); if (width_face && width_face->font) { @@ -3695,7 +3692,7 @@ Default face attributes override any local face attributes. */) if (EQ (face, Qdefault)) { struct face_cache *c = FRAME_FACE_CACHE (f); - struct face *newface, *oldface = FACE_FROM_ID (f, DEFAULT_FACE_ID); + struct face *newface, *oldface = FACE_FROM_ID_OR_NULL (f, DEFAULT_FACE_ID); Lisp_Object attrs[LFACE_VECTOR_SIZE]; /* This can be NULL (e.g., in batch mode). */ @@ -3778,7 +3775,7 @@ return the font name used for CHARACTER. */) { struct frame *f = decode_live_frame (frame); int face_id = lookup_named_face (f, face, true); - struct face *fface = FACE_FROM_ID (f, face_id); + struct face *fface = FACE_FROM_ID_OR_NULL (f, face_id); if (! fface) return Qnil; @@ -3787,9 +3784,9 @@ return the font name used for CHARACTER. */) { CHECK_CHARACTER (character); face_id = FACE_FOR_CHAR (f, fface, XINT (character), -1, Qnil); - fface = FACE_FROM_ID (f, face_id); + fface = FACE_FROM_ID_OR_NULL (f, face_id); } - return (fface->font + return ((fface && fface->font) ? fface->font->props[FONT_NAME_INDEX] : Qnil); #else /* !HAVE_WINDOW_SYSTEM */ @@ -4377,7 +4374,7 @@ lookup_face (struct frame *f, Lisp_Object *attr) face = realize_face (cache, attr, -1); #ifdef GLYPH_DEBUG - eassert (face == FACE_FROM_ID (f, face->id)); + eassert (face == FACE_FROM_ID_OR_NULL (f, face->id)); #endif /* GLYPH_DEBUG */ return face->id; @@ -4430,15 +4427,13 @@ lookup_named_face (struct frame *f, Lisp_Object symbol, bool signal_p) { Lisp_Object attrs[LFACE_VECTOR_SIZE]; Lisp_Object symbol_attrs[LFACE_VECTOR_SIZE]; - struct face *default_face = FACE_FROM_ID (f, DEFAULT_FACE_ID); + struct face *default_face = FACE_FROM_ID_OR_NULL (f, DEFAULT_FACE_ID); if (default_face == NULL) { if (!realize_basic_faces (f)) return -1; default_face = FACE_FROM_ID (f, DEFAULT_FACE_ID); - if (default_face == NULL) - emacs_abort (); /* realize_basic_faces must have set it up */ } if (! get_lface_attributes (f, symbol, symbol_attrs, signal_p, 0)) @@ -4599,14 +4594,12 @@ lookup_derived_face (struct frame *f, Lisp_Object symbol, int face_id, { Lisp_Object attrs[LFACE_VECTOR_SIZE]; Lisp_Object symbol_attrs[LFACE_VECTOR_SIZE]; - struct face *default_face = FACE_FROM_ID (f, face_id); - - if (!default_face) - emacs_abort (); + struct face *default_face; if (!get_lface_attributes (f, symbol, symbol_attrs, signal_p, 0)) return -1; + default_face = FACE_FROM_ID (f, face_id); memcpy (attrs, default_face->lface, sizeof attrs); merge_face_vectors (f, symbol_attrs, attrs, 0); return lookup_face (f, attrs); @@ -4707,7 +4700,7 @@ x_supports_face_attributes_p (struct frame *f, merge_face_vectors (f, attrs, merged_attrs, 0); face_id = lookup_face (f, merged_attrs); - face = FACE_FROM_ID (f, face_id); + face = FACE_FROM_ID_OR_NULL (f, face_id); if (! face) error ("Cannot make face"); @@ -4977,14 +4970,12 @@ face for italic. */) attrs[i] = Qunspecified; merge_face_ref (f, attributes, attrs, true, 0); - def_face = FACE_FROM_ID (f, DEFAULT_FACE_ID); + def_face = FACE_FROM_ID_OR_NULL (f, DEFAULT_FACE_ID); if (def_face == NULL) { if (! realize_basic_faces (f)) error ("Cannot realize default face"); def_face = FACE_FROM_ID (f, DEFAULT_FACE_ID); - if (def_face == NULL) - emacs_abort (); /* realize_basic_faces must have set it up */ } /* Dispatch to the appropriate handler. */ @@ -5206,7 +5197,6 @@ realize_default_face (struct frame *f) struct face_cache *c = FRAME_FACE_CACHE (f); Lisp_Object lface; Lisp_Object attrs[LFACE_VECTOR_SIZE]; - struct face *face; /* If the `default' face is not yet known, create it. */ lface = lface_from_face_name (f, Qdefault, false); @@ -5296,10 +5286,11 @@ realize_default_face (struct frame *f) eassert (lface_fully_specified_p (XVECTOR (lface)->contents)); check_lface (lface); memcpy (attrs, XVECTOR (lface)->contents, sizeof attrs); - face = realize_face (c, attrs, DEFAULT_FACE_ID); + struct face *face = realize_face (c, attrs, DEFAULT_FACE_ID); -#ifdef HAVE_WINDOW_SYSTEM -#ifdef HAVE_X_WINDOWS +#ifndef HAVE_WINDOW_SYSTEM + (void) face; +#else if (FRAME_X_P (f) && face->font != FRAME_FONT (f)) { /* This can happen when making a frame on a display that does @@ -5313,8 +5304,7 @@ realize_default_face (struct frame *f) font. */ x_set_font (f, LFACE_FONT (lface), Qnil); } -#endif /* HAVE_X_WINDOWS */ -#endif /* HAVE_WINDOW_SYSTEM */ +#endif return true; } @@ -5454,7 +5444,7 @@ realize_x_face (struct face_cache *cache, Lisp_Object attrs[LFACE_VECTOR_SIZE]) /* Determine the font to use. Most of the time, the font will be the same as the font of the default face, so try that first. */ - default_face = FACE_FROM_ID (f, DEFAULT_FACE_ID); + default_face = FACE_FROM_ID_OR_NULL (f, DEFAULT_FACE_ID); if (default_face && lface_same_font_attributes_p (default_face->lface, attrs)) { @@ -6094,7 +6084,6 @@ face_at_string_position (struct window *w, Lisp_Object string, *endptr = -1; base_face = FACE_FROM_ID (f, base_face_id); - eassert (base_face); /* Optimize the default case that there is no face property. */ if (NILP (prop) @@ -6103,7 +6092,7 @@ face_at_string_position (struct window *w, Lisp_Object string, if we don't have fonts, so we can stop here if not working on a window-system frame. */ || !FRAME_WINDOW_P (f) - || FACE_SUITABLE_FOR_ASCII_CHAR_P (base_face, 0))) + || FACE_SUITABLE_FOR_ASCII_CHAR_P (base_face))) return base_face->id; /* Begin with attributes from the base face. */ @@ -6141,7 +6130,7 @@ merge_faces (struct frame *f, Lisp_Object face_name, int face_id, Lisp_Object attrs[LFACE_VECTOR_SIZE]; struct face *base_face; - base_face = FACE_FROM_ID (f, base_face_id); + base_face = FACE_FROM_ID_OR_NULL (f, base_face_id); if (!base_face) return base_face_id; @@ -6169,7 +6158,7 @@ merge_faces (struct frame *f, Lisp_Object face_name, int face_id, struct face *face; if (face_id < 0) return base_face_id; - face = FACE_FROM_ID (f, face_id); + face = FACE_FROM_ID_OR_NULL (f, face_id); if (!face) return base_face_id; merge_face_vectors (f, face->lface, attrs, 0); @@ -6289,7 +6278,7 @@ DEFUN ("dump-face", Fdump_face, Sdump_face, 0, 1, 0, doc: /* */) { struct face *face; CHECK_NUMBER (n); - face = FACE_FROM_ID (SELECTED_FRAME (), XINT (n)); + face = FACE_FROM_ID_OR_NULL (SELECTED_FRAME (), XINT (n)); if (face == NULL) error ("Not a valid face"); dump_realized_face (face); |