edje: remove device callbacks on canvas del
avoid some race conditions when devices change during destructor Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
This commit is contained in:
parent
de667f889e
commit
21f96c2a71
|
@ -723,6 +723,20 @@ _edje_device_changed_cb(void *data, const Efl_Event *event)
|
|||
_edje_seat_event_filter_apply(ed, seat);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue