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 <der...@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.bachm...@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@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/wayland-devel >
_______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel