[PATCH weston 4/4] compositor: popup inherits surface transformation

Pekka Paalanen ppaalanen at gmail.com
Fri Dec 21 00:44:38 PST 2012


On Thu, 20 Dec 2012 14:15:56 -0800
Bill Spitzak <spitzak at gmail.com> wrote:

> Pekka Paalanen wrote:
> 
> > No, I don't think it will work. The set of surfaces, which is a main
> > surface (parent) and its sub-surfaces, forms a single solid window for
> > all window management purposes. The bounding box of the whole set
> > becomes the size of the window.
> 
> I am not very clear on what use this bounding box is. It contains the 
> "shadow" (and also the "edges" which I have tried to explain but seem to 
> be unable to). In general this is useless for window management because 
> the user does not think of those as parts of the window. The shell api 

Ah right, that is true.

> already has the ability to specify the input region which I think serves 
> the purposes you are thinking of for the bounding box.

Perhaps. (Input region is not in the shell protocol or api, btw.)

> 
> In any case it would be trivial for the "stuck to the parent" bit to be 
> part of the rules for deciding what is merged to produce the bounding box.
> 
> > Conceptually I see it like this: zero or more sub-surfaces with one main
> > surface forms a window. A window is the entity managed at window
> > manager level, and therefore a window is what can be a top-level
> > window, tooltip, menu, etc. So yes, we may need another shell
> > internal concept of "window groups" to ease stacking management of e.g.
> > window+menus+tooltips.
> 
> The window groping can be completely controlled with a "parent" pointer. 
> All windows that are linked by parent pointers are a "group". This 
> avoids adding yet another data structure to wayland and also matches the 
> most common usage of floating windows. The big difference from X and 
> Windows is that it is officially stated that the client can alter the 
> parent pointer at any time, which avoids any needs for attempting to 
> solve complex stacking issues using layers and groups or by having to 
> support more than one "parent".

If you are talking about the protocol here, then yes, for sub-surfaces
I already have a single parent association. Having a sub-surface parent
association excludes any other associations, so this cannot cause
multiple parents to appear in a compositor implementation.

Whether reassigning or removing the sub-surface parent association would
be useful and should be allowed, is still an open question.

I don't understand the comment about a "data structure".

> > On the protocol level, these concepts are built on the wl_surface
> > object, which can form a part of a window (by being a sub-surface), or
> > the base object of a window (the main surface, or "parent"). The base
> > object can then be associated with meanings like top-level and tooltip
> > in the shell level of the protocol.
> 
> As far as I can tell the shell is responsible for making the composite. 
> The sample shell is already doing elaborate work on clipping out the 
> portions of lower surfaces that it knows are not visible. This code can 
> be reused for subsurfaces. This is the main reason I do not think there 
> should be any difference between subsurfaces and floating windows.
> 
> As I see it the shell will use the parent pointers, whether surfaces are 
> subsurfaces or floating or "below" subsurfaces, and the history of 
> "raise" requests for surfaces, to figure out a single list of every 
> single surface in stacking order. Then the compositor can draw this 
> efficiently without having to worry about whether things are subsurfaces 
> or not.

I wrote about concepts and the protocol, you reply with implementation
details. I don't see much relevance here.

It seems to me that you have not understood the existing code nor
architecture of Weston at all, even before my sub-surface
implementation, which you obviously have not seen. Your two
paragraphs above are full of factual errors, though I do agree on the
goal of having reusable and simple code.


Thanks,
pq


More information about the wayland-devel mailing list