evas: properly disable Evas_Object event catching once we can't access Evas anymore.

This commit is contained in:
Cedric BAIL 2017-02-27 15:00:55 -08:00
parent 5420ebaf32
commit 30c5225bec
3 changed files with 8 additions and 0 deletions

View File

@ -724,3 +724,9 @@ evas_object_callback_init(Efl_Canvas_Object *eo_obj, Evas_Object_Protected_Data
{
efl_event_callback_array_add(eo_obj, event_catcher_watch(), obj);
}
void
evas_object_callback_shutdown(Efl_Canvas_Object *eo_obj, Evas_Object_Protected_Data *obj)
{
efl_event_callback_array_del(eo_obj, event_catcher_watch(), obj);
}

View File

@ -397,6 +397,7 @@ evas_object_free(Evas_Object *eo_obj, Eina_Bool clean_layer)
int was_smart_child = 0;
evas_object_callback_shutdown(eo_obj, obj);
if (efl_isa(eo_obj, EFL_CANVAS_IMAGE_INTERNAL_CLASS))
_evas_object_image_free(eo_obj);
evas_object_map_set(eo_obj, NULL);

View File

@ -1636,6 +1636,7 @@ void evas_object_clip_across_clippees_check(Evas_Object *obj, Evas_Object_Protec
void evas_object_mapped_clip_across_mark(Evas_Object *obj, Evas_Object_Protected_Data *pd);
void evas_event_callback_call(Evas *e, Evas_Callback_Type type, void *event_info);
void evas_object_callback_init(Efl_Canvas_Object *eo_obj, Evas_Object_Protected_Data *obj);
void evas_object_callback_shutdown(Efl_Canvas_Object *eo_obj, Evas_Object_Protected_Data *obj);
void evas_object_event_callback_call(Evas_Object *obj, Evas_Object_Protected_Data *pd, Evas_Callback_Type type, void *event_info, int event_id, const Efl_Event_Description *efl_event_desc);
Eina_List *evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y);
int evas_mem_free(int mem_required);