cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=21f96c2a71441ab22908a6e7044caa80955bb023
commit 21f96c2a71441ab22908a6e7044caa80955bb023 Author: Cedric BAIL <[email protected]> Date: Tue Mar 20 12:46:51 2018 -0400 edje: remove device callbacks on canvas del avoid some race conditions when devices change during destructor Signed-off-by: Mike Blumenkrantz <[email protected]> --- src/lib/edje/edje_load.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/lib/edje/edje_load.c b/src/lib/edje/edje_load.c index f2cef1bff4..609b60213c 100644 --- a/src/lib/edje/edje_load.c +++ b/src/lib/edje/edje_load.c @@ -724,6 +724,20 @@ _edje_device_changed_cb(void *data, const Efl_Event *event) } static void +_edje_device_canvas_del(void *data, const Efl_Event *event) +{ + Edje *ed = data; + efl_event_callback_del(event->object, EFL_CANVAS_EVENT_DEVICE_ADDED, + _edje_device_added_cb, ed); + efl_event_callback_del(event->object, EFL_CANVAS_EVENT_DEVICE_REMOVED, + _edje_device_removed_cb, ed); + + if (ed->collection && ed->collection->use_custom_seat_names) + efl_event_callback_del(event->object, EFL_CANVAS_EVENT_DEVICE_CHANGED, + _edje_device_changed_cb, ed); +} + +static void _edje_devices_add(Edje *ed, Evas *tev) { const Eina_List *devices, *l; @@ -735,6 +749,7 @@ _edje_devices_add(Edje *ed, Evas *tev) if (efl_input_device_type_get(dev) == EFL_INPUT_DEVICE_TYPE_SEAT) _edje_device_add(ed, dev); } + efl_event_callback_add(tev, EFL_EVENT_DEL, _edje_device_canvas_del, ed); efl_event_callback_add(tev, EFL_CANVAS_EVENT_DEVICE_ADDED, _edje_device_added_cb, ed); @@ -1848,6 +1863,7 @@ _edje_file_del(Edje *ed) if (tev) { + efl_event_callback_del(tev, EFL_EVENT_DEL, _edje_device_canvas_del, ed); efl_event_callback_del(tev, EFL_CANVAS_EVENT_DEVICE_ADDED, _edje_device_added_cb, ed); efl_event_callback_del(tev, EFL_CANVAS_EVENT_DEVICE_REMOVED, --
