commit f7a40cfa2fd89d41afd596e7bbfbdd66a4a0e4da
parent 5c99b98805e8171d590d466b2eb21402aaf8de6b
Author: Lina Banik <l.banik@stud.uni-hannover.de>
Date: Mon, 6 Jun 2022 17:16:29 +0200
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
Diffstat:
1 file changed, 19 insertions(+), 20 deletions(-)
diff --git a/sway/input/seat.c b/sway/input/seat.c
@@ -803,9 +803,7 @@ static void seat_apply_input_mapping(struct sway_seat *seat,
static void seat_configure_pointer(struct sway_seat *seat,
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,
sway_device->input_device->wlr_device);
wl_event_source_timer_update(
@@ -1069,26 +1067,27 @@ void seat_configure_xcursor(struct sway_seat *seat) {
sway_log(SWAY_ERROR,
"Cannot create XCursor manager for theme '%s'", cursor_theme);
}
- }
- for (int i = 0; i < root->outputs->length; ++i) {
- struct sway_output *sway_output = root->outputs->items[i];
- struct wlr_output *output = sway_output->wlr_output;
- bool result =
- wlr_xcursor_manager_load(seat->cursor->xcursor_manager,
- output->scale);
- if (!result) {
- sway_log(SWAY_ERROR,
- "Cannot load xcursor theme for output '%s' with scale %f",
- output->name, output->scale);
+
+ for (int i = 0; i < root->outputs->length; ++i) {
+ struct sway_output *sway_output = root->outputs->items[i];
+ struct wlr_output *output = sway_output->wlr_output;
+ bool result =
+ wlr_xcursor_manager_load(seat->cursor->xcursor_manager,
+ output->scale);
+ if (!result) {
+ sway_log(SWAY_ERROR,
+ "Cannot load xcursor theme for output '%s' with scale %f",
+ output->name, output->scale);
+ }
}
- }
- // Reset the cursor so that we apply it to outputs that just appeared
- cursor_set_image(seat->cursor, NULL, NULL);
- cursor_set_image(seat->cursor, "default", NULL);
- wlr_cursor_warp(seat->cursor->cursor, NULL, seat->cursor->cursor->x,
- seat->cursor->cursor->y);
+ // Reset the cursor so that we apply it to outputs that just appeared
+ cursor_set_image(seat->cursor, NULL, NULL);
+ cursor_set_image(seat->cursor, "default", NULL);
+ wlr_cursor_warp(seat->cursor->cursor, NULL, seat->cursor->cursor->x,
+ seat->cursor->cursor->y);
+ }
}
bool seat_is_input_allowed(struct sway_seat *seat,