From: Kenichi Handa Date: Wed, 21 Jun 2006 01:23:08 +0000 (+0000) Subject: (xftfont_prepare_face): Make non-ascii face share X-Git-Tag: emacs-pretest-23.0.90~8295^2~861 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=e2d0c925ec6b73f064ef1bb0aac7a1cb78591bd2;p=emacs.git (xftfont_prepare_face): Make non-ascii face share face->extra with ascii face. (xftfont_done_face): Don't free face->extra of non-ascii face. --- diff --git a/src/xftfont.c b/src/xftfont.c index 7f301c69236..842f3873c49 100644 --- a/src/xftfont.c +++ b/src/xftfont.c @@ -362,8 +362,15 @@ xftfont_prepare_face (f, face) FRAME_PTR f; struct face *face; { - struct xftface_info *xftface_info = malloc (sizeof (struct xftface_info)); + struct xftface_info *xftface_info; + if (face != face->ascii_face) + { + face->extra = face->ascii_face->extra; + return 0; + } + + xftface_info = malloc (sizeof (struct xftface_info)); if (! xftface_info) return -1; @@ -385,16 +392,18 @@ xftfont_done_face (f, face) FRAME_PTR f; struct face *face; { - struct xftface_info *xftface_info = (struct xftface_info *) face->extra; + struct xftface_info *xftface_info; + + if (face != face->ascii_face + || ! face->extra) + return; - if (xftface_info) - { - BLOCK_INPUT; - XftDrawDestroy (xftface_info->xft_draw); - UNBLOCK_INPUT; - free (xftface_info); - face->extra = NULL; - } + xftface_info = (struct xftface_info *) face->extra; + BLOCK_INPUT; + XftDrawDestroy (xftface_info->xft_draw); + UNBLOCK_INPUT; + free (xftface_info); + face->extra = NULL; } static unsigned