unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Kenichi Handa <handa@m17n.org>
To: Chong Yidong <cyd@stupidchicken.com>
Cc: 1990@emacsbugs.donarmstrong.com
Subject: bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't exist
Date: Mon, 26 Jan 2009 17:00:09 +0900	[thread overview]
Message-ID: <E1LRMO9-0004Wg-Cc@etlken> (raw)
In-Reply-To: <87d4ec1o6z.fsf@cyd.mit.edu> (message from Chong Yidong on Sat, 24 Jan 2009 14:47:16 -0500)

In article <87d4ec1o6z.fsf@cyd.mit.edu>, Chong Yidong <cyd@stupidchicken.com> writes:

> Jason Rumney <jasonr@gnu.org> writes:
>>> However, there are several other places in that function that return
>>> with a Qnil, without doing this FONTSET_SET.  Do matters improve if
>>> we do the same FONTSET_SET call before returning?
> >
> > It doesn't seem to help much, if at all.

> How about something like this?  Does it improve performance noticeably?

> *** trunk/src/fontset.c.~1.150.~	2009-01-08 06:46:23.000000000 -0500
> --- trunk/src/fontset.c	2009-01-24 14:44:09.000000000 -0500
> ***************
> *** 660,665 ****
> --- 660,668 ----
>     Lisp_Object rfont_def;
>     Lisp_Object base_fontset;
  
> +   if (EQ (Fchar_table_range (fontset, make_number (c)), Qt))
> +     return Qnil;
> + 
>     /* Try a font-group of FONTSET. */
>     rfont_def = fontset_find_font (fontset, c, face, id, 0);
>     if (VECTORP (rfont_def))

I found a bug in fontset_find_font in handling non-cons
return value of fontset_get_font_group (it seems that I
embugged it when I modified fontset.c largely last time).

Your change surely fixes the bug, but it does unnecessary
char-table lookup for the normal case (i.e. a font is
found).  So, I think the following patch is better.

If you agree, please install it.  I, at the moment, can't do
cvs commit.

2009-01-26  Kenichi Handa  <handa@m17n.org>

	* fontset.c (fontset_find_font): Fix handling of non-cons return
	value of fontset_get_font_group.
	(fontset_font): Cancel previous change.

*** fontset.c.~1.151.~	2009-01-26 16:52:57.000000000 +0900
--- fontset.c	2009-01-26 16:53:14.000000000 +0900
***************
*** 521,527 ****
  
    font_group = fontset_get_font_group (fontset, fallback ? -1 : c);
    if (! CONSP (font_group))
!     return Qnil;
    vec = XCDR (font_group);
    if (ASIZE (vec) == 0)
      return Qnil;
--- 521,527 ----
  
    font_group = fontset_get_font_group (fontset, fallback ? -1 : c);
    if (! CONSP (font_group))
!     return font_group;
    vec = XCDR (font_group);
    if (ASIZE (vec) == 0)
      return Qnil;
***************
*** 660,669 ****
    Lisp_Object rfont_def;
    Lisp_Object base_fontset;
  
-   /* If we know there is no font of C, don't do any work.  */
-   if (EQ (fontset_ref (fontset, c), Qt))
-     return Qnil;
- 
    /* Try a font-group of FONTSET. */
    rfont_def = fontset_find_font (fontset, c, face, id, 0);
    if (VECTORP (rfont_def))
--- 660,665 ----
---
Kenichi Handa
handa@m17n.org






  parent reply	other threads:[~2009-01-26  8:00 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-23  5:04 bug#1990: 23.0.60; Emacs trying too hard to find fonts that don't exist Chong Yidong
2009-01-23 14:00 ` Jason Rumney
2009-01-24 19:47   ` Chong Yidong
2009-01-24 21:50     ` Juanma Barranquero
2009-01-24 21:55       ` Chong Yidong
2009-01-24 22:06         ` Juanma Barranquero
2009-01-25  5:22       ` Jason Rumney
2009-01-25 11:57         ` Juanma Barranquero
2009-01-26 11:46           ` Kenichi Handa
2009-01-26 12:02             ` Juanma Barranquero
2009-01-26  8:00     ` Kenichi Handa [this message]
2009-01-26 15:51       ` Chong Yidong
  -- strict thread matches above, loose matches on Subject: below --
2009-01-22 13:22 Jason Rumney
2009-01-24 13:28 ` Juanma Barranquero
2009-01-24 14:02   ` Jason Rumney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=E1LRMO9-0004Wg-Cc@etlken \
    --to=handa@m17n.org \
    --cc=1990@emacsbugs.donarmstrong.com \
    --cc=cyd@stupidchicken.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).