defer queued saves for 0.25 sec

SVN revision: 22527
This commit is contained in:
Carsten Haitzler 2006-05-11 07:00:29 +00:00
parent 0f82e95afe
commit 5730e23fd9
1 changed files with 13 additions and 12 deletions

View File

@ -12,13 +12,13 @@
EAPI E_Config *e_config = NULL; EAPI E_Config *e_config = NULL;
/* local subsystem functions */ /* local subsystem functions */
static void _e_config_save_cb(void *data); static int _e_config_save_cb(void *data);
static void _e_config_free(void); static void _e_config_free(void);
static int _e_config_cb_timer(void *data); static int _e_config_cb_timer(void *data);
/* local subsystem globals */ /* local subsystem globals */
static int _e_config_save_block = 0; static int _e_config_save_block = 0;
static Ecore_Job *_e_config_save_job = NULL; static Ecore_Timer *_e_config_save_timer = NULL;
static char *_e_config_profile = NULL; static char *_e_config_profile = NULL;
static E_Config_DD *_e_config_edd = NULL; static E_Config_DD *_e_config_edd = NULL;
@ -1263,10 +1263,10 @@ e_config_descriptor_new(const char *name, int size)
EAPI int EAPI int
e_config_save(void) e_config_save(void)
{ {
if (_e_config_save_job) if (_e_config_save_timer)
{ {
ecore_job_del(_e_config_save_job); ecore_timer_del(_e_config_save_timer);
_e_config_save_job = NULL; _e_config_save_timer = NULL;
} }
_e_config_save_cb(NULL); _e_config_save_cb(NULL);
return e_config_domain_save("e", _e_config_edd, e_config); return e_config_domain_save("e", _e_config_edd, e_config);
@ -1275,10 +1275,10 @@ e_config_save(void)
EAPI void EAPI void
e_config_save_flush(void) e_config_save_flush(void)
{ {
if (_e_config_save_job) if (_e_config_save_timer)
{ {
ecore_job_del(_e_config_save_job); ecore_timer_del(_e_config_save_timer);
_e_config_save_job = NULL; _e_config_save_timer = NULL;
_e_config_save_cb(NULL); _e_config_save_cb(NULL);
} }
} }
@ -1286,8 +1286,8 @@ e_config_save_flush(void)
EAPI void EAPI void
e_config_save_queue(void) e_config_save_queue(void)
{ {
if (_e_config_save_job) ecore_job_del(_e_config_save_job); if (_e_config_save_timer) ecore_timer_del(_e_config_save_timer);
_e_config_save_job = ecore_job_add(_e_config_save_cb, NULL); _e_config_save_timer = ecore_timer_add(0.25, _e_config_save_cb, NULL);
} }
EAPI char * EAPI char *
@ -1575,13 +1575,14 @@ e_config_binding_wheel_match(E_Config_Binding_Wheel *eb_in)
} }
/* local subsystem functions */ /* local subsystem functions */
static void static int
_e_config_save_cb(void *data) _e_config_save_cb(void *data)
{ {
e_config_profile_save(); e_config_profile_save();
e_module_save_all(); e_module_save_all();
e_config_domain_save("e", _e_config_edd, e_config); e_config_domain_save("e", _e_config_edd, e_config);
_e_config_save_job = NULL; _e_config_save_timer = NULL;
return 0;
} }
static void static void