Expose Events change ?

Adam Jackson ajax at redhat.com
Mon Jan 30 11:21:35 PST 2012


On 1/30/12 11:37 AM, Andrew McLean wrote:

> Thanks, but I'd still like to learn more about this change. Is it
> covered in any Release Note, for example ?

Not directly.  It's sort of fundamental to the larger feature that is 
the Composite extension.

> E.g. Indeed I don't currently receive any, but under what circumstances
> might I get them, and need to handle them ?

When in doubt, read the protocol spec.

The core protocol definition specifies the conditions under which Expose 
events are generated:

"This event is reported to clients selecting Exposure on the window. It 
is generated when no valid contents are available for regions of a 
window, and either the regions are visible, the regions are viewable and 
the server is (perhaps newly) maintaining backing store on the window, 
or the window is not viewable but the server is (perhaps newly) honoring 
window’s backing-store attribute of Always or WhenMapped. The regions 
are decomposed into an arbitrary set of rectangles, and an Expose event 
is generated for each rectangle."

In other words: something bad happened to your window, and you, dear 
program, must repair it.  The Composite extension spec amends this by 
defining window redirection states in which the X server promises that, 
in the language of the core protocol, "valid contents are available".

So that's pretty much just a long version of what I said in the first 
place.  If you have a compositor running (using the Composite extension 
to redirect window storage), then you usually won't get Expose events, 
because there are fewer times when the server will lose your window's 
pixel content.

But your response to them is always the same: paint the exposed area.

Most toolkits will get this level of detail right for you.

- ajax



More information about the xorg mailing list