mirror of
https://github.com/X11Libre/xserver.git
synced 2026-04-14 17:18:09 +00:00
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> (cherry picked from commit6b290fa5d9)