output: reset hardware_cursor on failure

The DRM backend's set_cursor function always return true if the
buffer is NULL. If using a NULL cursor's buffer on startup, the
wlr_output_cursor will be marked as a hardware cursor. If the
cursor later gains a non-NULL buffer and the DRM backend rejects
that buffer, the cursor will remain marked as a hardware cursor,
despite the backend not displaying it as such. As a result, the
cursor will not be displayed at all. Fix this by always resetting
the hardware_cursor field in output_cursor_attempt_hardware().
This commit is contained in:
JiDe Zhang 2024-05-06 18:03:43 +08:00 committed by Simon Ser
parent 35c3194ae5
commit 36c0d5fe3a

View File

@ -280,6 +280,8 @@ static bool output_cursor_attempt_hardware(struct wlr_output_cursor *cursor) {
return false;
}
output->hardware_cursor = NULL;
struct wlr_texture *texture = cursor->texture;
// If the cursor was hidden or was a software cursor, the hardware