diff options
author | Pekka Paalanen <ppaalanen@gmail.com> | 2011-11-24 11:34:05 +0200 |
---|---|---|
committer | Pekka Paalanen <ppaalanen@gmail.com> | 2011-12-14 11:17:00 +0200 |
commit | 6e16811e5e329ca5101b57b3da36a6ffc5e1f3ef (patch) | |
tree | af13e5c42003f62fed19c720cbf63d35da8a248c /protocol | |
parent | 12c05b74adcb6b84aaea8ccb1324c8005faa7ff0 (diff) |
protocol: add screensaver interface
Add the screensaver interface to the desktop-shell protocol file. Also
add stubs for it in the compositor, and make wscreensaver to bind to the
screensaver interface. Wscreensaver gets a new option --demo to retain
the current behaviour as a regular wayland client.
When a screensaver application starts, it should bind to the screensaver
interface, enumerate all outputs, create a surface per output, and
register those surfaces via screensaver::set_surface request. Then it
continues with the usual animation loop, waiting for frame events. The
compositor will decide, when the given screensaver surfaces are
displayed. A screensaver application should respond to outputs coming
and going away by creating and destroying surfaces.
The compositor is supposed to activate a screensaver by exec'ing it, and
stop the screensaver by killing the client process. Only one client may
be bound to the screensaver interface at a time. If there already is a
client, the compositor could either kill it first, or not exec a new
one.
Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
Diffstat (limited to 'protocol')
-rw-r--r-- | protocol/desktop-shell.xml | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/protocol/desktop-shell.xml b/protocol/desktop-shell.xml index 3c3ead4..c40cf17 100644 --- a/protocol/desktop-shell.xml +++ b/protocol/desktop-shell.xml @@ -35,4 +35,17 @@ <event name="prepare_lock_surface"/> </interface> + <!-- Only one client can bind this interface at a time. --> + <interface name="screensaver" version="1"> + + <!-- Set the surface type as a screensaver for a particular output. + A screensaver surface is normally hidden, and only visible after + an idle timeout. --> + <request name="set_surface"> + <arg name="surface" type="object" interface="wl_shell_surface"/> + <arg name="output" type="object" interface="wl_output"/> + </request> + + </interface> + </protocol> |