Keep track of order objects.

SVN revision: 29358
This commit is contained in:
Sebastian Dransfeld 2007-04-04 22:25:41 +00:00
parent 2d102509d2
commit 4d0bd7c9b5
3 changed files with 36 additions and 0 deletions

View File

@ -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);

View File

@ -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);
}

View File

@ -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);