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

Reply via email to