disable clock+time gadget updating during dpms

This commit is contained in:
Mike Blumenkrantz 2017-07-14 18:44:22 -04:00
parent c895a7fae5
commit 2290657f36
4 changed files with 52 additions and 8 deletions

View File

@ -839,6 +839,20 @@ _clock_time_update(void *d EINA_UNUSED, int type EINA_UNUSED, void *event EINA_U
return ECORE_CALLBACK_PASS_ON;
}
static Eina_Bool
_clock_screensaver_on()
{
E_FREE_FUNC(update_today, ecore_timer_del);
return ECORE_CALLBACK_RENEW;
}
static Eina_Bool
_clock_screensaver_off()
{
if (clock_instances) _update_today_timer(NULL);
return ECORE_CALLBACK_RENEW;
}
/* module setup */
E_API E_Module_Api e_modapi =
{
@ -901,6 +915,8 @@ e_modapi_init(E_Module *m)
E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_SELF_RENAME, _clock_eio_update, NULL);
E_LIST_HANDLER_APPEND(handlers, E_EVENT_SYS_RESUME, _clock_time_update, NULL);
E_LIST_HANDLER_APPEND(handlers, ECORE_EVENT_SYSTEM_TIMEDATE_CHANGED, _clock_time_update, NULL);
E_LIST_HANDLER_APPEND(handlers, E_EVENT_SCREENSAVER_ON, _clock_screensaver_on, NULL);
E_LIST_HANDLER_APPEND(handlers, E_EVENT_SCREENSAVER_OFF, _clock_screensaver_off, NULL);
e_gadcon_provider_register(&_gadcon_class);

View File

@ -526,3 +526,14 @@ time_config_update(Config_Item *ci)
E_FREE_FUNC(clock_timer, ecore_timer_del);
e_config_save_queue();
}
EINTERN void
clock_timer_set(Eina_Bool set)
{
if (set)
{
if (clock_instances) _clock_timer(NULL);
}
else
E_FREE_FUNC(clock_timer, ecore_timer_del);
}

View File

@ -86,6 +86,7 @@ EINTERN Evas_Object *digital_clock_wizard(E_Gadget_Wizard_End_Cb cb, void *data)
EINTERN Evas_Object *analog_clock_wizard(E_Gadget_Wizard_End_Cb cb, void *data);
EINTERN void clock_popup_new(Instance *inst);
EINTERN void time_config_update(Config_Item *ci);
EINTERN void clock_timer_set(Eina_Bool set);
extern Config *time_config;
extern Eina_List *clock_instances;

View File

@ -329,6 +329,20 @@ _clock_eio_error(void *d EINA_UNUSED, int type EINA_UNUSED, void *event)
return ECORE_CALLBACK_PASS_ON;
}
static Eina_Bool
_clock_screensaver_on()
{
clock_timer_set(0);
return ECORE_CALLBACK_RENEW;
}
static Eina_Bool
_clock_screensaver_off()
{
clock_timer_set(1);
return ECORE_CALLBACK_RENEW;
}
EINTERN void
time_init(void)
{
@ -339,14 +353,16 @@ time_init(void)
if (ecore_file_is_dir("/etc"))
clock_tzetc_monitor = eio_monitor_add("/etc");
E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_ERROR, _clock_eio_error, NULL);
E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_FILE_CREATED, _clock_eio_update, NULL);
E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_FILE_MODIFIED, _clock_eio_update, NULL);
E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_FILE_DELETED, _clock_eio_update, NULL);
E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_SELF_DELETED, _clock_eio_update, NULL);
E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_SELF_RENAME, _clock_eio_update, NULL);
E_LIST_HANDLER_APPEND(handlers, E_EVENT_SYS_RESUME, _clock_time_update, NULL);
E_LIST_HANDLER_APPEND(handlers, ECORE_EVENT_SYSTEM_TIMEDATE_CHANGED, _clock_time_update, NULL);
E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_ERROR, _clock_eio_error, NULL);
E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_FILE_CREATED, _clock_eio_update, NULL);
E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_FILE_MODIFIED, _clock_eio_update, NULL);
E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_FILE_DELETED, _clock_eio_update, NULL);
E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_SELF_DELETED, _clock_eio_update, NULL);
E_LIST_HANDLER_APPEND(handlers, EIO_MONITOR_SELF_RENAME, _clock_eio_update, NULL);
E_LIST_HANDLER_APPEND(handlers, E_EVENT_SYS_RESUME, _clock_time_update, NULL);
E_LIST_HANDLER_APPEND(handlers, ECORE_EVENT_SYSTEM_TIMEDATE_CHANGED, _clock_time_update, NULL);
E_LIST_HANDLER_APPEND(handlers, E_EVENT_SCREENSAVER_ON, _clock_screensaver_on, NULL);
E_LIST_HANDLER_APPEND(handlers, E_EVENT_SCREENSAVER_OFF, _clock_screensaver_off, NULL);
_update_today_timer(NULL);
}