summaryrefslogtreecommitdiff
path: root/src/lib/elput/elput_input.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/elput/elput_input.c')
-rw-r--r--src/lib/elput/elput_input.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/lib/elput/elput_input.c b/src/lib/elput/elput_input.c
index 90246119e0..5134a67635 100644
--- a/src/lib/elput/elput_input.c
+++ b/src/lib/elput/elput_input.c
@@ -123,8 +123,14 @@ _udev_seat_destroy(Elput_Seat *eseat)
123 _evdev_device_destroy(edev); 123 _evdev_device_destroy(edev);
124 124
125 if (eseat->kbd) _evdev_keyboard_destroy(eseat->kbd); 125 if (eseat->kbd) _evdev_keyboard_destroy(eseat->kbd);
126 eseat->kbd = NULL;
126 if (eseat->ptr) _evdev_pointer_destroy(eseat->ptr); 127 if (eseat->ptr) _evdev_pointer_destroy(eseat->ptr);
128 eseat->ptr = NULL;
127 if (eseat->touch) _evdev_touch_destroy(eseat->touch); 129 if (eseat->touch) _evdev_touch_destroy(eseat->touch);
130 eseat->touch = NULL;
131 if (eseat->manager->input.seats)
132 eseat->manager->input.seats = eina_list_remove(eseat->manager->input.seats, eseat);
133 if (eseat->refs) return;
128 134
129 eina_stringshare_del(eseat->name); 135 eina_stringshare_del(eseat->name);
130 free(eseat); 136 free(eseat);
@@ -429,12 +435,13 @@ EAPI void
429elput_input_shutdown(Elput_Manager *manager) 435elput_input_shutdown(Elput_Manager *manager)
430{ 436{
431 Elput_Seat *seat; 437 Elput_Seat *seat;
438 Eina_List *l, *ll;
432 439
433 EINA_SAFETY_ON_NULL_RETURN(manager); 440 EINA_SAFETY_ON_NULL_RETURN(manager);
434 441
435 ecore_main_fd_handler_del(manager->input.hdlr); 442 ecore_main_fd_handler_del(manager->input.hdlr);
436 443
437 EINA_LIST_FREE(manager->input.seats, seat) 444 EINA_LIST_FOREACH_SAFE(manager->input.seats, l, ll, seat)
438 _udev_seat_destroy(seat); 445 _udev_seat_destroy(seat);
439 446
440 if (manager->input.thread) 447 if (manager->input.thread)