X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/99191b89ff64172740add88e67f163619a07830c..4ec52e2f8c1697994618b4bdfd013659f6defb1b:/src/xfont.c diff --git a/src/xfont.c b/src/xfont.c index f673adbbd5..d4d6ee7c10 100644 --- a/src/xfont.c +++ b/src/xfont.c @@ -119,7 +119,7 @@ static Lisp_Object xfont_list (struct frame *, Lisp_Object); static Lisp_Object xfont_match (struct frame *, Lisp_Object); static Lisp_Object xfont_list_family (struct frame *); static Lisp_Object xfont_open (struct frame *, Lisp_Object, int); -static void xfont_close (struct frame *, struct font *); +static void xfont_close (struct font *); static int xfont_prepare_face (struct frame *, struct face *); static int xfont_has_char (Lisp_Object, int); static unsigned xfont_encode_char (struct font *, int); @@ -154,7 +154,7 @@ struct font_driver xfont_driver = static Lisp_Object xfont_get_cache (struct frame *f) { - Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f); + Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f); return (dpyinfo->name_list_element); } @@ -488,7 +488,7 @@ xfont_list_pattern (Display *display, const char *pattern, static Lisp_Object xfont_list (struct frame *f, Lisp_Object spec) { - Display *display = FRAME_X_DISPLAY_INFO (f)->display; + Display *display = FRAME_DISPLAY_INFO (f)->display; Lisp_Object registry, list, val, extra, script; int len; /* Large enough to contain the longest XLFD (255 bytes) in UTF-8. */ @@ -566,7 +566,7 @@ xfont_list (struct frame *f, Lisp_Object spec) static Lisp_Object xfont_match (struct frame *f, Lisp_Object spec) { - Display *display = FRAME_X_DISPLAY_INFO (f)->display; + Display *display = FRAME_DISPLAY_INFO (f)->display; Lisp_Object extra, val, entity; char name[512]; XFontStruct *xfont; @@ -593,9 +593,7 @@ xfont_match (struct frame *f, Lisp_Object spec) { if (XGetFontProperty (xfont, XA_FONT, &value)) { - char *s; - - s = (char *) XGetAtomName (display, (Atom) value); + char *s = XGetAtomName (display, (Atom) value); /* If DXPC (a Differential X Protocol Compressor) Ver.3.7 is running, XGetAtomName will return null @@ -622,7 +620,7 @@ xfont_match (struct frame *f, Lisp_Object spec) static Lisp_Object xfont_list_family (struct frame *f) { - Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f); + Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f); char **names; int num_fonts, i; Lisp_Object list; @@ -678,7 +676,7 @@ xfont_list_family (struct frame *f) static Lisp_Object xfont_open (struct frame *f, Lisp_Object entity, int pixel_size) { - Display_Info *dpyinfo = FRAME_X_DISPLAY_INFO (f); + Display_Info *dpyinfo = FRAME_DISPLAY_INFO (f); Display *display = dpyinfo->display; char name[512]; int len; @@ -760,7 +758,7 @@ xfont_open (struct frame *f, Lisp_Object entity, int pixel_size) char *p0, *p; int dashes = 0; - p0 = p = (char *) XGetAtomName (FRAME_X_DISPLAY (f), (Atom) value); + p0 = p = XGetAtomName (FRAME_X_DISPLAY (f), (Atom) value); /* Count the number of dashes in the "full name". If it is too few, this isn't really the font's full name, so don't use it. @@ -892,11 +890,17 @@ xfont_open (struct frame *f, Lisp_Object entity, int pixel_size) } static void -xfont_close (struct frame *f, struct font *font) +xfont_close (struct font *font) { - block_input (); - XFreeFont (FRAME_X_DISPLAY (f), ((struct xfont_info *) font)->xfont); - unblock_input (); + struct xfont_info *xfi = (struct xfont_info *) font; + + if (xfi->xfont) + { + block_input (); + XFreeFont (xfi->display, xfi->xfont); + unblock_input (); + xfi->xfont = NULL; + } } static int