unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Jason Rumney <jasonr@gnu.org>
To: Chong Yidong <cyd@stupidchicken.com>
Cc: emacs-devel@gnu.org
Subject: Re: Analysis of redisplay performance on Windows
Date: Sun, 27 Jul 2008 10:55:11 +0100	[thread overview]
Message-ID: <488C45FF.2040509@gnu.org> (raw)
In-Reply-To: <87od4kuis1.fsf@stupidchicken.com>

Chong Yidong wrote:

>> There may also be a problem with the setting of
>> row->contains_overlapping_glyphs_p on Windows. The above functions
>> should only be called when that is set, but after inserting debugging
>> code I can see them being called frequently even when using fonts that
>> contain no overlapping glyphs (confirmed by further debugging code in
>> w32font_text_metrics).

> 
> But I don't understand why the problem of left_overwriting and
> right_overwriting, if that's indeed the culprit, would be specific to
> Windows.

That is why I suspect there may be a problem with the setting of
row->contains_overlapping_glyphs_p on Windows. We avoid calling those
functions if that variable is not set. It may also be much more
expensive to look up the glyph index points in Windows, that is the case
for obtaining text extents, so it wouldn't surprise me.

Another factor is that we do this all one character at a time, and each
time on Windows we select the font into the current GC, then reselect
the previously set font. This operation is also expensive, so it would
help to have functions in the font backend interface for selecting and
deselecting fonts. I already tried using prepare_face and done_face for
this, but the calls overlap - ie we prepare a second face without
calling done_face for the first.




  reply	other threads:[~2008-07-27  9:55 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-27  3:07 Analysis of redisplay performance on Windows Chong Yidong
2008-07-27  9:55 ` Jason Rumney [this message]
2008-07-27 20:56   ` Chong Yidong
2008-07-27 21:30     ` Jason Rumney
2008-07-27 21:40       ` Chong Yidong
2008-07-27 21:53         ` Jason Rumney
2008-07-28  1:18           ` Chong Yidong
2008-07-28  3:06             ` Adrian Robert
2008-07-28  5:03               ` Chong Yidong
2008-07-28  7:04             ` Jason Rumney
2008-07-28  2:11           ` Kevin Yu
2008-07-28  4:24           ` YAMAMOTO Mitsuharu
2008-07-28  9:48             ` YAMAMOTO Mitsuharu
2008-07-30 21:51               ` 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=488C45FF.2040509@gnu.org \
    --to=jasonr@gnu.org \
    --cc=cyd@stupidchicken.com \
    --cc=emacs-devel@gnu.org \
    /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).