forked from enlightenment/efl
evas: Remove group_del override from smart clipped
This commit is contained in:
parent
230b234891
commit
e380dae4bc
|
@ -148,7 +148,6 @@ _edje_object_efl_canvas_group_group_del(Eo *obj, Edje *ed)
|
||||||
_edje_block_violate(ed);
|
_edje_block_violate(ed);
|
||||||
ed->delete_me = 1;
|
ed->delete_me = 1;
|
||||||
_edje_edjes = eina_inlist_remove(_edje_edjes, EINA_INLIST_GET(ed));
|
_edje_edjes = eina_inlist_remove(_edje_edjes, EINA_INLIST_GET(ed));
|
||||||
evas_object_smart_data_set(obj, NULL);
|
|
||||||
if (_edje_lua_script_only(ed)) _edje_lua_script_only_shutdown(ed);
|
if (_edje_lua_script_only(ed)) _edje_lua_script_only_shutdown(ed);
|
||||||
#ifdef HAVE_EPHYSICS
|
#ifdef HAVE_EPHYSICS
|
||||||
/* clear physics world / shutdown ephysics */
|
/* clear physics world / shutdown ephysics */
|
||||||
|
|
|
@ -408,7 +408,6 @@ _evas_box_efl_canvas_group_group_add(Eo *eo_obj, Evas_Object_Box_Data *priv)
|
||||||
cso = evas_object_smart_data_get(eo_obj);
|
cso = evas_object_smart_data_get(eo_obj);
|
||||||
priv->base = *cso;
|
priv->base = *cso;
|
||||||
evas_object_smart_data_set(eo_obj, priv);
|
evas_object_smart_data_set(eo_obj, priv);
|
||||||
free(cso);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
|
|
|
@ -49,6 +49,7 @@ struct _Evas_Smart_Data
|
||||||
Eina_Bool update_boundingbox_needed : 1;
|
Eina_Bool update_boundingbox_needed : 1;
|
||||||
Eina_Bool group_del_called : 1;
|
Eina_Bool group_del_called : 1;
|
||||||
Eina_Bool unclipped : 1; /* If true, NOT a smart_clipped object */
|
Eina_Bool unclipped : 1; /* If true, NOT a smart_clipped object */
|
||||||
|
Eina_Bool data_nofree : 1; /* If true, do NOT free the data */
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
|
@ -130,7 +131,13 @@ EAPI void
|
||||||
evas_object_smart_data_set(Evas_Object *eo_obj, void *data)
|
evas_object_smart_data_set(Evas_Object *eo_obj, void *data)
|
||||||
{
|
{
|
||||||
EVAS_OBJECT_SMART_GET_OR_RETURN(eo_obj);
|
EVAS_OBJECT_SMART_GET_OR_RETURN(eo_obj);
|
||||||
o->data = data;
|
if (o->data != data)
|
||||||
|
{
|
||||||
|
if (o->data && !o->data_nofree)
|
||||||
|
free(o->data);
|
||||||
|
o->data = data;
|
||||||
|
o->data_nofree = EINA_TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void *
|
EAPI void *
|
||||||
|
@ -517,17 +524,21 @@ evas_object_smart_members_get_direct(const Evas_Object *eo_obj)
|
||||||
return o->contained;
|
return o->contained;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_efl_canvas_group_group_members_all_del_internal(Evas_Smart_Data *o)
|
||||||
|
{;
|
||||||
|
Evas_Object_Protected_Data *memobj;
|
||||||
|
Eina_Inlist *itrn;
|
||||||
|
EINA_INLIST_FOREACH_SAFE(o->contained, itrn, memobj)
|
||||||
|
efl_del(memobj->object);
|
||||||
|
o->group_del_called = EINA_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_efl_canvas_group_group_members_all_del(Evas_Object *eo_obj)
|
_efl_canvas_group_group_members_all_del(Evas_Object *eo_obj)
|
||||||
{
|
{
|
||||||
Evas_Smart_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
|
Evas_Smart_Data *o = efl_data_scope_get(eo_obj, MY_CLASS);
|
||||||
Evas_Object_Protected_Data *memobj;
|
_efl_canvas_group_group_members_all_del_internal(o);
|
||||||
Eina_Inlist *itrn;
|
|
||||||
EINA_INLIST_FOREACH_SAFE(o->contained, itrn, memobj)
|
|
||||||
{
|
|
||||||
evas_object_del((Evas_Object *)((Evas_Object_Protected_Data *)memobj->object));
|
|
||||||
}
|
|
||||||
o->group_del_called = EINA_TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -630,6 +641,8 @@ EOLIAN static void
|
||||||
_efl_canvas_group_efl_object_destructor(Eo *eo_obj, Evas_Smart_Data *o)
|
_efl_canvas_group_efl_object_destructor(Eo *eo_obj, Evas_Smart_Data *o)
|
||||||
{
|
{
|
||||||
efl_destructor(efl_super(eo_obj, MY_CLASS));
|
efl_destructor(efl_super(eo_obj, MY_CLASS));
|
||||||
|
if (o->data && !o->data_nofree)
|
||||||
|
free(o->data);
|
||||||
if (!o->group_del_called)
|
if (!o->group_del_called)
|
||||||
{
|
{
|
||||||
ERR("efl_canvas_group_del() was not called on this object: %p (%s)",
|
ERR("efl_canvas_group_del() was not called on this object: %p (%s)",
|
||||||
|
@ -709,8 +722,21 @@ _efl_canvas_group_group_add(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED)
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
_efl_canvas_group_group_del(Eo *eo_obj EINA_UNUSED, Evas_Smart_Data *o EINA_UNUSED)
|
_efl_canvas_group_group_del(Eo *eo_obj EINA_UNUSED, Evas_Smart_Data *o)
|
||||||
{
|
{
|
||||||
|
if (!o->unclipped)
|
||||||
|
{
|
||||||
|
Evas_Object_Smart_Clipped_Data *cso = o->data;
|
||||||
|
Eo *clipper;
|
||||||
|
|
||||||
|
if (cso && cso->clipper)
|
||||||
|
{
|
||||||
|
clipper = cso->clipper;
|
||||||
|
cso->clipper = NULL;
|
||||||
|
efl_del(clipper);
|
||||||
|
}
|
||||||
|
_efl_canvas_group_group_members_all_del_internal(o);
|
||||||
|
}
|
||||||
o->group_del_called = EINA_TRUE;
|
o->group_del_called = EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ evas_object_smart_clipped_clipper_get(const Evas_Object *eo_obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
evas_object_smart_clipped_smart_add(Evas_Object *eo_obj, Evas_Object_Smart_Clipped_Data *cso)
|
evas_object_smart_clipped_init(Evas_Object *eo_obj, Evas_Object_Smart_Clipped_Data *cso)
|
||||||
{
|
{
|
||||||
Evas_Object *clipper;
|
Evas_Object *clipper;
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ evas_object_smart_clipped_smart_add_legacy(Evas_Object *eo_obj)
|
||||||
Evas_Object_Smart_Clipped_Data *cso;
|
Evas_Object_Smart_Clipped_Data *cso;
|
||||||
|
|
||||||
cso = calloc(1, sizeof(*cso));
|
cso = calloc(1, sizeof(*cso));
|
||||||
evas_object_smart_clipped_smart_add(eo_obj, cso);
|
evas_object_smart_clipped_init(eo_obj, cso);
|
||||||
}
|
}
|
||||||
|
|
||||||
EOLIAN static void
|
EOLIAN static void
|
||||||
|
@ -57,11 +57,11 @@ _efl_canvas_group_clipped_efl_canvas_group_group_add(Eo *eo_obj, void *_pd EINA_
|
||||||
Evas_Object_Smart_Clipped_Data *cso;
|
Evas_Object_Smart_Clipped_Data *cso;
|
||||||
|
|
||||||
cso = evas_object_smart_data_get(eo_obj);
|
cso = evas_object_smart_data_get(eo_obj);
|
||||||
evas_object_smart_clipped_smart_add(eo_obj, cso);
|
evas_object_smart_clipped_init(eo_obj, cso);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
evas_object_smart_clipped_smart_del(Evas_Object *eo_obj)
|
evas_object_smart_clipped_smart_del_legacy(Evas_Object *eo_obj)
|
||||||
{
|
{
|
||||||
CSO_DATA_GET_OR_RETURN(eo_obj, cso);
|
CSO_DATA_GET_OR_RETURN(eo_obj, cso);
|
||||||
|
|
||||||
|
@ -73,19 +73,6 @@ evas_object_smart_clipped_smart_del(Evas_Object *eo_obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
_efl_canvas_group_group_members_all_del(eo_obj);
|
_efl_canvas_group_group_members_all_del(eo_obj);
|
||||||
|
|
||||||
/* If it's a legacy smart object, we should free the cso. */
|
|
||||||
if (!efl_isa(eo_obj, MY_CLASS))
|
|
||||||
free(cso);
|
|
||||||
|
|
||||||
evas_object_smart_data_set(eo_obj, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
EOLIAN static void
|
|
||||||
_efl_canvas_group_clipped_efl_canvas_group_group_del(Eo *eo_obj, void *_pd 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
|
static void
|
||||||
|
@ -232,7 +219,7 @@ evas_object_smart_clipped_smart_set(Evas_Smart_Class *sc)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
sc->add = evas_object_smart_clipped_smart_add_legacy;
|
sc->add = evas_object_smart_clipped_smart_add_legacy;
|
||||||
sc->del = evas_object_smart_clipped_smart_del;
|
sc->del = evas_object_smart_clipped_smart_del_legacy;
|
||||||
sc->move = evas_object_smart_clipped_smart_move;
|
sc->move = evas_object_smart_clipped_smart_move;
|
||||||
sc->show = evas_object_smart_clipped_smart_show;
|
sc->show = evas_object_smart_clipped_smart_show;
|
||||||
sc->hide = evas_object_smart_clipped_smart_hide;
|
sc->hide = evas_object_smart_clipped_smart_hide;
|
||||||
|
@ -261,7 +248,7 @@ evas_object_smart_clipped_class_get(void)
|
||||||
/* Internal EO APIs and hidden overrides */
|
/* Internal EO APIs and hidden overrides */
|
||||||
|
|
||||||
#define EFL_CANVAS_GROUP_CLIPPED_EXTRA_OPS \
|
#define EFL_CANVAS_GROUP_CLIPPED_EXTRA_OPS \
|
||||||
EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_canvas_group_clipped)
|
EFL_CANVAS_GROUP_ADD_OPS(efl_canvas_group_clipped)
|
||||||
|
|
||||||
#include "canvas/efl_canvas_group_clipped.eo.c"
|
#include "canvas/efl_canvas_group_clipped.eo.c"
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue