diff --git a/protocol/wayland.xml b/protocol/wayland.xml index 5c2a8030..7e52cb4b 100644 --- a/protocol/wayland.xml +++ b/protocol/wayland.xml @@ -190,7 +190,7 @@ - + A compositor. This object is a singleton global. The compositor is in charge of combining the contents of multiple @@ -1380,7 +1380,7 @@ - + A surface is a rectangular area that may be displayed on zero or more outputs, and shown any number of times at the compositor's @@ -1436,6 +1436,7 @@ + @@ -1490,8 +1491,9 @@ If a pending wl_buffer has been committed to more than one wl_surface, the delivery of wl_buffer.release events becomes undefined. A well behaved client should not rely on wl_buffer.release events in this - case. Alternatively, a client could create multiple wl_buffer objects - from the same backing storage or use wp_linux_buffer_release. + case. Instead, clients hitting this case should use + wl_surface.get_release (if unavailable, a fallback can be implemented + by creating multiple wl_buffer objects from the same backing storage). Destroying the wl_buffer after wl_buffer.release does not change the surface contents. Destroying the wl_buffer before wl_buffer.release @@ -1852,6 +1854,32 @@ + + + + + + Create a callback for the release of the buffer attached by the client + with wl_surface.attach. + + The compositor will release the buffer when it has finished its usage of + the underlying storage for the relevant commit. Once the client receives + this event, and assuming the associated buffer is not pending release + from other wl_surface.commit requests, the client can safely re-use the + buffer. + + Release callbacks are double-buffered state, and will be associated + with the pending buffer at wl_surface.commit time. + + The callback_data passed in the wl_callback.done event is unused and + is always zero. + + Sending this request without a wl_surface.attach request in the same + commit is a protocol error. The compositor will send the no_attach error + in this case. + + +