wlroots/include
Simon Ser 5f6b9e5620 Replace wlr_client_buffer with wlr_surface_texture
wlr_client_buffer has a bad design: just because it needs some
ref'counting functionality, it's implemented as a wlr_buffer.
Its purpose is to allow compositors to obtain a frozen wlr_texture
to keep painting an old representation of the surface for an
arbitrary amount of time (e.g. during layout reconfigurations).

However a wlr_buffer lock means something else entirely, and abusing
it for ref'counting a texture leads to various issues. In particular,
wlr_surface checks the wlr_client_buffer lock count to decide whether
to mutate a texture on commit. This falls apart if the buffer is
locked for another purpose than freezing a surface texture (e.g.
locked by another wlroots helper). Additionally, wlr_client_buffer
forces backends to re-import and re-check the buffer each time the
client commits, since DMA-BUF wlr_client_buffers are destroyed and
re-created on each commit. wlr_client_buffer also doesn't properly
forward all wlr_buffer operations to the source buffer: some are
unimplemented, and the source buffer is not locked by wlr_client_buffer
thus may be destroyed anytime.

To fix all of this mess, introduce a new struct wlr_surface_texture
whose purpose is just to track whether a wlr_texture is frozen.
Compositors can lock the texture to freeze it. The wlr_buffer can be
accessed from wlr_surface_texture.buffer, or at surface commit time
from wlr_surface.current.buffer.
2024-03-12 14:56:32 +01:00
..
backend backend/drm: track cursor FB in wlr_drm_connector_state 2024-03-04 11:26:20 +01:00
interfaces types/wlr_input_device: move init and finish function to private API 2022-03-07 16:37:41 +00:00
render render/egl: drop wlr_egl_is_current() 2024-02-23 18:52:48 +01:00
types scene: add scene_buffer_set_buffer_and_texture() 2024-03-12 14:56:05 +01:00
util xdg-toplevel: check that title provided actually is UTF-8 2023-11-22 22:03:00 +03:00
wlr Replace wlr_client_buffer with wlr_surface_texture 2024-03-12 14:56:32 +01:00
xcursor Add some missing includes/declarations 2023-06-05 21:06:19 +00:00
xwayland xwayland: add support for _NET_WM_WINDOW_TYPE_DESKTOP atom 2024-01-25 19:27:37 +03:00
meson.build build: unify naming for HAVE_* defines 2022-12-06 22:39:45 +00:00