xdg-shell: Require a buffer and a wl_surface.commit for mapping a window
authorJonas Ådahl <jadahl@gmail.com>
Wed, 18 Mar 2015 09:08:23 +0000 (17:08 +0800)
committerJonas Ådahl <jadahl@gmail.com>
Tue, 5 May 2015 06:17:25 +0000 (14:17 +0800)
Require the client to have attached (either previously committed, or
newly) a buffer to the corresponding wl_surface, and that the window
will not be potentially mapped until calling wl_surface.commit after
having created the window. This is required to make valid double
buffered xdg_surface state possible when creating a window.

Currently there is no double buffered state in xdg_popup, but it should
behave the same as xdg_surface, and for making it future proof in case
we want to add double buffered state to xdg_popup.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
protocol/xdg-shell.xml

index df103c47224d52984ce97b63619ba0cb8a56af59..79e30a01bc94eb12b0f6f8cef9cee23c561c8c67 100644 (file)
       It provides requests to treat surfaces like windows, allowing to set
       properties like maximized, fullscreen, minimized, and to move and resize
       them, and associate metadata like title and app id.
+
+      The client must call wl_surface.commit on the corresponding wl_surface
+      for the xdg_surface state to take effect. Prior to committing the new
+      state, it can set up initial configuration, such as maximizing or setting
+      a window geometry.
+
+      Even without attaching a buffer the compositor must respond to initial
+      committed configuration, for instance sending a configure event with
+      expected window geometry if the client maximized its surface during
+      initialization.
+
+      For a surface to be mapped by the compositor the client must have
+      committed both an xdg_surface state and a buffer.
     </description>
 
     <request name="destroy" type="destructor">
       The x and y arguments specify where the top left of the popup
       should be placed, relative to the local surface coordinates of the
       parent surface.
+
+      The client must call wl_surface.commit on the corresponding wl_surface
+      for the xdg_popup state to take effect.
+
+      For a surface to be mapped by the compositor the client must have
+      committed both the xdg_popup state and a buffer.
     </description>
 
     <request name="destroy" type="destructor">