forked from enlightenment/efl
edje: implement invalidate method and unset device callbacks here
prevent crashing in dangling callbacks ref d26124a6d818f62d892e178d92098f5159a8c9e0 Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
This commit is contained in:
parent
cd8952cc6c
commit
db92072338
|
@ -1850,6 +1850,22 @@ _edje_object_collect(Edje *ed)
|
||||||
return collect;
|
return collect;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_edje_file_callbacks_del(Edje *ed, Evas *e)
|
||||||
|
{
|
||||||
|
Evas *tev = e;
|
||||||
|
|
||||||
|
if (!tev) tev = evas_object_evas_get(ed->obj);
|
||||||
|
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,
|
||||||
|
_edje_device_removed_cb, ed);
|
||||||
|
if (ed->collection && ed->collection->use_custom_seat_names)
|
||||||
|
efl_event_callback_del(tev, EFL_CANVAS_EVENT_DEVICE_CHANGED,
|
||||||
|
_edje_device_changed_cb, ed);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_edje_file_del(Edje *ed)
|
_edje_file_del(Edje *ed)
|
||||||
{
|
{
|
||||||
|
@ -1863,15 +1879,7 @@ _edje_file_del(Edje *ed)
|
||||||
|
|
||||||
if (tev)
|
if (tev)
|
||||||
{
|
{
|
||||||
efl_event_callback_del(tev, EFL_EVENT_DEL, _edje_device_canvas_del, ed);
|
_edje_file_callbacks_del(ed, tev);
|
||||||
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,
|
|
||||||
_edje_device_removed_cb, ed);
|
|
||||||
if (ed->collection && ed->collection->use_custom_seat_names)
|
|
||||||
efl_event_callback_del(tev, EFL_CANVAS_EVENT_DEVICE_CHANGED,
|
|
||||||
_edje_device_changed_cb, ed);
|
|
||||||
|
|
||||||
evas_event_freeze(tev);
|
evas_event_freeze(tev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2497,6 +2497,7 @@ EAPI void _edje_edd_shutdown(void);
|
||||||
|
|
||||||
int _edje_object_file_set_internal(Evas_Object *obj, const Eina_File *file, const char *group, const char *parent, Eina_List *group_path, Eina_Array *nested);
|
int _edje_object_file_set_internal(Evas_Object *obj, const Eina_File *file, const char *group, const char *parent, Eina_List *group_path, Eina_Array *nested);
|
||||||
|
|
||||||
|
void _edje_file_callbacks_del(Edje *ed, Evas *e);
|
||||||
void _edje_file_del(Edje *ed);
|
void _edje_file_del(Edje *ed);
|
||||||
void _edje_file_free(Edje_File *edf);
|
void _edje_file_free(Edje_File *edf);
|
||||||
void _edje_file_cache_shutdown(void);
|
void _edje_file_cache_shutdown(void);
|
||||||
|
|
|
@ -47,6 +47,12 @@ _efl_canvas_layout_efl_object_constructor(Eo *obj, Edje *ed)
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EOLIAN static void
|
||||||
|
_efl_canvas_layout_efl_object_invalidate(Eo *obj EINA_UNUSED, Edje *ed)
|
||||||
|
{
|
||||||
|
_edje_file_callbacks_del(ed, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
_efl_canvas_layout_efl_object_debug_name_override(Eo *obj, Edje *ed, Eina_Strbuf *sb)
|
_efl_canvas_layout_efl_object_debug_name_override(Eo *obj, Edje *ed, Eina_Strbuf *sb)
|
||||||
{
|
{
|
||||||
|
|
|
@ -84,6 +84,7 @@ class Efl.Canvas.Layout (Efl.Canvas.Group, Efl.File, Efl.Container, Efl.Part,
|
||||||
Efl.Gfx.position { set; }
|
Efl.Gfx.position { set; }
|
||||||
Efl.Gfx.size { set; }
|
Efl.Gfx.size { set; }
|
||||||
Efl.Object.constructor;
|
Efl.Object.constructor;
|
||||||
|
Efl.Object.invalidate;
|
||||||
Efl.Object.debug_name_override;
|
Efl.Object.debug_name_override;
|
||||||
Efl.Canvas.Object.no_render { set; }
|
Efl.Canvas.Object.no_render { set; }
|
||||||
Efl.Canvas.Object.paragraph_direction { set; }
|
Efl.Canvas.Object.paragraph_direction { set; }
|
||||||
|
|
Loading…
Reference in New Issue