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 --
