Enlightenment CVS committal Author : dj2 Project : e17 Module : libs/ewl
Dir : e17/libs/ewl/src/lib Modified Files: ewl_engines.c Log Message: - code/memory cleanup =================================================================== RCS file: /cvs/e/e17/libs/ewl/src/lib/ewl_engines.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -3 -r1.30 -r1.31 --- ewl_engines.c 20 Dec 2006 20:03:24 -0000 1.30 +++ ewl_engines.c 22 Dec 2006 18:20:44 -0000 1.31 @@ -18,7 +18,6 @@ static Ecore_Hash *ewl_engines = NULL; static void ewl_engine_free(Ewl_Engine *engine); -static void ewl_engines_cb_engine_free(void *data); static void **ewl_engine_hooks_get(Ewl_Engine *engine, Ewl_Engine_Hook_Type type); static void *ewl_engine_hook_get(Ewl_Embed *embed, Ewl_Engine_Hook_Type type, int hook); @@ -41,7 +40,7 @@ DRETURN_INT(FALSE, DLEVEL_STABLE); ecore_hash_set_free_key(ewl_engines, ECORE_FREE_CB(free)); - ecore_hash_set_free_value(ewl_engines, ewl_engines_cb_engine_free); + ecore_hash_set_free_value(ewl_engines, ECORE_FREE_CB(ewl_engine_free)); DRETURN_INT(TRUE, DLEVEL_STABLE); } @@ -113,9 +112,9 @@ { Ewl_Engine *engine = NULL; Ewl_Engine *(*create_engine)(void); - Ecore_List *(*dependancies)(void); + Ecore_DList *(*dependancies)(void); Ecore_DList *deps = NULL; - Ecore_List *dep_list; + Ecore_DList *dep_list; void *handle; char filename[PATH_MAX]; @@ -165,19 +164,26 @@ { char *dep_name; + /* this doesn't have a free callback attached to it because + * the engines are cached and the _shutdown() function will + * cleanup the cache */ deps = ecore_dlist_new(); - - ecore_list_goto_first(dep_list); - while ((dep_name = ecore_list_next(dep_list))) + while ((dep_name = ecore_list_remove_first(dep_list))) { Ewl_Engine *parent; parent = ewl_engine_new(dep_name); - if (!parent) DRETURN_PTR(NULL, DLEVEL_STABLE); + if (!parent) + { + FREE(dep_name); + ecore_dlist_destroy(dep_list); + DRETURN_PTR(NULL, DLEVEL_STABLE); + } ecore_dlist_append(deps, parent); + FREE(dep_name); } - ecore_list_destroy(dep_list); + ecore_dlist_destroy(dep_list); } create_engine = dlsym(handle, "ewl_engine_create"); @@ -1546,19 +1552,4 @@ IF_FREE(engine->name); FREE(engine); } - -static void -ewl_engines_cb_engine_free(void *data) -{ - Ewl_Engine *engine; - - DENTER_FUNCTION(DLEVEL_STABLE); - DCHECK_PARAM_PTR("data", data); - - engine = data; - ewl_engine_free(engine); - - DLEAVE_FUNCTION(DLEVEL_STABLE); -} - ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs