aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Brian Ashworth <bosrsf04@gmail.com>2019-02-03 14:00:37 -0500
committerLibravatar Drew DeVault <sir@cmpwn.com>2019-02-11 10:12:43 -0500
commit743d34538333e4111a71fad32668335dff9a4822 (patch)
tree27cbb7d1e727a4fe520e4a3100bc87e3d494b8de
parentMerge pull request #3551 from c-edw/RevertDoubleFrees (diff)
downloadsway-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
-rw-r--r--sway/config.c5
-rw-r--r--sway/input/cursor.c6
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) {
1459void sway_cursor_constrain(struct sway_cursor *cursor, 1459void 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