diff options
-rw-r--r-- | sway/config/seat.c | 3 | ||||
-rw-r--r-- | sway/input/input-manager.c | 9 | ||||
-rw-r--r-- | sway/input/seat.c | 1 |
3 files changed, 9 insertions, 4 deletions
diff --git a/sway/config/seat.c b/sway/config/seat.c index 4c9e8d0d..113139e8 100644 --- a/sway/config/seat.c +++ b/sway/config/seat.c | |||
@@ -14,6 +14,7 @@ struct seat_config *new_seat_config(const char* name) { | |||
14 | sway_log(L_DEBUG, "new_seat_config(%s)", name); | 14 | sway_log(L_DEBUG, "new_seat_config(%s)", name); |
15 | seat->name = strdup(name); | 15 | seat->name = strdup(name); |
16 | if (!sway_assert(seat->name, "could not allocate name for seat")) { | 16 | if (!sway_assert(seat->name, "could not allocate name for seat")) { |
17 | free(seat); | ||
17 | return NULL; | 18 | return NULL; |
18 | } | 19 | } |
19 | 20 | ||
@@ -21,6 +22,8 @@ struct seat_config *new_seat_config(const char* name) { | |||
21 | seat->attachments = create_list(); | 22 | seat->attachments = create_list(); |
22 | if (!sway_assert(seat->attachments, | 23 | if (!sway_assert(seat->attachments, |
23 | "could not allocate seat attachments list")) { | 24 | "could not allocate seat attachments list")) { |
25 | free(seat->name); | ||
26 | free(seat); | ||
24 | return NULL; | 27 | return NULL; |
25 | } | 28 | } |
26 | 29 | ||
diff --git a/sway/input/input-manager.c b/sway/input/input-manager.c index b20b7b7e..4459c43b 100644 --- a/sway/input/input-manager.c +++ b/sway/input/input-manager.c | |||
@@ -119,10 +119,11 @@ static void input_add_notify(struct wl_listener *listener, void *data) { | |||
119 | 119 | ||
120 | bool added = false; | 120 | bool added = false; |
121 | wl_list_for_each(seat, &input->seats, link) { | 121 | wl_list_for_each(seat, &input->seats, link) { |
122 | if (seat->config && | 122 | bool has_attachment = seat->config && |
123 | (seat_config_get_attachment(seat->config, | 123 | (seat_config_get_attachment(seat->config, input_device->identifier) || |
124 | input_device->identifier) || | 124 | seat_config_get_attachment(seat->config, "*")); |
125 | seat_config_get_attachment(seat->config, "*"))) { | 125 | |
126 | if (has_attachment) { | ||
126 | sway_seat_add_device(seat, input_device); | 127 | sway_seat_add_device(seat, input_device); |
127 | added = true; | 128 | added = true; |
128 | } | 129 | } |
diff --git a/sway/input/seat.c b/sway/input/seat.c index df1427fa..fe90565a 100644 --- a/sway/input/seat.c +++ b/sway/input/seat.c | |||
@@ -30,6 +30,7 @@ struct sway_seat *sway_seat_create(struct sway_input_manager *input, | |||
30 | 30 | ||
31 | seat->wlr_seat = wlr_seat_create(input->server->wl_display, seat_name); | 31 | seat->wlr_seat = wlr_seat_create(input->server->wl_display, seat_name); |
32 | if (!sway_assert(seat->wlr_seat, "could not allocate seat")) { | 32 | if (!sway_assert(seat->wlr_seat, "could not allocate seat")) { |
33 | free(seat); | ||
33 | return NULL; | 34 | return NULL; |
34 | } | 35 | } |
35 | 36 | ||