Enlightenment CVS committal

Author  : devilhorns
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_int_menus.c 


Log Message:
Leaks-be-gone. Thanks metrics, rephorm :)

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_int_menus.c,v
retrieving revision 1.178
retrieving revision 1.179
diff -u -3 -r1.178 -r1.179
--- e_int_menus.c       16 Oct 2006 14:26:02 -0000      1.178
+++ e_int_menus.c       17 Oct 2006 03:10:27 -0000      1.179
@@ -49,6 +49,7 @@
 static void _e_int_menus_clients_cleanup_cb  (void *data, E_Menu *m, 
E_Menu_Item *mi);
 static void _e_int_menus_virtuals_pre_cb     (void *data, E_Menu *m);
 static void _e_int_menus_virtuals_item_cb    (void *data, E_Menu *m, 
E_Menu_Item *mi);
+static void _e_int_menus_virtuals_free_hook  (void *obj);
 static void _e_int_menus_themes_about        (void *data, E_Menu *m, 
E_Menu_Item *mi);
 static void _e_int_menus_lost_clients_pre_cb    (void *data, E_Menu *m);
 static void _e_int_menus_lost_clients_free_hook (void *obj);
@@ -61,8 +62,10 @@
 static void _e_int_menus_shelves_item_cb     (void *data, E_Menu *m, 
E_Menu_Item *mi);
 static void _e_int_menus_shelves_add_cb      (void *data, E_Menu *m, 
E_Menu_Item *mi);
 static void _e_int_menus_shelves_del_cb      (void *data, E_Menu *m, 
E_Menu_Item *mi);
+static void _e_int_menus_shelves_free_hook   (void *obj);
 static void _e_int_menus_main_showhide       (void *data, E_Menu *m, 
E_Menu_Item *mi);
 static void _e_int_menus_desk_item_cb        (void *data, E_Menu *m, 
E_Menu_Item *mi);
+static void _e_int_menus_desks_free_hook     (void *obj);
 
 /* local subsystem globals */
 static Evas_Hash *_e_int_menus_augmentation = NULL;
@@ -187,13 +190,15 @@
    e_menu_item_label_set(mi, _("Virtual"));
    e_util_menu_item_edje_icon_set(mi, "enlightenment/desktops");
    e_menu_pre_activate_callback_set(subm, _e_int_menus_virtuals_pre_cb, NULL);
+   e_object_free_attach_func_set(E_OBJECT(subm), 
_e_int_menus_virtuals_free_hook);
    e_menu_item_submenu_set(mi, subm);
 
-   subm = e_int_menus_shelves_new();
+   subm = e_menu_new();
    mi = e_menu_item_new(m);
    e_menu_item_label_set(mi, _("Shelves"));
    e_util_menu_item_edje_icon_set(mi, "enlightenment/shelf");
    e_menu_pre_activate_callback_set(subm, _e_int_menus_shelves_pre_cb, NULL);
+   e_object_free_attach_func_set(E_OBJECT(subm), 
_e_int_menus_shelves_free_hook);
    e_menu_item_submenu_set(mi, subm);
 
    mi = e_menu_item_new(m);
@@ -203,7 +208,8 @@
    e_menu_item_label_set(mi, _("Show/Hide All Windows"));
    e_util_menu_item_edje_icon_set(mi, "enlightenment/showhide");
    e_menu_item_callback_set(mi, _e_int_menus_main_showhide, NULL);
-   
+
+   e_object_free_attach_func_set(E_OBJECT(m), _e_int_menus_desks_free_hook);
    return m;
 }
 
@@ -265,16 +271,6 @@
 }
 
 EAPI E_Menu *
-e_int_menus_shelves_new(void)
-{
-   E_Menu *m;
-
-   m = e_menu_new();
-   e_menu_pre_activate_callback_set(m, _e_int_menus_shelves_pre_cb, NULL);
-   return m;
-}
-
-EAPI E_Menu *
 e_int_menus_sys_new(void)
 {
    E_Menu *m;
@@ -333,6 +329,54 @@
 }
 
 /* local subsystem functions */
+static void
+_e_int_menus_desks_free_hook(void *obj)
+{
+   E_Menu *m;
+   Evas_List *l;
+   
+   m = obj;
+   for (l = m->items; l; l = l->next)
+     {
+       E_Menu_Item *mi;
+       
+       mi = l->data;
+       if (mi->submenu) e_object_del(E_OBJECT(mi->submenu));
+     }
+}
+
+static void
+_e_int_menus_virtuals_free_hook(void *obj)
+{
+   E_Menu *m;
+   Evas_List *l;
+   
+   m = obj;
+   for (l = m->items; l; l = l->next)
+     {
+       E_Menu_Item *mi;
+       
+       mi = l->data;
+       if (mi->submenu) e_object_del(E_OBJECT(mi->submenu));
+     }
+}
+
+static void
+_e_int_menus_shelves_free_hook(void *obj)
+{
+   E_Menu *m;
+   Evas_List *l;
+   
+   m = obj;
+   for (l = m->items; l; l = l->next)
+     {
+       E_Menu_Item *mi;
+       
+       mi = l->data;
+       if (mi->submenu) e_object_del(E_OBJECT(mi->submenu));
+     }
+}
+
 static void
 _e_int_menus_main_del_hook(void *obj)
 {



-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to