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

Manuel Bachmann manuel.bachmann at iot.bzh
Tue Sep 29 00:53:05 PDT 2015


Hi Derek, and thanks a lot for your feedback,

I think it makes sense if you consider the compositor can know if a past
input event could have happened "not long ago" or "a very long time ago"
(if the event happened not long ago, raise the window, otherwise blink). It
is really a matter of policy, but the idea was to let the shell know some
details on user interactions, so it can decide what to do. What do you
think of this ?

PS : I  rebased the patches on top of Weston 1.9 *. I am also preparing a
demonstration using well-known applications with external toolkits, but it
takes some time.

* : https://github.com/Tarnyko/weston-xdg_surface_present

Regards,

*Manuel Bachmann, Graphics Engineer www.iot.bzh <http://iot.bzh> *


2015-09-28 22:41 GMT+02:00 Derek Foreman <derekf at osg.samsung.com>:

> 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
> >
>
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/wayland-devel/attachments/20150929/073f7ed9/attachment.html>


More information about the wayland-devel mailing list