I feel configure events and requests are messed up
Giovanni Campagna
scampa.giovanni at gmail.com
Fri Sep 9 02:59:19 PDT 2011
Il giorno gio, 08/09/2011 alle 16.55 -0700, Bill Spitzak ha scritto:
> Giovanni Campagna wrote:
>
> > Yes, but in the middle of this is policy. If the originator of a resize
> > is not the user, how the application can know that the new size is good?
> > We need some way for central policy to kick in, and that's what I'm
> > asking for with the explicit "configure" request. All the rest,
> > including buffer sizes, is tangential and a big misunderstanding caused
> > by my original email.
>
> There does seem to be a lot of misunderstanding, I'm thinking. This is
> my understanding of things where I believe there is confusion (please
> correct me if I am wrong!):
>
> 1. "client" means the process that is not the compositor process. The
> "client" includes the toolkit library and all code that is calculating
> drawn pixels and putting them into the image, such as cairo. Even OpenGL
> hardware acceleration is part of the client, provided the hardware is
> writing to the image the client owns.
>
> 2. The "image" is allocated by the "client". As believe this can be done
> with malloc, although wayland provides some calls so that the allocated
> memory is more likely to be used directly by the wayland compositor,
> rather than having to be copied. I think it should be obvious that only
> the client can free or realloc memory it allocated with malloc.
>
> 3. Wayland uses this "image" as a source, the same way a 3D renderer
> uses a texture map. The 3D renderer is certainly able to resize, clip,
> and pad texture maps to any shape it requires to put on the object, and
> is free to add other graphics besides what is in that texture map. In a
> 3D renderer, making the texture map larger does not make the object
> enlarge to fill the scene.
All of this is correct, but see below.
> For resizing there needs to be EXACTLY these three calls. I am not sure
> what they are called and the lack of terms is causing confusion as well:
>
> 1. A client->compositor call that says "here is the new buffer
> containing the image I want displayed, and here is how big it is, and
> here is other information about the stride and pixel format and how the
> memory is allocated, etc". Think about pixel format and you should see
> how pointless any idea that the compositor can ignore or disobey this
> call. This call may also contain not-strictly necessary stuff, such as
> the position and stacking order of the window, and whether the window
> should be mapped.
>
> 2. A compositor->client call that says "the compositor thinks the window
> should be this big". The client is expected to obey this as closely as
> it can and then allocate and draw the new image, then make the above
> call to indicate the result. The compositor must be written so that a
> client that ignores this or makes a totally different size will not
> cause a crash or unusable display.
>
> 3. A client->compositor call that says "the client thinks the window
> should be this big and at this location". The compositor is expected to
> respond by sending the above call back with the size changed to whatever
> limits it imposes, and may also send similar messages to other windows
> (for instance to resize them in a tiled layout). The compositor can also
> ignore this call. I believe this is the "configure" you asked for above.
That's exactly what I meant. There is no such request in current
wayland, and I'm glad you acknowledge it's needed.
> In addition Wayland could probably use the following call, which would
> (IMHO) give 100% of the advantages of the X11 window manager without any
> of the problems:
>
> 1. A client->compositor call that says "the user is dragging the mouse
> and I have decided it is a window resize/raise/move of this type, please
> handle it". The compositor is expected to track the resizes and send the
> resize requests back, as well as applying any of it's rules, such as
> snapping to edges or tiled windows.
Yes, wayland has this (wl_shell.move + wl_shell.resize), as X11 has it
(_NET_WM_MOVERESIZE). No need for changes here (except maybe
consolidating move and resize).
Giovanni
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 316 bytes
Desc: This is a digitally signed message part
URL: <http://lists.freedesktop.org/archives/wayland-devel/attachments/20110909/fb68fbca/attachment.pgp>
More information about the wayland-devel
mailing list