_edje_clean_objects(ed);
_edje_unref(ed);
_edje_lib_unref();
+ efl_canvas_group_del(efl_super(obj, MY_CLASS));
}
EOLIAN static void
eina_stringshare_del(sd->access_info);
eina_stringshare_del(sd->accessible_name);
evas_object_smart_data_set(obj, NULL);
+ efl_canvas_group_del(efl_super(obj, MY_CLASS));
}
static void
EOLIAN static void
_efl_canvas_video_efl_canvas_group_group_del(Evas_Object *obj EINA_UNUSED, Efl_Canvas_Video_Data *sd)
{
- if (!sd) return;
if (sd->engine_instance)
{
emotion_engine_instance_file_close(sd->engine_instance);
if (sd->smartobj) evas_object_smart_data_set(sd->smartobj, NULL);
sd->smartobj = NULL;
EINA_REFCOUNT_UNREF(sd) _smart_data_free(sd);
+ efl_canvas_group_del(efl_super(obj, MY_CLASS));
}
EOLIAN static void
class.constructor;
class.destructor;
Efl.Object.constructor;
+ Efl.Object.destructor;
Efl.Canvas.Object.no_render { set; }
Efl.Canvas.Object.paragraph_direction { get; set; }
}
Eina_Bool deletions_waiting : 1;
Eina_Bool need_recalculate : 1;
Eina_Bool update_boundingbox_needed : 1;
+ Eina_Bool group_del_called : 1;
};
typedef struct
{
evas_object_del((Evas_Object *)((Evas_Object_Protected_Data *)memobj->object));
}
+ o->group_del_called = EINA_TRUE;
}
static void
return eo_obj;
}
+EOLIAN static void
+_efl_canvas_group_efl_object_destructor(Eo *eo_obj, Evas_Smart_Data *o)
+{
+ efl_destructor(efl_super(eo_obj, MY_CLASS));
+ if (!o->group_del_called)
+ {
+ ERR("efl_canvas_group_del() was not called on this object: %p (%s)",
+ eo_obj, efl_class_name_get(eo_obj));
+ }
+}
+
EAPI void
evas_object_smart_move_children_relative(Eo *eo_obj, Evas_Coord dx, Evas_Coord dy)
{
EOLIAN static void
_efl_canvas_group_group_del(Eo *eo_obj EINA_UNUSED, Evas_Smart_Data *o EINA_UNUSED)
{
+ o->group_del_called = EINA_TRUE;
}
EOLIAN static void
_efl_canvas_group_clipped_efl_canvas_group_group_del(Eo *eo_obj, Evas_Object_Smart_Clipped_Data *obj EINA_UNUSED)
{
evas_object_smart_clipped_smart_del(eo_obj);
+ // group_del_called was already set to true, no need to call super here.
}
static void
void evas_object_smart_render_cache_set(Evas_Object *eo_obj, void *data);
const Eina_Inlist *evas_object_smart_members_get_direct(const Evas_Object *obj);
-void _efl_canvas_group_group_members_all_del(Evas_Object *obj);
+void _efl_canvas_group_group_members_all_del(Evas_Object *eo_obj);
void _evas_object_smart_xy_update(Eo *eo_obj, Evas_Coord *px, Evas_Coord *py, Evas_Coord x, Evas_Coord y);
void evas_call_smarts_calculate(Evas *e);
void evas_object_smart_bounding_box_update(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);