forked from enlightenment/enlightenment
delay order re-load from monitor signal
SVN revision: 46351
This commit is contained in:
parent
1a705408c8
commit
c5ab22f34a
|
@ -152,6 +152,7 @@ e_order_clear(E_Order *eo)
|
||||||
static void
|
static void
|
||||||
_e_order_free(E_Order *eo)
|
_e_order_free(E_Order *eo)
|
||||||
{
|
{
|
||||||
|
if (eo->delay) ecore_timer_del(eo->delay);
|
||||||
E_FREE_LIST(eo->desktops, efreet_desktop_free);
|
E_FREE_LIST(eo->desktops, efreet_desktop_free);
|
||||||
if (eo->path) eina_stringshare_del(eo->path);
|
if (eo->path) eina_stringshare_del(eo->path);
|
||||||
if (eo->monitor) ecore_file_monitor_del(eo->monitor);
|
if (eo->monitor) ecore_file_monitor_del(eo->monitor);
|
||||||
|
@ -159,16 +160,25 @@ _e_order_free(E_Order *eo)
|
||||||
free(eo);
|
free(eo);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static int
|
||||||
_e_order_cb_monitor(void *data, Ecore_File_Monitor *em, Ecore_File_Event event, const char *path)
|
_e_order_cb_monitor_delay(void *data)
|
||||||
{
|
{
|
||||||
E_Order *eo;
|
E_Order *eo = data;
|
||||||
|
|
||||||
eo = data;
|
|
||||||
|
|
||||||
/* It doesn't really matter what the change is, just re-read the file */
|
/* It doesn't really matter what the change is, just re-read the file */
|
||||||
_e_order_read(eo);
|
_e_order_read(eo);
|
||||||
if (eo->cb.update) eo->cb.update(eo->cb.data, 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
|
static void
|
||||||
|
|
|
@ -18,6 +18,7 @@ struct _E_Order
|
||||||
const char *path;
|
const char *path;
|
||||||
Eina_List *desktops; /* A list of Efreet_Desktop files this .order contains */
|
Eina_List *desktops; /* A list of Efreet_Desktop files this .order contains */
|
||||||
Ecore_File_Monitor *monitor; /* Check for changes int the .order file */
|
Ecore_File_Monitor *monitor; /* Check for changes int the .order file */
|
||||||
|
Ecore_Timer *delay;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
void (*update)(void *data, E_Order *eo);
|
void (*update)(void *data, E_Order *eo);
|
||||||
|
|
Loading…
Reference in New Issue