summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Zhao <juan.j.zhao@linux.intel.com>2012-02-07 13:39:36 +0800
committerKristian Høgsberg <krh@bitplanet.net>2012-02-16 15:49:29 -0500
commitb3981136a1a501a43b709acef9f145cf977e08b0 (patch)
tree56cabb50473e6e58b8c1fb457001a9abcaeafea1
parent2eddfce14bd282e60d2d928fe567f89c448ebd6e (diff)
Add fullscreen protocol
Map the surface as a fullscreen surface. On the output the surface is assigned to. The client can use different fulllscreen method to fix the size mismatch issue: default, scale, driver and fill. Hints to indicate compositor how to deal with this fullscreen surface. "default" means the client has no preference on fullscreen behavior, policies are determined by compositor. "scale" means the client prefers scaling by the compositor. Scaling would always preserve surface's aspect ratio. And the surface is centered. "driver" means the client wants to switch video mode to the smallest mode that can fit the client buffer. If the sizes do not match, black borders are added. And the framerate parameter is used for "driver" method, to indicate the preferred framerate. framerate=0 means that the app does not care about framerate "fill" means the client wants to add blackborders to the surface. This would be preferring 1:1 pixel mapping in the monitor native video mode. The surface is centered.
-rw-r--r--protocol/wayland.xml40
1 files changed, 32 insertions, 8 deletions
diff --git a/protocol/wayland.xml b/protocol/wayland.xml
index 6d86abc..a33c1d3 100644
--- a/protocol/wayland.xml
+++ b/protocol/wayland.xml
@@ -418,16 +418,40 @@
<request name="set_fullscreen">
<description summary="make the surface a fullscreen surface">
- Map the surface as a fullscreen surface. There are a number
- of options here: on which output? if the surface size doesn't
- match the output size, do we scale, change resolution, or add
- black borders? is that something the client controls? what
- about transient surfaces, do they float on top of the
- fullscreen? what if there's already a fullscreen surface on
- the output, maybe you can only go fullscreen if you're active?
- </description>
+ Map the surface as a fullscreen surface. On the output the
+ surface is assigned to. The client can use different fulllscreen
+ method to fix the size mismatch issue: default, scale, driver
+ and fill. And the framerate parameter is used for "driver" method,
+ to indicate the preferred framerate. framerate=0 means that the
+ app does not care about framerate
+ </description>
+ <arg name="method" type="uint"/>
+ <arg name="framerate" type="uint"/>
+ <arg name="output" type="object" interface="wl_output"/>
</request>
+ <enum name="fullscreen_method">
+ <description summary="different method to set the surface fullscreen">
+ Hints to indicate compositor how to deal with this fullscreen surface.
+ "default" means the client has no preference on fullscreen
+ behavior, policies are determined by compositor.
+ "scale" means the client prefers scaling by the compositor.
+ Scaling would always preserve surface's aspect ratio.
+ And the surface is centered.
+ "driver" means the client wants to switch video mode to the
+ smallest mode that can fit the client buffer. If the
+ sizes do not match, black borders are added.
+ "fill" means the client wants to add blackborders to the
+ surface. This would be preferring 1:1 pixel mapping
+ in the monitor native video mode. The surface is
+ centered.
+ </description>
+ <entry name="default" value="0"/>
+ <entry name="scale" value="1"/>
+ <entry name="driver" value="2"/>
+ <entry name="fill" value="3"/>
+ </enum>
+
<request name="set_popup">
<description summary="make the surface a popup surface">
Popup surfaces. Will switch an implicit grab into