raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=1e83d963d905447588a91e1beafd382631d447bd

commit 1e83d963d905447588a91e1beafd382631d447bd
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Thu Nov 9 11:38:35 2017 +0900

    elput - ref device that is in the event queue
---
 src/lib/elput/elput_evdev.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/lib/elput/elput_evdev.c b/src/lib/elput/elput_evdev.c
index afa42df68c..b41fbe508b 100644
--- a/src/lib/elput/elput_evdev.c
+++ b/src/lib/elput/elput_evdev.c
@@ -1596,6 +1596,15 @@ _tablet_tool_tip(struct libinput_device *idev, struct 
libinput_event_tablet_tool
 }
 
 static void
+_switch_event_free(void *data EINA_UNUSED, void *event)
+{
+   Elput_Event_Switch *ev = event;
+
+   _evdev_device_destroy(ev->device);
+   free(ev);
+}
+
+static void
 _switch_toggle(struct libinput_device *idev, struct libinput_event_switch 
*event)
 {
    Elput_Event_Switch *ev;
@@ -1603,10 +1612,11 @@ _switch_toggle(struct libinput_device *idev, struct 
libinput_event_switch *event
    ev = calloc(1, sizeof(Elput_Event_Switch));
    if (!ev) return;
    ev->device = libinput_device_get_user_data(idev);
+   ev->device->refs++;
    ev->time_usec = libinput_event_switch_get_time_usec(event);
    ev->type = (Elput_Switch_Type)libinput_event_switch_get_switch(event);
    ev->state = 
(Elput_Switch_State)libinput_event_switch_get_switch_state(event);
-   ecore_event_add(ELPUT_EVENT_SWITCH, ev, NULL, NULL);
+   ecore_event_add(ELPUT_EVENT_SWITCH, ev, _switch_event_free, NULL);
 }
 
 int

-- 


Reply via email to