[PATCH wayland-protocols v3 18/17] xdg-shell: Soften fullscreen geometry requirements

Jonas Ådahl jadahl at gmail.com
Tue Nov 21 08:28:45 UTC 2017


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

Thanks a lot! Added tag locally so far.


Jonas


More information about the wayland-devel mailing list