From: Hermet Park Date: Tue, 26 May 2020 05:37:10 +0000 (+0900) Subject: edje: fix animation memory leak. X-Git-Tag: accepted/tizen/unified/20200604.164556~96 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2dd18ec40fc788af843d771873cfa386b7778d07;p=platform%2Fupstream%2Fefl.git 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 --- diff --git a/src/lib/edje/edje_load.c b/src/lib/edje/edje_load.c index e7cfa7e..8a46da0 100644 --- a/src/lib/edje/edje_load.c +++ b/src/lib/edje/edje_load.c @@ -1931,14 +1931,6 @@ _edje_file_del(Edje *ed, Eina_Bool reuse_ic) // } - 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 @@ -2009,7 +2001,10 @@ _edje_file_del(Edje *ed, Eina_Bool reuse_ic) (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) @@ -2019,6 +2014,14 @@ _edje_file_del(Edje *ed, Eina_Bool reuse_ic) 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;