RFC : xdg_surface_present() look-and-feel and implementation

Jasper St. Pierre jstpierre at mecheye.net
Tue Jul 29 14:11:22 PDT 2014

On Tue, Jul 29, 2014 at 9:16 PM, Bill Spitzak <spitzak at gmail.com> wrote:

> On 07/29/2014 11:40 AM, Manuel Bachmann wrote:
>  When creating a xdg_surface, the surface will not be mapped (i.e. shown)
>> by desktop-shell anymore. It will only be if xdg_surface_present() has
>> been called once.
> There seems to be a design goal in Wayland to prevent clients from making
> surfaces that they never map. So it would be better if creation + commit of
> a surface did the same thing as present. Also this does not break existing
> clients.

There is nothing special about the first time the surface wants attention
> (other than historical legacy). The desktop should be allowed to turn this
> into a notification just like it would on subsequent calls.

Agreed. Especially if you start an application, but it's slow to start, and
you have typed into the current window or have navigated away from it
since, you should get a popup instead of the window immediately mapped.
This is known as "focus stealing prevention".

Unfortunately, the protocol as Manuel mocked up doesn't have the event
timestamp. This is required so we can track when the surface was intended
to be presented.

If called twice, or more, the request will send an event to
>> desktop-shell, so it can display a notification.
> This is not controlled by a count, but by whether a window is already
> visible or already in the notification state. Clients should be able to
> send a lot of these in a row. They cannot reliably test if they are
> invisible and send the request only then, as there is a race condition.

Yes, this is what's intended.

I also think the term "present" is not a great idea. This should be exactly
> the same as "raise" or "show" or "activate" or any number of other terms,
> but I have never seen the word "present" used before. I would reuse an
> existing term. One reason is to prevent somebody else from adding a
> redundant api for that term, because they did not realize "present" is the
> thing they are looking for.

For reference, the name was taken from gtk_window_present. I am fine with
alternate names for the request, including "activate". I am not comfortable
with "raise" or "show", though, as the request is designed to *present* the
surface to the window, whenever possible. This may imply a workspace
switch, too. The name "raise" or "show" simply says to me about the
stacking order or the mapped state, but this may just be my X11 experience

> _______________________________________________
> 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/20140729/00c87a3c/attachment-0001.html>

More information about the wayland-devel mailing list