delay order re-load from monitor signal

SVN revision: 46351
This commit is contained in:
Carsten Haitzler 2010-02-22 08:04:41 +00:00
parent 1a705408c8
commit c5ab22f34a
2 changed files with 17 additions and 6 deletions

View File

@ -152,6 +152,7 @@ e_order_clear(E_Order *eo)
static void
_e_order_free(E_Order *eo)
{
if (eo->delay) ecore_timer_del(eo->delay);
E_FREE_LIST(eo->desktops, efreet_desktop_free);
if (eo->path) eina_stringshare_del(eo->path);
if (eo->monitor) ecore_file_monitor_del(eo->monitor);
@ -159,16 +160,25 @@ _e_order_free(E_Order *eo)
free(eo);
}
static void
_e_order_cb_monitor(void *data, Ecore_File_Monitor *em, Ecore_File_Event event, const char *path)
static int
_e_order_cb_monitor_delay(void *data)
{
E_Order *eo;
eo = data;
E_Order *eo = data;
/* It doesn't really matter what the change is, just re-read the file */
_e_order_read(eo);
if (eo->cb.update) eo->cb.update(eo->cb.data, eo);
eo->delay = NULL;
return 0;
}
static void
_e_order_cb_monitor(void *data, Ecore_File_Monitor *em, Ecore_File_Event event, const char *path)
{
E_Order *eo = data;
if (eo->delay) ecore_timer_del(eo->delay);
eo->delay = ecore_timer_add(0.2, _e_order_cb_monitor_delay, eo);
}
static void

View File

@ -18,6 +18,7 @@ struct _E_Order
const char *path;
Eina_List *desktops; /* A list of Efreet_Desktop files this .order contains */
Ecore_File_Monitor *monitor; /* Check for changes int the .order file */
Ecore_Timer *delay;
struct {
void (*update)(void *data, E_Order *eo);