Skip to content
This repository has been archived by the owner on Nov 1, 2021. It is now read-only.

Commit

Permalink
layer-shell: introduce ack for new outputs
Browse files Browse the repository at this point in the history
This ack sequence eliminates the race between a client creating a
new layer surface and the compositor rendering the first frame of a
new output, allowing frame perfection to be maintained.
  • Loading branch information
ifreund committed Aug 20, 2020
1 parent 16a2888 commit 28390ec
Showing 1 changed file with 34 additions and 2 deletions.
36 changes: 34 additions & 2 deletions unstable/wlr-layer-shell-unstable-v1.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
THIS SOFTWARE.
</copyright>

<interface name="zwlr_layer_shell_v1" version="3">
<interface name="zwlr_layer_shell_v1" version="4">
<description summary="create surfaces that are layers of the desktop">
Clients can use this interface to assign the surface_layer role to
wl_surfaces. Such surfaces are assigned to a "layer" of the output and
Expand Down Expand Up @@ -92,9 +92,41 @@
are not affected.
</description>
</request>

<!-- Version 4 additions -->

<event name="new_output" since="3">
<description summary="notify of a new wl_output">
This event indicates that one or more new outputs have been
created. All clients must send an ack_new_output request in response
to this event. If a client wishes to create a new layer surface in
response to the new output(s), it must make an ack_new_output request
with the provided serial after creating any new layer surfaces using
the get_layer_surface request and before the first commit on any of
the new surfaces. If the client does not wish to create a new layer
surface, it should ack immediately.

This allows the compositor to wait until new layer surfaces are ready
before rendering the first frame of new outputs, avoiding a race that
could cause imperfect frames.
</description>
<arg name="serial" type="uint"/>
</event>

<request name="ack_new_output" since="3">
<description summary="ack a new_output event">
This request informs the server that following commits on layer surfaces
created by the client take the new output(s) into account.

A client may make multiple ack_new_output requests before committing.
The last request made before the commit indicates which new_output
event the commit is in response to.
</description>
<arg name="serial" type="uint" summary="serial from a new_output event"/>
</request>
</interface>

<interface name="zwlr_layer_surface_v1" version="3">
<interface name="zwlr_layer_surface_v1" version="4">
<description summary="layer metadata interface">
An interface that may be implemented by a wl_surface, for surfaces that
are designed to be rendered as a layer of a stacked desktop-like
Expand Down

0 comments on commit 28390ec

Please sign in to comment.