all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: joakim@verona.se
To: emacs-devel@gnu.org
Subject: problem disabling display optimizaions
Date: Wed, 10 Aug 2011 16:06:00 +0200	[thread overview]
Message-ID: <m3ty9picon.fsf@chopper.vpn.verona.se> (raw)


I disable display optimizations in the xwidget branch currently because
I need to reliably catch redisplays notion about where objects are on the
screen. The idea has always been to get back to this and re-enable
optimizations in stages.

Anyway, so the code to move the xwidgets around on screen was reliable
for a very long time. Then I spent some time on the new webkit xwidget
which had entirely different issues. 

Now, when I return to the simpler xwidgets such as buttons and sliders,
they no longer moved properly in the buffer. The cause might be changes
in redisplay or more likely some error of mine. redraw-display restores
proper placement immediately.

I can restore the previous behavior by disabling scrolling_window() by
making it return early. This function is similar to the try_* fns.

Now I would like to verify how redisplay works.

The problem happens because fill_xwidget_glyph_string doesn't get called
during redisplay any more. This works the same as the other
fill_*_glyph_string functions. If display opimizations are completely
disabled it should be called. Redisplay tries to optimize away the fill
calls by using hardware scrolling if possible. But if the screen is
scrolled that way the xwidget won't be notified that Emacs desires its
movement(yet).

GLYPH_DEBUG allows for disabling of optimizations and I have been using
that. GLYPH_DEBUG now compiles here but doesn't disable optimization as
I expect.

GLYPH_DEBUG listens to these variables:

inhibit-try-window-id
inhibit-try-window-reusing

There ought also be a inhibit-try-window but there isn't for some
reason. 

produce_xwidget_glyph gets called like the other produce_*_glyph
functions but at that time we don't know screen placement.

so, to summarize, GLYPH_DEBUG doesn't seem to inhibit optimizations as
it used to. Disabling scrolling_window() appears to be enough to get
xwidgets working again.

-- 
Joakim Verona



             reply	other threads:[~2011-08-10 14:06 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-10 14:06 joakim [this message]
2011-08-10 16:30 ` problem disabling display optimizaions Eli Zaretskii

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

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

  git send-email \
    --in-reply-to=m3ty9picon.fsf@chopper.vpn.verona.se \
    --to=joakim@verona.se \
    --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 external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.