On Thu, 28 Nov 2019 15:43:17 +0800 (CST) Jing  <chenjing...@126.com> said:

> Thanks Hermet for you reply.
> 
> 
> In my test, i find that if i call function edje_object_file_set(Edje_Object
> *obj, const char *file, const char *group), even i call
> evas_object_del(Edje_Object *obj); to delete the obj, the memory of my
> program will keep growing, if i am not use edje_object_file_set() then this
> issue will not exists.  Is there a way to free the memory of
> edje_object_file_set() ? Please advise, thanks.

Memory will be freed... is it possible you are not getting any rendering
happening? e.g. if you do something like:

for (i = 0; i < 100000; i++) {
  o = edje_object_add(evas);
  edje_object_del(o);
}

your memory will keep growing ad the objects will be queued for deletion after
2 more renders. you would need the main loop to go idle *AND* for there to be
visible changes in the canvas needing rendering. evas_norender(evas); exists
for these cases where you do a loop where you add/del objects and never show
them or have them rendered (and just use the canvas as a workbench). this
forces a "no rendering" render cycle that will clean up queued objects.

it's exceedingly rare to do the above without having your canvas go through
some rendering at some point.

also edje will QUEUE signals and process them in idle time. if there is never
any idle time in the ecore mainloop then the signals will just queue up and
not be processed. setting a file will produce some signals already (like "load"
"").

> At 2019-11-26 12:24:45, "Hermet Park" <hermetp...@gmail.com> wrote:
> >Once object is deleted, the subsequent memory belonging to the object will
> >be removed as well.
> >You don't need to care about it. Callbacks neither.
> >
> >On Mon, Nov 25, 2019 at 9:12 PM Jing <chenjing...@126.com> wrote:
> >
> >> Hi all,
> >> I have some memory free questions when using below two functions:
> >>
> >>
> >> 1.  EAPI Eina_Bool edje_object_file_set(Evas_Object *obj, const char
> >> *file, const char *group);
> >> ---  After this function done,  i will call  evas_object_del (obj) to
> >> delete the obj,  anything else that i need to free ?  For example, the edj
> >> file used in this funciton?
> >>
> >>
> >> 2.  evas_object_event_callback_add(Evas_Object *eo_obj, Evas_Callback_Type
> >> type, Evas_Object_Event_Cb func, const void *data)
> >> ---- After this function done,  i will call  evas_object_del (obj) to
> >> delete the obj,   the callback will be auto deleted after evas_object_del
> >> or  i have to use  evas_object_event_callback_del(Evas_Object *eo_obj,
> >> Evas_Callback_Type type, Evas_Object_Event_Cb func) to delete ?
> >>
> >>
> >> Thanks.
> >>
> >>
> >> _______________________________________________
> >> enlightenment-devel mailing list
> >> enlightenment-devel@lists.sourceforge.net
> >> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> >>
> >
> >
> >-- 
> >Regards, Hermet
> >
> >_______________________________________________
> >enlightenment-devel mailing list
> >enlightenment-devel@lists.sourceforge.net
> >https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
Carsten Haitzler - ras...@rasterman.com



_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to