From 3acad73c3274e98a2d47317fb70e7df9f00ecaec Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 2 Dec 2015 20:06:46 -0500 Subject: xdg-shell: clarify xdg_surface creation semantics regarding buffers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit this change ensures that the client will set its initial state before performing any drawing, ensuring that there is no mismatch when creating a surface with a non-default state (eg. maximize, fullscreen, ...) looking at the following event flows: 1) wl_surface.attach, wl_surface.commit, xdg_shell.get_xdg_surface 2) wl_surface.attach, xdg_shell.get_xdg_surface, wl_surface.commit 3) xdg_shell.get_xdg_surface, wl_surface.commit, xdg_surface.configure, wl_surface.attach, wl_surface.commit only 3) is now valid, while 1) and 2) will trigger errors as a result of handling buffers prior to creating the xdg surface Signed-off-by: Mike Blumenkrantz Signed-off-by: Jonas Ã…dahl Reviewed-by: Jasper St. Pierre Reviewed-by: Bryce Harrington --- unstable/xdg-shell/xdg-shell-unstable-v6.xml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'unstable') diff --git a/unstable/xdg-shell/xdg-shell-unstable-v6.xml b/unstable/xdg-shell/xdg-shell-unstable-v6.xml index ce5f7c5..2b028c0 100644 --- a/unstable/xdg-shell/xdg-shell-unstable-v6.xml +++ b/unstable/xdg-shell/xdg-shell-unstable-v6.xml @@ -126,14 +126,12 @@ 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 the xdg_surface state to take effect. + + Creating an xdg_surface from a wl_surface which has a buffer attached or + committed is a client error, and any attempts by a client to attach or + manipulate a buffer prior to the first xdg_surface.configure call must + also be treated as errors. For a surface to be mapped by the compositor the client must have committed both an xdg_surface state and a buffer. -- cgit v1.2.3