wlroots/backend
Simon Ser f5889319f7 backend/drm: fix queued cursor FB overwritten with NULL
With the following sequence of events, the cursor FB fields could
end up being all set to NULL while the cursor is enabled:

1. set_cursor is called, conn->cursor_pending_fb is set to a FB
   pointer.
2. The output is committed with a buffer. crtc->cursor->queued_fb
   is set to the FB pointer, conn->cursor_pending_fb is reset to
   NULL. A page-flip event is expected in the future.
3. The output is committed with a modeset before the page-flip
   event is triggered. crtc->cursor->queued_fb is reset to NULL.

At this point all of crtc->cursor->current_fb,
crtc->cursor->queued_fb and conn->cursor_pending_fb are NULL which
is a bogus state when the cursor plane is enabled.

To avoid this issue, avoid overwriting crtc->cursor->queued_fb
with a NULL pointer on commit. The cursor logic still isn't great,
but let's keep a rework of that for a separate patch.

Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3734
2024-03-04 01:37:52 +00:00
..
drm backend/drm: fix queued cursor FB overwritten with NULL 2024-03-04 01:37:52 +00:00
headless backend/headless: take wl_event_loop instead of wl_display 2024-01-25 15:05:36 +00:00
libinput input-device: unconfuse tablet naming 2024-02-29 16:09:07 +01:00
multi Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
session Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wayland input-device: unconfuse tablet naming 2024-02-29 16:09:07 +01:00
x11 backend/x11: add error logging to query_dri3_drm_fd() 2024-03-02 13:14:12 +01:00
backend.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
meson.build backend/session: make optional 2022-11-25 16:15:29 +00:00