diff options
author | Brian Ashworth <bosrsf04@gmail.com> | 2019-02-03 14:00:37 -0500 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2019-02-11 10:12:43 -0500 |
commit | 743d34538333e4111a71fad32668335dff9a4822 (patch) | |
tree | 27cbb7d1e727a4fe520e4a3100bc87e3d494b8de /sway | |
parent | Merge pull request #3551 from c-edw/RevertDoubleFrees (diff) | |
download | sway-743d34538333e4111a71fad32668335dff9a4822.tar.gz sway-743d34538333e4111a71fad32668335dff9a4822.tar.zst sway-743d34538333e4111a71fad32668335dff9a4822.zip |
Merge pull request #3563 from vilhalmer/fix-wildcard-seat-constrain-crashes-during-reconfig
Fix wildcard seat constrain crashes during reconfig
Diffstat (limited to 'sway')
-rw-r--r-- | sway/config.c | 5 | ||||
-rw-r--r-- | sway/input/cursor.c | 6 |
2 files changed, 10 insertions, 1 deletions
diff --git a/sway/config.c b/sway/config.c index 7cb27d95..54d29fc9 100644 --- a/sway/config.c +++ b/sway/config.c | |||
@@ -141,6 +141,11 @@ static void destroy_removed_seats(struct sway_config *old_config, | |||
141 | int i; | 141 | int i; |
142 | for (i = 0; i < old_config->seat_configs->length; i++) { | 142 | for (i = 0; i < old_config->seat_configs->length; i++) { |
143 | seat_config = old_config->seat_configs->items[i]; | 143 | seat_config = old_config->seat_configs->items[i]; |
144 | // Skip the wildcard seat config, it won't have a matching real seat. | ||
145 | if (strcmp(seat_config->name, "*") == 0) { | ||
146 | continue; | ||
147 | } | ||
148 | |||
144 | /* Also destroy seats that aren't present in new config */ | 149 | /* Also destroy seats that aren't present in new config */ |
145 | if (new_config && list_seq_find(new_config->seat_configs, | 150 | if (new_config && list_seq_find(new_config->seat_configs, |
146 | seat_name_cmp, seat_config->name) < 0) { | 151 | seat_name_cmp, seat_config->name) < 0) { |
diff --git a/sway/input/cursor.c b/sway/input/cursor.c index c38d8d3a..01aae79d 100644 --- a/sway/input/cursor.c +++ b/sway/input/cursor.c | |||
@@ -1459,7 +1459,11 @@ void handle_pointer_constraint(struct wl_listener *listener, void *data) { | |||
1459 | void sway_cursor_constrain(struct sway_cursor *cursor, | 1459 | void sway_cursor_constrain(struct sway_cursor *cursor, |
1460 | struct wlr_pointer_constraint_v1 *constraint) { | 1460 | struct wlr_pointer_constraint_v1 *constraint) { |
1461 | struct seat_config *config = seat_get_config(cursor->seat); | 1461 | struct seat_config *config = seat_get_config(cursor->seat); |
1462 | if (config->allow_constrain == CONSTRAIN_DISABLE) { | 1462 | if (!config) { |
1463 | config = seat_get_config_by_name("*"); | ||
1464 | } | ||
1465 | |||
1466 | if (!config || config->allow_constrain == CONSTRAIN_DISABLE) { | ||
1463 | return; | 1467 | return; |
1464 | } | 1468 | } |
1465 | 1469 | ||