<div dir="ltr"><div>On Tue, Nov 21, 2017 at 5:54 AM Jonas Ådahl <<a href="mailto:jadahl@gmail.com" target="_blank">jadahl@gmail.com</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Having a strict requirement on clients obeying the configured window<br>
geometry for fullscreen toplevel surfaces might have the side effect of<br>
making it harder or impossible to implement various hardware<br>
optimizations on certain system configurations. By softening<br>
requirements on the geometry while loosely defining the border fill, we<br>
remove that restriction.<br>
<br>
Clients that still want total control of the surrounding area can<br>
still for example prepare the attached buffers to match the configured<br>
surface size, or use subsurfaces in combination with wp_viewporter to<br>
make up a surface matching the fullscreen window geometry dimensions.<br>
<br>
Signed-off-by: Jonas Ådahl <<a href="mailto:jadahl@gmail.com" target="_blank">jadahl@gmail.com</a>><br>
---<br>
stable/xdg-shell/xdg-shell.xml | 18 ++++++++++++++----<br>
1 file changed, 14 insertions(+), 4 deletions(-)<br>
<br>
diff --git a/stable/xdg-shell/xdg-shell.xml b/stable/xdg-shell/xdg-shell.xml<br>
index 34e3a20..dc70c7a 100644<br>
--- a/stable/xdg-shell/xdg-shell.xml<br>
+++ b/stable/xdg-shell/xdg-shell.xml<br>
@@ -728,8 +728,11 @@<br>
</entry><br>
<entry name="fullscreen" value="2" summary="the surface is fullscreen"><br>
<description summary="the surface is fullscreen"><br>
- The surface is fullscreen. The window geometry specified in the configure<br>
- event must be obeyed by the client.<br>
+ The surface is fullscreen. The window geometry specified in the<br>
+ configure event is a maximum; the client cannot resize beyond it. For<br>
+ a surface to cover the whole fullscreened area, the geometry<br>
+ dimensions must be obeyed by the client. For more details, see<br>
+ xdg_toplevel.set_fullscreen.<br>
</description><br>
</entry><br>
<entry name="resizing" value="3" summary="the surface is being resized"><br>
@@ -888,7 +891,7 @@<br>
<br>
After requesting that the surface should be fullscreened, the<br>
compositor will respond by emitting a configure event with the<br>
- "fullscreen" state and the required window geometry. The client must<br>
+ "fullscreen" state and the fullscreen window geometry. The client must<br>
also acknowledge the configure when committing the new content (see<br>
ack_configure).<br>
<br>
@@ -899,7 +902,14 @@<br>
<br>
If the surface doesn't cover the whole output, the compositor will<br>
position the surface in the center of the output and compensate with<br>
- black borders filling the rest of the output.<br>
+ with border fill covering the rest of the output. The content of the<br>
+ border fill is undefined, but should be assumed to be in some way that<br>
+ attempts to blend into the surrounding area (e.g. solid black).<br>
+<br>
+ If the fullscreened surface is not opaque, the compositor must make<br>
+ sure that other screen content not part of the same surface tree (made<br>
+ up of subsurfaces, popups or similarly coupled surfaces) are not<br>
+ visible below the fullscreened surface.<br>
</description><br>
<arg name="output" type="object" interface="wl_output" allow-null="true"/><br>
</request><br>
--<br>
2.14.2<br></blockquote><div><br></div><div>Very nice, thanks. The patch to on libweston-desktop to match this wording is pretty simple, I'll push it if needed when libweston-desktop supports the stable xdg-shell protocol.</div><div><br></div><div>Reviewed-by: Arnaud Vrac <<a href="mailto:rawoul@gmail.com">rawoul@gmail.com</a>></div></div></div>