summaryrefslogtreecommitdiff
path: root/protocol
diff options
context:
space:
mode:
authorPekka Paalanen <ppaalanen@gmail.com>2011-11-24 11:34:05 +0200
committerPekka Paalanen <ppaalanen@gmail.com>2011-12-14 11:17:00 +0200
commit6e16811e5e329ca5101b57b3da36a6ffc5e1f3ef (patch)
treeaf13e5c42003f62fed19c720cbf63d35da8a248c /protocol
parent12c05b74adcb6b84aaea8ccb1324c8005faa7ff0 (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.xml13
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>