xserver/hw
Michel Dänzer 6b290fa5d9 xwayland: Replace window pixmap as needed for drawing operation
We must not modify the contents of a client pixmap.

If there's an available window buffer, we re-use that for the window
pixmap. Otherwise we just allocate a new one.

This also avoids Present client hangs due to xwl_present_buffer_release
not getting called for the buffer release event.

v2:
* Use xwl_pixmap_get_buffer_release_cb instead of keeping track of the
  flip pixmap in xwl_window.
* Dispose of xwl_window_buffer in xwl_window_swap_pixmap called from
  damage_report.
v3:
* Use xwl_window->surface_pixmap in damage_report.
v4:
* Don't re-use client pixmaps as window buffers.
* Clear xwl_window_buffer->pixmap before calling
  xwl_window_buffer_maybe_dispose in xwl_window_swap_pixmap, to prevent
  it from clearing the buffer release callback.
v5:
* Keep using xwl_window_buffers_get_pixmap in xwl_window_attach_buffer.
* Always keep a reference to the old window pixmap in _swap_pixmap,
  drop it in damage_report.

Fixes: 6779ec5bf6 ("xwayland: Use window pixmap as a window buffer")
Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1633
Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1644
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1314>
2024-03-06 17:12:54 +01:00
..
kdrive dix: unexport AddScreen() and AddGPUScreen() 2024-03-03 23:24:28 +00:00
vfb dix: unexport AddScreen() and AddGPUScreen() 2024-03-03 23:24:28 +00:00
xfree86 dix: unexport AttachUnboundGPU() and DetachUnboundGPU() 2024-03-03 23:24:28 +00:00
xnest dix: unexport AddScreen() and AddGPUScreen() 2024-03-03 23:24:28 +00:00
xquartz os: consolidate busfault handling 2024-02-23 23:15:12 +00:00
xwayland xwayland: Replace window pixmap as needed for drawing operation 2024-03-06 17:12:54 +01:00
xwin dix: unexport AddScreen() and AddGPUScreen() 2024-03-03 23:24:28 +00:00
meson.build Drop DMX DDX 2021-09-07 09:34:31 +00:00