[PATCH] protocol: Add wl_shell_surface_set_notification

Bill Spitzak spitzak at gmail.com
Fri Jan 4 11:46:21 PST 2013

Pekka Paalanen wrote:
> On Thu, 27 Dec 2012 11:36:43 -0200
> Tiago Vignatti <tiago.vignatti at linux.intel.com> wrote:
>> Hi. I'm afraid that notification windows and tooltips are quite similar.
> I don't think so, because...

It sounds like the important difference is that the compositor positions 
these windows.

Therefore I would like to see any sample implementation concentrate on 
this so that people do not confuse this with any "layer" system, which I 
feel would be very counter-productive. Perhaps attach them to the panel, 
so full screen windows remain above them, so the sample compositor makes 
it clear that this is not a "layer".

> There are some further questions, which might affect the needed
> protocol, just food for thought for the future:
> - is it the compositor or the client who will dismiss the notification
>   on timeout?

The client is responsible for this. Perhaps the event that caused the 
notification happens again, which should reset the timeout. Perhaps 
there is a display saying how long ago it happened, or you want to blink 
a lot before vanishing, etc.

> - is it the compositor or the client who will animate the notification
>   to and from screen?

The compositor is going to be limited to only doing animations that can 
be achieved using the image of the window (including it's alpha channel 
and the shadow area) and it is also going to have information like the 
opaque area, the input area, and also my proposed "non-edge area". This 
does mean it can't perfectly do things like a distortion of the window 
that still has a fixed-size "shadow".

Still it seems the compositor can do a lot, can make multiple clients 
animate together in sync, and this is a lot easier on the clients, so I 
feel it is better to have the compositor do it.

Animation should apply to normal windows, too. There is nothing special 
about notifications!

> - do these require further events, like "notification was hidden" due
>   to timeout or new notifications pushing old ones out?

Doesn't the actual mapping of a surface already cause an event to the 
client? I would reuse that, or if it is missing add it to *all* surfaces.

> - what happens to the hide animation, if the notification wl_surface
>   gets destroyed? (i.e. how does the client need to behave, so that the
>   animation can complete)

The client does not get the buffer-release event until after any 
animation using the current contents of the buffer finishes.

You have to do something if the client crashes in such a way that the 
shared buffer memory is lost. Or perhaps this is not possible in current 
shm solutions? If it is a problem the animation will have to be cancelled.

More information about the wayland-devel mailing list