[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

problem disabling display optimizaions

From: joakim
Subject: problem disabling display optimizaions
Date: Wed, 10 Aug 2011 16:06:00 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

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

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:


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

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 via email to

[Prev in Thread] Current Thread [Next in Thread]