From 4d0bd7c9b5e9f1a3a312a37276698de81fd62561 Mon Sep 17 00:00:00 2001 From: Sebastian Dransfeld Date: Wed, 4 Apr 2007 22:25:41 +0000 Subject: [PATCH] Keep track of order objects. SVN revision: 29358 --- src/bin/e_main.c | 8 ++++++++ src/bin/e_order.c | 25 +++++++++++++++++++++++++ src/bin/e_order.h | 3 +++ 3 files changed, 36 insertions(+) diff --git a/src/bin/e_main.c b/src/bin/e_main.c index 7d35fbd70..609da42f6 100644 --- a/src/bin/e_main.c +++ b/src/bin/e_main.c @@ -819,6 +819,14 @@ main(int argc, char **argv) } _e_main_shutdown_push(e_desklock_shutdown); + TS("order"); + if (!e_order_init()) + { + e_error_message_show(_("Enlightenment cannot set up its order file system.")); + _e_main_shutdown(-1); + } + _e_main_shutdown_push(e_order_shutdown); + TS("add idle enterers"); /* add in a handler that just before we go idle we flush x */ _e_main_idle_enterer_flusher = ecore_idle_enterer_add(_e_main_cb_x_flusher, NULL); diff --git a/src/bin/e_order.c b/src/bin/e_order.c index 342726f9b..1e4982be4 100644 --- a/src/bin/e_order.c +++ b/src/bin/e_order.c @@ -14,7 +14,29 @@ static void _e_order_cb_monitor (void *data, Ecore_File_Monitor *em, Ecore_File_ static void _e_order_read (E_Order *eo); static void _e_order_save (E_Order *eo); +static Evas_List *orders = NULL; + /* externally accessible functions */ +EAPI int +e_order_init(void) +{ + return 1; +} + +EAPI int +e_order_shutdown(void) +{ + Evas_List *l, *tmp; + + for (l = orders; l;) + { + tmp = l; + l = l->next; + e_object_del(E_OBJECT(tmp->data)); + } + return 1; +} + EAPI E_Order * e_order_new(const char *path) { @@ -29,6 +51,8 @@ e_order_new(const char *path) _e_order_read(eo); eo->monitor = ecore_file_monitor_add(path, _e_order_cb_monitor, eo); + orders = evas_list_append(orders, eo); + return eo; } @@ -121,6 +145,7 @@ _e_order_free(E_Order *eo) evas_list_free(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); free(eo); } diff --git a/src/bin/e_order.h b/src/bin/e_order.h index 58e985880..c0bc6070f 100644 --- a/src/bin/e_order.h +++ b/src/bin/e_order.h @@ -25,6 +25,9 @@ struct _E_Order } cb; }; +EAPI int e_order_init(void); +EAPI int e_order_shutdown(void); + EAPI E_Order *e_order_new(const char *path); EAPI void e_order_update_callback_set(E_Order *eo, void (*cb)(void *data, E_Order *eo), void *data);