forked from enlightenment/efl
oops. on evas_free nested smart objects might just not clean up right.. fix
SVN revision: 7263
This commit is contained in:
parent
1df7a5135b
commit
84544019f0
|
@ -54,7 +54,7 @@ evas_layer_pre_free(Evas_Layer *lay)
|
|||
Evas_Object *obj;
|
||||
|
||||
obj = (Evas_Object *)l;
|
||||
evas_object_del(obj);
|
||||
if (!obj->smart.parent) evas_object_del(obj);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -77,17 +77,32 @@ evas_free(Evas *e)
|
|||
{
|
||||
Evas_Object_List *l;
|
||||
int i;
|
||||
int del = 1;
|
||||
|
||||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||
return;
|
||||
MAGIC_CHECK_END();
|
||||
|
||||
for (l = (Evas_Object_List *)(e->layers); l; l = l->next)
|
||||
while (del != 0)
|
||||
{
|
||||
Evas_Layer *lay;
|
||||
del = 0;
|
||||
for (l = (Evas_Object_List *)(e->layers); l; l = l->next)
|
||||
{
|
||||
Evas_Layer *lay;
|
||||
Evas_Object_List *ll;
|
||||
|
||||
lay = (Evas_Layer *)l;
|
||||
evas_layer_pre_free(lay);
|
||||
for (ll = (Evas_Object_List *)lay->objects; ll; ll = ll->next)
|
||||
{
|
||||
Evas_Object *o;
|
||||
|
||||
o = (Evas_Object *)ll;
|
||||
if (!o->delete_me)
|
||||
del += o->delete_me;
|
||||
}
|
||||
}
|
||||
|
||||
lay = (Evas_Layer *)l;
|
||||
evas_layer_pre_free(lay);
|
||||
}
|
||||
while (e->layers)
|
||||
{
|
||||
|
|
|
@ -19,7 +19,6 @@ evas_object_new(void)
|
|||
void
|
||||
evas_object_free(Evas_Object *obj, int clean_layer)
|
||||
{
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_FREE, NULL);
|
||||
evas_object_grabs_cleanup(obj);
|
||||
evas_object_intercept_cleanup(obj);
|
||||
evas_object_smart_cleanup(obj);
|
||||
|
@ -419,6 +418,7 @@ evas_object_del(Evas_Object *obj)
|
|||
obj->layer->evas->focused = NULL;
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_OUT, NULL);
|
||||
}
|
||||
evas_object_event_callback_call(obj, EVAS_CALLBACK_FREE, NULL);
|
||||
evas_object_grabs_cleanup(obj);
|
||||
evas_object_hide(obj);
|
||||
while (obj->clip.clipees) evas_object_clip_unset(obj->clip.clipees->data);
|
||||
|
|
|
@ -284,6 +284,7 @@ struct _Evas
|
|||
Evas_Hash *name_hash;
|
||||
|
||||
char changed : 1;
|
||||
char walking_layers : 1;
|
||||
|
||||
int events_frozen;
|
||||
|
||||
|
@ -320,6 +321,7 @@ struct _Evas_Layer
|
|||
Evas *evas;
|
||||
|
||||
void *engine_data;
|
||||
char delete_me : 1;
|
||||
};
|
||||
|
||||
struct _Evas_Object
|
||||
|
|
Loading…
Reference in New Issue