edje: fix animation memory leak.

if object is destructed on canvas animation,
its internal resource is leaked.

Here simple fix brings stopping animation before deleting obj.

@fix
This commit is contained in:
Hermet Park 2020-05-26 14:37:10 +09:00
parent c0c5bc71c5
commit 461a709e7f
1 changed files with 12 additions and 9 deletions

View File

@ -1881,14 +1881,6 @@ _edje_file_del(Edje *ed)
if (rp->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
_edje_entry_real_part_shutdown(ed, rp);
if (rp->object)
{
_edje_callbacks_focus_del(rp->object, ed);
_edje_callbacks_del(rp->object, ed);
evas_object_del(rp->object);
rp->object = NULL;
}
if (rp->custom)
{
// xxx: lua2
@ -1956,7 +1948,10 @@ _edje_file_del(Edje *ed)
(rp->typedata.vector))
{
if (rp->typedata.vector->anim)
efl_del(rp->typedata.vector->anim);
{
efl_canvas_object_animation_stop(rp->object);
efl_del(rp->typedata.vector->anim);
}
if (rp->typedata.vector->lottie_virtual_file)
eina_file_close(rp->typedata.vector->lottie_virtual_file);
if (rp->typedata.vector->lottie_data)
@ -1966,6 +1961,14 @@ _edje_file_del(Edje *ed)
rp->typedata.vector = NULL;
}
if (rp->object)
{
_edje_callbacks_focus_del(rp->object, ed);
_edje_callbacks_del(rp->object, ed);
evas_object_del(rp->object);
rp->object = NULL;
}
/* Cleanup optional part. */
free(rp->drag);
rp->drag = NULL;