seat: Fix reloading cursor theme after change

This reverts commit afde6369
"seat: avoid unneeded reloading xcursor theme".
Always avoiding to reload the xcursor theme prevents reloading the
cursor even when this is desired. Instead seat_configure_xcursor
can determine whether a full reload is necessary.

To stay with the spirit of the reverted change, cursors are only fully
reloaded, if the theme has changed.

Fixes #6931
This commit is contained in:
Lina Banik 2022-06-06 17:16:29 +02:00 committed by Simon Ser
parent 5c99b98805
commit f7a40cfa2f

View file

@ -803,9 +803,7 @@ static void seat_apply_input_mapping(struct sway_seat *seat,
static void seat_configure_pointer(struct sway_seat *seat, static void seat_configure_pointer(struct sway_seat *seat,
struct sway_seat_device *sway_device) { struct sway_seat_device *sway_device) {
if ((seat->wlr_seat->capabilities & WL_SEAT_CAPABILITY_POINTER) == 0) {
seat_configure_xcursor(seat); seat_configure_xcursor(seat);
}
wlr_cursor_attach_input_device(seat->cursor->cursor, wlr_cursor_attach_input_device(seat->cursor->cursor,
sway_device->input_device->wlr_device); sway_device->input_device->wlr_device);
wl_event_source_timer_update( wl_event_source_timer_update(
@ -1069,7 +1067,7 @@ void seat_configure_xcursor(struct sway_seat *seat) {
sway_log(SWAY_ERROR, sway_log(SWAY_ERROR,
"Cannot create XCursor manager for theme '%s'", cursor_theme); "Cannot create XCursor manager for theme '%s'", cursor_theme);
} }
}
for (int i = 0; i < root->outputs->length; ++i) { for (int i = 0; i < root->outputs->length; ++i) {
struct sway_output *sway_output = root->outputs->items[i]; struct sway_output *sway_output = root->outputs->items[i];
@ -1090,6 +1088,7 @@ void seat_configure_xcursor(struct sway_seat *seat) {
wlr_cursor_warp(seat->cursor->cursor, NULL, seat->cursor->cursor->x, wlr_cursor_warp(seat->cursor->cursor, NULL, seat->cursor->cursor->x,
seat->cursor->cursor->y); seat->cursor->cursor->y);
} }
}
bool seat_is_input_allowed(struct sway_seat *seat, bool seat_is_input_allowed(struct sway_seat *seat,
struct wlr_surface *surface) { struct wlr_surface *surface) {