aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Tony Crisci <tony@dubstepdish.com>2018-04-02 13:19:58 -0400
committerLibravatar Tony Crisci <tony@dubstepdish.com>2018-04-02 13:19:58 -0400
commit22287b42bf323457d779b1023764ade83313b199 (patch)
treeed053057234d2bedb58e679234a6d4ac132f4986
parentremove unused attachment config (diff)
downloadsway-22287b42bf323457d779b1023764ade83313b199.tar.gz
sway-22287b42bf323457d779b1023764ade83313b199.tar.zst
sway-22287b42bf323457d779b1023764ade83313b199.zip
dont copy input config
-rw-r--r--include/sway/input/input-manager.h8
-rw-r--r--sway/input/input-manager.c28
-rw-r--r--sway/input/keyboard.c2
3 files changed, 20 insertions, 18 deletions
diff --git a/include/sway/input/input-manager.h b/include/sway/input/input-manager.h
index 8515c738..8e39a4a7 100644
--- a/include/sway/input/input-manager.h
+++ b/include/sway/input/input-manager.h
@@ -14,7 +14,6 @@ extern struct sway_input_manager *input_manager;
14struct sway_input_device { 14struct sway_input_device {
15 char *identifier; 15 char *identifier;
16 struct wlr_input_device *wlr_device; 16 struct wlr_input_device *wlr_device;
17 struct input_config *config;
18 struct wl_list link; 17 struct wl_list link;
19 struct wl_listener device_destroy; 18 struct wl_listener device_destroy;
20}; 19};
@@ -49,7 +48,12 @@ struct sway_seat *input_manager_get_default_seat(
49struct sway_seat *input_manager_get_seat(struct sway_input_manager *input, 48struct sway_seat *input_manager_get_seat(struct sway_input_manager *input,
50 const char *seat_name); 49 const char *seat_name);
51 50
52/** Gets the last seat the user interacted with */ 51/**
52 * Gets the last seat the user interacted with
53 */
53struct sway_seat *input_manager_current_seat(struct sway_input_manager *input); 54struct sway_seat *input_manager_current_seat(struct sway_input_manager *input);
54 55
56struct input_config *input_device_get_config(struct sway_input_device *device);
57
58
55#endif 59#endif
diff --git a/sway/input/input-manager.c b/sway/input/input-manager.c
index 34d5b4cf..34aed115 100644
--- a/sway/input/input-manager.c
+++ b/sway/input/input-manager.c
@@ -95,7 +95,7 @@ static bool input_has_seat_configuration(struct sway_input_manager *input) {
95static void input_manager_libinput_config_pointer( 95static void input_manager_libinput_config_pointer(
96 struct sway_input_device *input_device) { 96 struct sway_input_device *input_device) {
97 struct wlr_input_device *wlr_device = input_device->wlr_device; 97 struct wlr_input_device *wlr_device = input_device->wlr_device;
98 struct input_config *ic = input_device->config; 98 struct input_config *ic = input_device_get_config(input_device);
99 struct libinput_device *libinput_device; 99 struct libinput_device *libinput_device;
100 100
101 if (!ic || !wlr_input_device_is_libinput(wlr_device)) { 101 if (!ic || !wlr_input_device_is_libinput(wlr_device)) {
@@ -196,7 +196,6 @@ static void handle_device_destroy(struct wl_listener *listener, void *data) {
196 196
197 wl_list_remove(&input_device->link); 197 wl_list_remove(&input_device->link);
198 wl_list_remove(&input_device->device_destroy.link); 198 wl_list_remove(&input_device->device_destroy.link);
199 free_input_config(input_device->config);
200 free(input_device->identifier); 199 free(input_device->identifier);
201 free(input_device); 200 free(input_device);
202} 201}
@@ -219,16 +218,6 @@ static void handle_new_input(struct wl_listener *listener, void *data) {
219 wlr_log(L_DEBUG, "adding device: '%s'", 218 wlr_log(L_DEBUG, "adding device: '%s'",
220 input_device->identifier); 219 input_device->identifier);
221 220
222 // find config
223 for (int i = 0; i < config->input_configs->length; ++i) {
224 struct input_config *input_config = config->input_configs->items[i];
225 if (strcmp(input_config->identifier, input_device->identifier) == 0) {
226 free_input_config(input_device->config);
227 input_device->config = copy_input_config(input_config);
228 break;
229 }
230 }
231
232 if (input_device->wlr_device->type == WLR_INPUT_DEVICE_POINTER) { 221 if (input_device->wlr_device->type == WLR_INPUT_DEVICE_POINTER) {
233 input_manager_libinput_config_pointer(input_device); 222 input_manager_libinput_config_pointer(input_device);
234 } 223 }
@@ -320,9 +309,6 @@ void input_manager_apply_input_config(struct sway_input_manager *input,
320 struct sway_input_device *input_device = NULL; 309 struct sway_input_device *input_device = NULL;
321 wl_list_for_each(input_device, &input->devices, link) { 310 wl_list_for_each(input_device, &input->devices, link) {
322 if (strcmp(input_device->identifier, input_config->identifier) == 0) { 311 if (strcmp(input_device->identifier, input_config->identifier) == 0) {
323 free_input_config(input_device->config);
324 input_device->config = copy_input_config(input_config);
325
326 if (input_device->wlr_device->type == WLR_INPUT_DEVICE_POINTER) { 312 if (input_device->wlr_device->type == WLR_INPUT_DEVICE_POINTER) {
327 input_manager_libinput_config_pointer(input_device); 313 input_manager_libinput_config_pointer(input_device);
328 } 314 }
@@ -410,3 +396,15 @@ struct sway_seat *input_manager_get_default_seat(
410 } 396 }
411 return seat; 397 return seat;
412} 398}
399
400struct input_config *input_device_get_config(struct sway_input_device *device) {
401 struct input_config *input_config = NULL;
402 for (int i = 0; i < config->input_configs->length; ++i) {
403 input_config = config->input_configs->items[i];
404 if (strcmp(input_config->identifier, device->identifier) == 0) {
405 return input_config;
406 }
407 }
408
409 return NULL;
410}
diff --git a/sway/input/keyboard.c b/sway/input/keyboard.c
index 99685052..41068652 100644
--- a/sway/input/keyboard.c
+++ b/sway/input/keyboard.c
@@ -428,7 +428,7 @@ void sway_keyboard_configure(struct sway_keyboard *keyboard) {
428 struct xkb_rule_names rules; 428 struct xkb_rule_names rules;
429 memset(&rules, 0, sizeof(rules)); 429 memset(&rules, 0, sizeof(rules));
430 struct input_config *input_config = 430 struct input_config *input_config =
431 keyboard->seat_device->input_device->config; 431 input_device_get_config(keyboard->seat_device->input_device);
432 struct wlr_input_device *wlr_device = 432 struct wlr_input_device *wlr_device =
433 keyboard->seat_device->input_device->wlr_device; 433 keyboard->seat_device->input_device->wlr_device;
434 434