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

Derek Foreman derekf at osg.samsung.com
Mon Sep 28 13:41:03 PDT 2015


On 09/04/15 11:22 AM, Manuel Bachmann wrote:
> 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().

I'm having a hard time thinking of a use case for
xdg_surface_present_from_event()...  Picking an arbitrary motion event
from the past seems odd - the compositor probably won't keep track of
input serials in any way that makes this useful?

> 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
> 



More information about the wayland-devel mailing list