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 <[email protected]> --- 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 _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
