aboutsummaryrefslogtreecommitdiffstats
path: root/sway/input/input-manager.c
diff options
context:
space:
mode:
authorLibravatar Tony Crisci <tony@dubstepdish.com>2018-04-02 10:37:31 -0400
committerLibravatar Tony Crisci <tony@dubstepdish.com>2018-04-02 10:37:31 -0400
commit53bb7ea9962c5d97e0672eabcf1b9dfb7ffad0f1 (patch)
tree83856846c12de678ac15b5c41e9623f54df725fd /sway/input/input-manager.c
parentrename input-manager functions (diff)
downloadsway-53bb7ea9962c5d97e0672eabcf1b9dfb7ffad0f1.tar.gz
sway-53bb7ea9962c5d97e0672eabcf1b9dfb7ffad0f1.tar.zst
sway-53bb7ea9962c5d97e0672eabcf1b9dfb7ffad0f1.zip
dont copy seat config on the seat
Diffstat (limited to 'sway/input/input-manager.c')
-rw-r--r--sway/input/input-manager.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/sway/input/input-manager.c b/sway/input/input-manager.c
index 4f3c3ee5..d9d20200 100644
--- a/sway/input/input-manager.c
+++ b/sway/input/input-manager.c
@@ -83,7 +83,8 @@ static struct sway_input_device *input_sway_device_from_wlr(
83static bool input_has_seat_configuration(struct sway_input_manager *input) { 83static bool input_has_seat_configuration(struct sway_input_manager *input) {
84 struct sway_seat *seat = NULL; 84 struct sway_seat *seat = NULL;
85 wl_list_for_each(seat, &input->seats, link) { 85 wl_list_for_each(seat, &input->seats, link) {
86 if (seat->config) { 86 struct seat_config *seat_config = seat_get_config(seat);
87 if (seat_config) {
87 return true; 88 return true;
88 } 89 }
89 } 90 }
@@ -225,11 +226,13 @@ static void handle_new_input(struct wl_listener *listener, void *data) {
225 return; 226 return;
226 } 227 }
227 228
229 struct seat_config *seat_config = seat_get_config(seat);
230
228 bool added = false; 231 bool added = false;
229 wl_list_for_each(seat, &input->seats, link) { 232 wl_list_for_each(seat, &input->seats, link) {
230 bool has_attachment = seat->config && 233 bool has_attachment = config &&
231 (seat_config_get_attachment(seat->config, input_device->identifier) || 234 (seat_config_get_attachment(seat_config, input_device->identifier) ||
232 seat_config_get_attachment(seat->config, "*")); 235 seat_config_get_attachment(seat_config, "*"));
233 236
234 if (has_attachment) { 237 if (has_attachment) {
235 seat_add_device(seat, input_device); 238 seat_add_device(seat, input_device);
@@ -239,7 +242,7 @@ static void handle_new_input(struct wl_listener *listener, void *data) {
239 242
240 if (!added) { 243 if (!added) {
241 wl_list_for_each(seat, &input->seats, link) { 244 wl_list_for_each(seat, &input->seats, link) {
242 if (seat->config && seat->config->fallback == 1) { 245 if (seat_config && seat_config->fallback == 1) {
243 seat_add_device(seat, input_device); 246 seat_add_device(seat, input_device);
244 added = true; 247 added = true;
245 } 248 }
@@ -326,7 +329,7 @@ void input_manager_apply_seat_config(struct sway_input_manager *input,
326 return; 329 return;
327 } 330 }
328 331
329 seat_set_config(seat, seat_config); 332 seat_apply_config(seat, seat_config);
330 333
331 // for every device, try to add it to a seat and if no seat has it 334 // for every device, try to add it to a seat and if no seat has it
332 // attached, add it to the fallback seats. 335 // attached, add it to the fallback seats.
@@ -335,11 +338,12 @@ void input_manager_apply_seat_config(struct sway_input_manager *input,
335 list_t *seat_list = create_list(); 338 list_t *seat_list = create_list();
336 struct sway_seat *seat = NULL; 339 struct sway_seat *seat = NULL;
337 wl_list_for_each(seat, &input->seats, link) { 340 wl_list_for_each(seat, &input->seats, link) {
338 if (!seat->config) { 341 struct seat_config *seat_config = seat_get_config(seat);
342 if (!seat_config) {
339 continue; 343 continue;
340 } 344 }
341 if (seat_config_get_attachment(seat->config, "*") || 345 if (seat_config_get_attachment(seat_config, "*") ||
342 seat_config_get_attachment(seat->config, 346 seat_config_get_attachment(seat_config,
343 input_device->identifier)) { 347 input_device->identifier)) {
344 list_add(seat_list, seat); 348 list_add(seat_list, seat);
345 } 349 }
@@ -362,7 +366,8 @@ void input_manager_apply_seat_config(struct sway_input_manager *input,
362 } 366 }
363 } else { 367 } else {
364 wl_list_for_each(seat, &input->seats, link) { 368 wl_list_for_each(seat, &input->seats, link) {
365 if (seat->config && seat->config->fallback == 1) { 369 struct seat_config *seat_config = seat_get_config(seat);
370 if (seat_config && seat_config->fallback == 1) {
366 seat_add_device(seat, input_device); 371 seat_add_device(seat, input_device);
367 } else { 372 } else {
368 seat_remove_device(seat, input_device); 373 seat_remove_device(seat, input_device);