Re: Client-side decorations, RGBA opaque regions

2009/11/25 Fredrik Höglund <fredrik kde org>:
> On Wednesday 25 November 2009, Cody Russell wrote:
>> Hi,
>> I'm working on adding support to GTK+ for doing client-side window
>> decorations, and there are a couple additional hints that seem like they
>> would be useful to propose.
>> Part of this work is involving changing GTK+ to use RGBA windows by
>> default.  For this, I'd like to propose an XserverRegion hint that
>> contains a region marking what parts of the window are known to be
>> opaque.  The idea being that this could be used by a WM/compositor to
>> optimize which parts of the window it needs to composite, if it's useful
>> to the WM/compositor (or it could be ignored; a GL compositor may not
>> find this kind of information very useful, for example).  This might be
> I think it would be preferable to store the rectangles directly in the
> property.
> The reason is that if the window manager wants to fetch the rectangles,
> it first has to make a synchronous call to fetch the ID, followed by another
> synchronous call to fetch the rectangles, while it only has to make
> one such call if the rectangles are stored directly in the property.
> If the window manager needs an XserverRegion it would have to create
> it, but this is an asynchronous call.
>> The other hint that would be useful is a hint similar to
>> _NET_FRAME_EXTENTS that specifies client-side drop shadow extents.  The
>> main idea here being that the WM could take advantage of this to know
>> where to perform window snapping for windows whose decorations and
>> drop-shadows are drawn client-side.  This might be called
> I think this is a good idea, but maybe it should have a more generic
> name, since the client may draw something other than a shadow
> around the window.

How would a compositing manager which decorates windows with, for
example, shadows, know not to draw shadows around/over/under the
client's shadows?  I believe that window frames and other decorations
should each be done by a single client or there will be innumerable
conflicts involved.


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