[PATCH weston 1/6] xdg-shell: define the present/present_from_event() requests

Manuel Bachmann manuel.bachmann at open.eurogiciel.org
Thu Apr 9 09:22:53 PDT 2015


xdg_surface_present() and xdg_surface_present_from_event()
are new requests supposed to be called on an existing
xdg_surface. They tell the compositor that the surface
has new content which may be of interest to the user.
The compositor may then choose to notify the user.

xdg_surface_present_from_event() takes a serial coming
from an input (wl_keyboard, wl_pointer, wl_touch) event as
an argument. If the serial is valid and sufficiently recent,
we can suppose the new content has been issued at the user's
request ; the compositor may then choose to raise the
surface directly. Otherwise, it just behaves like present().

Signed-off-by: Manuel Bachmann <manuel.bachmann at open.eurogiciel.org>
---
 desktop-shell/shell.c  | 15 +++++++++++++++
 protocol/xdg-shell.xml | 20 ++++++++++++++++++++
 2 files changed, 35 insertions(+)

diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index f7c928e..d1d3f3c 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -3923,6 +3923,19 @@ xdg_surface_set_minimized(struct wl_client *client,
 	set_minimized(shsurf->surface);
 }
 
+static void
+xdg_surface_present(struct wl_client *client,
+		    struct wl_resource *resource)
+{
+}
+
+static void
+xdg_surface_present_from_event(struct wl_client *client,
+			       struct wl_resource *resource,
+			       uint32_t serial)
+{
+}
+
 static const struct xdg_surface_interface xdg_surface_implementation = {
 	xdg_surface_destroy,
 	xdg_surface_set_parent,
@@ -3938,6 +3951,8 @@ static const struct xdg_surface_interface xdg_surface_implementation = {
 	xdg_surface_set_fullscreen,
 	xdg_surface_unset_fullscreen,
 	xdg_surface_set_minimized,
+	xdg_surface_present,
+	xdg_surface_present_from_event,
 };
 
 static void
diff --git a/protocol/xdg-shell.xml b/protocol/xdg-shell.xml
index 68cf469..10f82c5 100644
--- a/protocol/xdg-shell.xml
+++ b/protocol/xdg-shell.xml
@@ -396,6 +396,26 @@
       </description>
     </request>
 
+    <request name="present">
+      <description summary="the window wants attention from the user">
+	The surface has new content and would like the compositor
+	to notify the user.
+      </description>
+    </request>
+
+    <request name="present_from_event">
+      <description summary="the window needs attention from the user">
+	The surface has new content and would like the compositor
+	to notify the user.
+
+	If a valid and sufficiently recent serial coming from an
+	input (keyboard, pointer, touch) event is passed as an
+	argument, the compositor may want to raise the surface.
+	Otherwise, the request just behaves like the "present" one.
+      </description>
+      <arg name="serial" type="uint" summary="serial of an input event"/>
+    </request>
+
     <event name="close">
       <description summary="surface wants to be closed">
         The close event is sent by the compositor when the user
-- 
1.8.3.1



More information about the wayland-devel mailing list