Enlightenment CVS committal Author : englebass Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: e_main.c e_order.c Log Message: ref and free desktops for .order files. =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_main.c,v retrieving revision 1.225 retrieving revision 1.226 diff -u -3 -r1.225 -r1.226 --- e_main.c 24 Jul 2007 18:47:24 -0000 1.225 +++ e_main.c 26 Jul 2007 12:29:52 -0000 1.226 @@ -903,11 +903,6 @@ /* if we were flagged to restart, then restart. */ if (restart) { - /* selected shutdown */ -#if 0 - e_ipc_shutdown(); - ecore_file_shutdown(); -#endif e_util_env_set("E_RESTART_OK", "1"); ecore_app_restart(); } =================================================================== RCS file: /cvs/e/e17/apps/e/src/bin/e_order.c,v retrieving revision 1.26 retrieving revision 1.27 diff -u -3 -r1.26 -r1.27 --- e_order.c 26 Jul 2007 11:34:09 -0000 1.26 +++ e_order.c 26 Jul 2007 12:29:52 -0000 1.27 @@ -68,10 +68,15 @@ EAPI void e_order_remove(E_Order *eo, Efreet_Desktop *desktop) { + Evas_List *tmp; + E_OBJECT_CHECK(eo); E_OBJECT_TYPE_CHECK(eo, E_ORDER_TYPE); - eo->desktops = evas_list_remove(eo->desktops, desktop); + tmp = evas_list_find_list(eo->desktops, desktop); + if (!tmp) return; + efreet_desktop_free(tmp->data); + eo->desktops = evas_list_remove_list(eo->desktops, tmp); _e_order_save(eo); } @@ -81,6 +86,7 @@ E_OBJECT_CHECK(eo); E_OBJECT_TYPE_CHECK(eo, E_ORDER_TYPE); + efreet_desktop_ref(desktop); eo->desktops = evas_list_append(eo->desktops, desktop); _e_order_save(eo); } @@ -91,6 +97,7 @@ E_OBJECT_CHECK(eo); E_OBJECT_TYPE_CHECK(eo, E_ORDER_TYPE); + efreet_desktop_ref(desktop); eo->desktops = evas_list_prepend_relative(eo->desktops, desktop, before); _e_order_save(eo); } @@ -144,7 +151,10 @@ E_OBJECT_TYPE_CHECK(eo, E_ORDER_TYPE); while (eo->desktops) - eo->desktops = evas_list_remove_list(eo->desktops, eo->desktops); + { + efreet_desktop_free(eo->desktops->data); + eo->desktops = evas_list_remove_list(eo->desktops, eo->desktops); + } _e_order_save(eo); } @@ -152,7 +162,11 @@ static void _e_order_free(E_Order *eo) { - evas_list_free(eo->desktops); + while (eo->desktops) + { + efreet_desktop_free(eo->desktops->data); + eo->desktops = evas_list_remove_list(eo->desktops, eo->desktops); + } if (eo->path) evas_stringshare_del(eo->path); if (eo->monitor) ecore_file_monitor_del(eo->monitor); orders = evas_list_remove(orders, eo); @@ -177,7 +191,11 @@ FILE *f; char *dir; - eo->desktops = evas_list_free(eo->desktops); + while (eo->desktops) + { + efreet_desktop_free(eo->desktops->data); + eo->desktops = evas_list_remove_list(eo->desktops, eo->desktops); + } if (!eo->path) return; dir = ecore_file_dir_get(eo->path); @@ -208,7 +226,11 @@ if (!desktop) desktop = efreet_desktop_get(ecore_file_file_get(buf)); if (!desktop) - desktop = efreet_util_desktop_file_id_find(ecore_file_file_get(buf)); + { + desktop = efreet_util_desktop_file_id_find(ecore_file_file_get(buf)); + /* Need to ref this as we only get a cache pointer from efreet_util */ + if (desktop) efreet_desktop_ref(desktop); + } if (desktop) eo->desktops = evas_list_append(eo->desktops, desktop); } } @@ -283,6 +305,7 @@ { if (l2->data == event->current) { + efreet_desktop_free(l2->data); eo->desktops = evas_list_remove_list(eo->desktops, l2); changed = 1; } @@ -303,6 +326,8 @@ { if (l2->data == event->previous) { + efreet_desktop_free(l2->data); + efreet_desktop_ref(event->current); l2->data = event->current; changed = 1; } ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs