static Eina_Bool
_e_comp_screensaver_on(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
{
+#if 0
Eina_List *l;
E_Zone *zone;
edje_object_signal_emit(zone->base, "e,state,screensaver,on", "e");
edje_object_signal_emit(zone->over, "e,state,screensaver,on", "e");
}
+#endif
return ECORE_CALLBACK_PASS_ON;
}
static Eina_Bool
_e_comp_screensaver_off(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
{
+#if 0
Eina_List *l;
E_Zone *zone;
E_Client *ec;
E_CLIENT_FOREACH(ec)
if (e_comp_object_damage_exists(ec->frame))
e_comp_object_render_update_add(ec->frame);
+#endif
return ECORE_CALLBACK_PASS_ON;
}
}
e_comp_canvas_fake_layers_init();
- e_screensaver_update();
#ifdef HAVE_HWC
// TO DO : check hwc init condition
#include "e.h"
static Eina_List *handlers;
-static Ecore_Timer *timer_post_screensaver_lock = NULL;
-static Ecore_Timer *timer_post_screensaver_on = NULL;
static void
_e_comp_canvas_cb_del()
{
E_FREE_LIST(handlers, ecore_event_handler_del);
- E_FREE_FUNC(timer_post_screensaver_lock, ecore_timer_del);
- E_FREE_FUNC(timer_post_screensaver_on, ecore_timer_del);
}
static void
{
E_Client *ec;
- e_screensaver_notidle();
if (e_client_action_get()) return;
ec = e_client_focused_get();
if (ec) e_focus_event_mouse_out(ec);
static void
_e_comp_canvas_cb_mouse_down(void *d EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
- e_screensaver_notidle();
- if (e_client_action_get()) return;
+ /* Do nothing */
+ ;
}
static void
_e_comp_canvas_cb_mouse_up(void *d EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
- e_screensaver_notidle();
- if (e_client_action_get()) return;
+ /* Do nothing */
+ ;
}
static void
_e_comp_canvas_cb_mouse_wheel(void *d EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
- e_screensaver_notidle();
- if (e_client_action_get()) return;
+ /* Do nothing */
+ ;
}
static Eina_Bool
_e_comp_cb_key_down(void *data EINA_UNUSED, int ev_type EINA_UNUSED, Ecore_Event_Key *ev)
{
- e_screensaver_notidle();
return !e_comp_wl_key_down(ev);
}
static Eina_Bool
_e_comp_cb_key_up(void *data EINA_UNUSED, int ev_type EINA_UNUSED, Ecore_Event_Key *ev)
{
- e_screensaver_notidle();
return !e_comp_wl_key_up(ev);
}
////////////////////////////////////
-static Eina_Bool
-_e_comp_cb_screensaver_active_delay(void *data EINA_UNUSED)
-{
- ecore_animator_frametime_set(10.0);
- if (!e_comp->nocomp)
- ecore_evas_manual_render_set(e_comp->ee, EINA_TRUE);
- timer_post_screensaver_on = NULL;
- return ECORE_CALLBACK_CANCEL;
-}
-
-static void
-_e_comp_canvas_screensaver_active(void *d EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *sig EINA_UNUSED, const char *src EINA_UNUSED)
-{
- if (timer_post_screensaver_on) return;
- /* thawed in _e_comp_screensaver_off() */
- timer_post_screensaver_on = ecore_timer_add
- (1.0, _e_comp_cb_screensaver_active_delay, NULL);
-}
-
-static Eina_Bool
-_e_comp_cb_screensaver_on()
-{
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_e_comp_cb_screensaver_off()
-{
- E_FREE_FUNC(timer_post_screensaver_lock, ecore_timer_del);
- E_FREE_FUNC(timer_post_screensaver_on, ecore_timer_del);
- return ECORE_CALLBACK_PASS_ON;
-}
-////////////////////////////////////
-
static int
_e_comp_canvas_cb_zone_sort(const void *data1, const void *data2)
{
E_LIST_HANDLER_APPEND(handlers, E_EVENT_ZONE_DEL, _e_comp_cb_zone_change, NULL);
E_LIST_HANDLER_APPEND(handlers, ECORE_EVENT_KEY_DOWN, _e_comp_cb_key_down, NULL);
E_LIST_HANDLER_APPEND(handlers, ECORE_EVENT_KEY_UP, _e_comp_cb_key_up, NULL);
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_SCREENSAVER_ON, _e_comp_cb_screensaver_on, NULL);
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_SCREENSAVER_OFF, _e_comp_cb_screensaver_off, NULL);
ecore_evas_callback_pre_render_set(e_comp->ee, _e_comp_canvas_prerender);
ecore_evas_callback_resize_set(e_comp->ee, _e_comp_canvas_resize);
evas_object_show(o);
zone->over = o = edje_object_add(e_comp->evas);
- edje_object_signal_callback_add(o, "e,state,screensaver,active", "e", _e_comp_canvas_screensaver_active, NULL);
+ //edje_object_signal_callback_add(o, "e,state,screensaver,active", "e", _e_comp_canvas_screensaver_active, NULL);
evas_object_layer_set(o, E_LAYER_MAX);
evas_object_raise(o);
evas_object_name_set(zone->over, "zone->over");
static Eina_Hash *clients_buffer_hash = NULL;
static Eina_List *handlers = NULL;
-static double _last_event_time = 0.0;
static E_Client *cursor_timer_ec = NULL;
static Eina_Bool need_send_leave = EINA_TRUE;
static Eina_Bool need_send_released = EINA_FALSE;
static Eina_Bool
_e_comp_wl_cb_mouse_move(void *d EINA_UNUSED, int t EINA_UNUSED, Ecore_Event_Mouse_Move *ev)
{
- _last_event_time = ecore_loop_time_get();
-
e_comp_wl->ptr.x = wl_fixed_from_int(ev->x);
e_comp_wl->ptr.y = wl_fixed_from_int(ev->y);
- e_screensaver_notidle();
if (e_comp_wl->selection.target &&
(!e_client_has_xwindow(e_comp_wl->selection.target)) &&
e_comp_wl->drag)
E_EVENT_WAYLAND_GLOBAL_ADD = ecore_event_type_new();
- _last_event_time = ecore_loop_time_get();
-
TRACE_DS_END();
return EINA_TRUE;
}
return NULL;
}
-/**
- * Computes the time since the last input event.
- *
- * @returns time in seconds.
- */
-E_API double
-e_comp_wl_idle_time_get(void)
-{
- return (ecore_loop_time_get() - _last_event_time);
-}
-
static E_Comp_Wl_Output *
_e_comp_wl_output_get(Eina_List *outputs, const char *id)
{
{
return EINA_FALSE;
}
- _last_event_time = ecore_loop_time_get();
keycode = (ev->keycode - 8);
if (!(e_comp_wl = e_comp->wl_comp_data))
return EINA_FALSE;
}
- _last_event_time = ecore_loop_time_get();
-
keycode = (ev->keycode - 8);
delivered_key = 0;
if (!(e_comp_wl = e_comp->wl_comp_data))
E_API Eina_Bool e_comp_wl_subsurface_create(E_Client *ec, E_Client *epc, uint32_t id, struct wl_resource *surface_resource);
E_API struct wl_signal e_comp_wl_surface_create_signal_get(void);
-E_API double e_comp_wl_idle_time_get(void);
E_API Eina_Bool e_comp_wl_output_init(const char *id, const char *make, const char *model, int x, int y, int w, int h, int pw, int ph, unsigned int refresh, unsigned int subpixel, unsigned int transform);
E_API void e_comp_wl_output_remove(const char *id);
if (e_comp_wl->drag != drag) return;
e_comp_wl->drag = NULL;
e_comp_wl->drag_client = NULL;
- e_screensaver_inhibit_toggle(0);
if (e_comp_wl->selection.target && (!dropped))
{
struct wl_resource *res;
e_drag_start(e_comp_wl->drag, x, y);
if (e_comp_wl->ptr.ec)
e_comp_wl_data_device_send_enter(e_comp_wl->ptr.ec);
- e_screensaver_inhibit_toggle(1);
e_comp_canvas_feed_mouse_up(0);
}
static int _e_dpms_enabled = EINA_FALSE;
#ifdef HAVE_WAYLAND
-static Eina_List *handlers;
-static Ecore_Timer *standby_timer;
-static Ecore_Timer *suspend_timer;
-static Ecore_Timer *off_timer;
+//static Eina_List *handlers;
+//static Ecore_Timer *standby_timer;
+//static Ecore_Timer *suspend_timer;
+//static Ecore_Timer *off_timer;
#endif
#define STANDBY 5
}
#ifdef HAVE_WAYLAND
-static Eina_Bool
-_e_dpms_standby(void *d EINA_UNUSED)
-{
- if (e_comp->screen && e_comp->screen->dpms)
- e_comp->screen->dpms(1);
- standby_timer = NULL;
- return EINA_FALSE;
-}
-
-static Eina_Bool
-_e_dpms_suspend(void *d EINA_UNUSED)
-{
- if (e_comp->screen && e_comp->screen->dpms)
- e_comp->screen->dpms(2);
- suspend_timer = NULL;
- return EINA_FALSE;
-}
-
-static Eina_Bool
-_e_dpms_off(void *d EINA_UNUSED)
-{
- if (e_comp->screen && e_comp->screen->dpms)
- e_comp->screen->dpms(3);
- off_timer = NULL;
- return EINA_FALSE;
-}
-
-static Eina_Bool
-_e_dpms_screensaver_on()
-{
- standby_timer = ecore_timer_add(STANDBY, _e_dpms_standby, NULL);
- suspend_timer = ecore_timer_add(SUSPEND, _e_dpms_suspend, NULL);
- off_timer = ecore_timer_add(OFF, _e_dpms_off, NULL);
- return ECORE_CALLBACK_RENEW;
-}
-
-static Eina_Bool
-_e_dpms_screensaver_off()
-{
- E_FREE_FUNC(standby_timer, ecore_timer_del);
- E_FREE_FUNC(suspend_timer, ecore_timer_del);
- E_FREE_FUNC(off_timer, ecore_timer_del);
- if (e_comp->screen && e_comp->screen->dpms)
- e_comp->screen->dpms(0);
- return ECORE_CALLBACK_RENEW;
-}
+//static Eina_Bool
+//_e_dpms_standby(void *d EINA_UNUSED)
+//{
+// if (e_comp->screen && e_comp->screen->dpms)
+// e_comp->screen->dpms(1);
+// standby_timer = NULL;
+// return EINA_FALSE;
+//}
+
+//static Eina_Bool
+//_e_dpms_suspend(void *d EINA_UNUSED)
+//{
+// if (e_comp->screen && e_comp->screen->dpms)
+// e_comp->screen->dpms(2);
+// suspend_timer = NULL;
+// return EINA_FALSE;
+//}
+
+//static Eina_Bool
+//_e_dpms_off(void *d EINA_UNUSED)
+//{
+// if (e_comp->screen && e_comp->screen->dpms)
+// e_comp->screen->dpms(3);
+// off_timer = NULL;
+// return EINA_FALSE;
+//}
+
+//static Eina_Bool
+//_e_dpms_screensaver_on()
+//{
+// standby_timer = ecore_timer_add(STANDBY, _e_dpms_standby, NULL);
+// suspend_timer = ecore_timer_add(SUSPEND, _e_dpms_suspend, NULL);
+// off_timer = ecore_timer_add(OFF, _e_dpms_off, NULL);
+// return ECORE_CALLBACK_RENEW;
+//}
+
+//static Eina_Bool
+//_e_dpms_screensaver_off()
+//{
+// E_FREE_FUNC(standby_timer, ecore_timer_del);
+// E_FREE_FUNC(suspend_timer, ecore_timer_del);
+// E_FREE_FUNC(off_timer, ecore_timer_del);
+// if (e_comp->screen && e_comp->screen->dpms)
+// e_comp->screen->dpms(0);
+// return ECORE_CALLBACK_RENEW;
+//}
#endif
EINTERN int
#ifdef HAVE_WAYLAND
if (e_comp->comp_type != E_PIXMAP_TYPE_X)
{
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_SCREENSAVER_ON,
- _e_dpms_screensaver_on, NULL);
- E_LIST_HANDLER_APPEND(handlers, E_EVENT_SCREENSAVER_OFF_PRE,
- _e_dpms_screensaver_off, NULL);
+ //E_LIST_HANDLER_APPEND(handlers, E_EVENT_SCREENSAVER_ON, _e_dpms_screensaver_on, NULL);
+ //E_LIST_HANDLER_APPEND(handlers, E_EVENT_SCREENSAVER_OFF_PRE, _e_dpms_screensaver_off, NULL);
}
#endif
TS("E_Theme Init Done");
_e_main_shutdown_push(e_theme_shutdown);
- e_screensaver_preinit();
-
TS("E_Actions Init");
if (!e_actions_init())
{
/* these just add event handlers and can't fail
* timestamping them is dumb.
*/
+ e_screensaver_preinit();
e_zone_init();
e_desk_init();
e_plane_init();
- TS("E_Screensaver Init");
- if (!e_screensaver_init())
- {
- e_error_message_show(_("Enlightenment cannot configure the X screensaver.\n"));
- _e_main_shutdown(-1);
- }
- TS("E_Screensaver Init Done");
- _e_main_shutdown_push(e_screensaver_shutdown);
-
TRACE_DS_BEGIN(MAIN:SCREEN INIT);
TS("Screens Init");
if (!_e_main_screens_init())
_e_main_shutdown_push(_e_main_screens_shutdown);
TRACE_DS_END();
+ TS("E_Screensaver Init");
+ if (!e_screensaver_init())
+ {
+ e_error_message_show(_("Enlightenment cannot configure the X screensaver.\n"));
+ _e_main_shutdown(-1);
+ }
+ TS("E_Screensaver Init Done");
+ _e_main_shutdown_push(e_screensaver_shutdown);
+
TS("E_Comp Freeze");
e_comp_all_freeze();
TS("E_Comp Freeze Done");
#include "e.h"
-static Ecore_Event_Handler *_e_screensaver_handler_on = NULL;
-static Ecore_Event_Handler *_e_screensaver_handler_off = NULL;
-static Ecore_Event_Handler *_e_screensaver_handler_config_mode = NULL;
-static Ecore_Event_Handler *_e_screensaver_handler_border_fullscreen = NULL;
-static Ecore_Event_Handler *_e_screensaver_handler_border_unfullscreen = NULL;
-static Ecore_Event_Handler *_e_screensaver_handler_border_remove = NULL;
-static Ecore_Event_Handler *_e_screensaver_handler_border_iconify = NULL;
-static Ecore_Event_Handler *_e_screensaver_handler_border_uniconify = NULL;
-static Ecore_Event_Handler *_e_screensaver_handler_border_desk_set = NULL;
-static Ecore_Event_Handler *_e_screensaver_handler_desk_show = NULL;
-static Ecore_Event_Handler *_e_screensaver_handler_powersave = NULL;
-static int _e_screensaver_ask_presentation_count = 0;
-
-static int _e_screensaver_timeout = 0;
-//static int _e_screensaver_interval = 0;
-static int _e_screensaver_blanking = 0;
-static int _e_screensaver_expose = 0;
-
-static Ecore_Timer *_e_screensaver_suspend_timer = NULL;
-static Eina_Bool _e_screensaver_on = EINA_FALSE;
-
-static Ecore_Timer *screensaver_idle_timer = NULL;
-
-static Ecore_Timer *_e_screensaver_timer;
-static Eina_Bool _e_screensaver_inhibited = EINA_FALSE;
-
E_API int E_EVENT_SCREENSAVER_ON = -1;
E_API int E_EVENT_SCREENSAVER_OFF = -1;
E_API int E_EVENT_SCREENSAVER_OFF_PRE = -1;
+static Eina_List *handlers = NULL;
+static double _idle_time = 0.0;
+static Ecore_Idle_Enterer *_idle_before = NULL;
+static Eina_Bool _ev_update = EINA_FALSE;
+static Ecore_Timer *_event_idle_timer = NULL;
+static Eina_Bool _scrsaver_active = EINA_FALSE;
+
static Eina_Bool
-_e_screensaver_idle_timeout_cb(void *d)
+_e_scrsaver_idle_timeout_cb(void *data EINA_UNUSED)
{
- e_screensaver_eval(!!d);
- _e_screensaver_timer = NULL;
+ _scrsaver_active = EINA_TRUE;
+ _event_idle_timer = NULL;
+ ecore_event_add(E_EVENT_SCREENSAVER_ON, NULL, NULL, NULL);
return EINA_FALSE;
}
-E_API int
-e_screensaver_timeout_get(Eina_Bool use_idle)
+static void
+_e_scrsaver_reset(void)
{
- return 0;
-}
-
-E_API void
-e_screensaver_update(void)
-{
- int timeout;
- Eina_Bool changed = EINA_FALSE;
-
- timeout = e_screensaver_timeout_get(EINA_TRUE);
- if (_e_screensaver_timeout != timeout)
+ if (_event_idle_timer)
{
- _e_screensaver_timeout = timeout;
- changed = EINA_TRUE;
+ ecore_timer_del(_event_idle_timer);
+ _event_idle_timer = NULL;
}
- if (changed && (e_comp->comp_type == E_PIXMAP_TYPE_WL))
+
+ if (_idle_time != 0.0)
{
- E_FREE_FUNC(_e_screensaver_timer, ecore_timer_del);
- if (timeout)
- _e_screensaver_timer = ecore_timer_add(timeout, _e_screensaver_idle_timeout_cb, (void*)1);
+ _event_idle_timer =
+ ecore_timer_add(_idle_time,
+ _e_scrsaver_idle_timeout_cb,
+ NULL);
}
}
static Eina_Bool
-_e_screensaver_handler_config_mode_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
+_e_scrsaver_cb_idle_before(void *data EINA_UNUSED)
{
- e_screensaver_update();
- return ECORE_CALLBACK_PASS_ON;
-}
+ if (!_ev_update) return ECORE_CALLBACK_RENEW;
-static double last_start = 0.0;
+ _e_scrsaver_reset();
-static Eina_Bool
-_e_screensaver_handler_screensaver_on_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
-{
- _e_screensaver_on = EINA_TRUE;
- if (_e_screensaver_suspend_timer)
+ if (_scrsaver_active)
{
- ecore_timer_del(_e_screensaver_suspend_timer);
- _e_screensaver_suspend_timer = NULL;
+ ecore_event_add(E_EVENT_SCREENSAVER_OFF, NULL, NULL, NULL);
+ _scrsaver_active = EINA_FALSE;
}
- last_start = ecore_loop_time_get();
- _e_screensaver_ask_presentation_count = 0;
- return ECORE_CALLBACK_PASS_ON;
-}
-static Eina_Bool
-_e_screensaver_handler_screensaver_off_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
-{
-// e_dpms_force_update();
-
- _e_screensaver_on = EINA_FALSE;
- if (_e_screensaver_suspend_timer)
- {
- ecore_timer_del(_e_screensaver_suspend_timer);
- _e_screensaver_suspend_timer = NULL;
- }
+ _ev_update = EINA_FALSE;
- if (_e_screensaver_ask_presentation_count)
- _e_screensaver_ask_presentation_count = 0;
- if (_e_screensaver_timeout && (e_comp->comp_type == E_PIXMAP_TYPE_WL))
- _e_screensaver_timer = ecore_timer_add(_e_screensaver_timeout, _e_screensaver_idle_timeout_cb, (void*)1);
- return ECORE_CALLBACK_PASS_ON;
+ return ECORE_CALLBACK_RENEW;
}
static Eina_Bool
-_e_screensaver_handler_border_fullscreen_check_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
+_e_scrsaver_cb_input(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
{
- e_screensaver_update();
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_e_screensaver_handler_border_desk_set_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
-{
- e_screensaver_update();
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool
-_e_screensaver_handler_desk_show_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
-{
- e_screensaver_update();
+ _ev_update = EINA_TRUE;
return ECORE_CALLBACK_PASS_ON;
}
EINTERN int
e_screensaver_init(void)
{
- _e_screensaver_handler_on = ecore_event_handler_add
- (E_EVENT_SCREENSAVER_ON, _e_screensaver_handler_screensaver_on_cb, NULL);
- _e_screensaver_handler_off = ecore_event_handler_add
- (E_EVENT_SCREENSAVER_OFF, _e_screensaver_handler_screensaver_off_cb, NULL);
- _e_screensaver_handler_config_mode = ecore_event_handler_add
- (E_EVENT_CONFIG_MODE_CHANGED, _e_screensaver_handler_config_mode_cb, NULL);
+ E_LIST_HANDLER_APPEND(handlers, ECORE_EVENT_KEY_DOWN, _e_scrsaver_cb_input, NULL);
+ E_LIST_HANDLER_APPEND(handlers, ECORE_EVENT_KEY_UP, _e_scrsaver_cb_input, NULL);
+ E_LIST_HANDLER_APPEND(handlers, ECORE_EVENT_MOUSE_MOVE, _e_scrsaver_cb_input, NULL);
+ E_LIST_HANDLER_APPEND(handlers, ECORE_EVENT_MOUSE_BUTTON_DOWN, _e_scrsaver_cb_input, NULL);
+ E_LIST_HANDLER_APPEND(handlers, ECORE_EVENT_MOUSE_BUTTON_UP, _e_scrsaver_cb_input, NULL);
+ E_LIST_HANDLER_APPEND(handlers, ECORE_EVENT_MOUSE_WHEEL, _e_scrsaver_cb_input, NULL);
- _e_screensaver_handler_border_fullscreen = ecore_event_handler_add
- (E_EVENT_CLIENT_FULLSCREEN, _e_screensaver_handler_border_fullscreen_check_cb, NULL);
- _e_screensaver_handler_border_unfullscreen = ecore_event_handler_add
- (E_EVENT_CLIENT_UNFULLSCREEN, _e_screensaver_handler_border_fullscreen_check_cb, NULL);
- _e_screensaver_handler_border_remove = ecore_event_handler_add
- (E_EVENT_CLIENT_REMOVE, _e_screensaver_handler_border_fullscreen_check_cb, NULL);
- _e_screensaver_handler_border_iconify = ecore_event_handler_add
- (E_EVENT_CLIENT_ICONIFY, _e_screensaver_handler_border_fullscreen_check_cb, NULL);
- _e_screensaver_handler_border_uniconify = ecore_event_handler_add
- (E_EVENT_CLIENT_UNICONIFY, _e_screensaver_handler_border_fullscreen_check_cb, NULL);
- _e_screensaver_handler_border_desk_set = ecore_event_handler_add
- (E_EVENT_CLIENT_DESK_SET, _e_screensaver_handler_border_desk_set_cb, NULL);
- _e_screensaver_handler_desk_show = ecore_event_handler_add
- (E_EVENT_DESK_SHOW, _e_screensaver_handler_desk_show_cb, NULL);
+ _idle_before = ecore_idle_enterer_before_add(_e_scrsaver_cb_idle_before, NULL);
return 1;
}
EINTERN int
e_screensaver_shutdown(void)
{
- if (_e_screensaver_handler_on)
- {
- ecore_event_handler_del(_e_screensaver_handler_on);
- _e_screensaver_handler_on = NULL;
- }
-
- if (_e_screensaver_handler_off)
- {
- ecore_event_handler_del(_e_screensaver_handler_off);
- _e_screensaver_handler_off = NULL;
- }
-
- if (_e_screensaver_suspend_timer)
- {
- ecore_timer_del(_e_screensaver_suspend_timer);
- _e_screensaver_suspend_timer = NULL;
- }
-
- if (_e_screensaver_handler_powersave)
- {
- ecore_event_handler_del(_e_screensaver_handler_powersave);
- _e_screensaver_handler_powersave = NULL;
- }
-
- if (_e_screensaver_handler_config_mode)
- {
- ecore_event_handler_del(_e_screensaver_handler_config_mode);
- _e_screensaver_handler_config_mode = NULL;
- }
-
- if (_e_screensaver_handler_border_fullscreen)
- {
- ecore_event_handler_del(_e_screensaver_handler_border_fullscreen);
- _e_screensaver_handler_border_fullscreen = NULL;
- }
-
- if (_e_screensaver_handler_border_unfullscreen)
- {
- ecore_event_handler_del(_e_screensaver_handler_border_unfullscreen);
- _e_screensaver_handler_border_unfullscreen = NULL;
- }
-
- if (_e_screensaver_handler_border_remove)
- {
- ecore_event_handler_del(_e_screensaver_handler_border_remove);
- _e_screensaver_handler_border_remove = NULL;
- }
-
- if (_e_screensaver_handler_border_iconify)
- {
- ecore_event_handler_del(_e_screensaver_handler_border_iconify);
- _e_screensaver_handler_border_iconify = NULL;
- }
+ E_FREE_LIST(handlers, ecore_event_handler_del);
- if (_e_screensaver_handler_border_uniconify)
- {
- ecore_event_handler_del(_e_screensaver_handler_border_uniconify);
- _e_screensaver_handler_border_uniconify = NULL;
- }
+ if (_event_idle_timer) ecore_timer_del(_event_idle_timer);
+ _event_idle_timer = NULL;
- if (_e_screensaver_handler_border_desk_set)
- {
- ecore_event_handler_del(_e_screensaver_handler_border_desk_set);
- _e_screensaver_handler_border_desk_set = NULL;
- }
+ if (_idle_before) ecore_idle_enterer_del(_idle_before);
+ _idle_before = NULL;
- if (_e_screensaver_handler_desk_show)
- {
- ecore_event_handler_del(_e_screensaver_handler_desk_show);
- _e_screensaver_handler_desk_show = NULL;
- }
+ handlers = NULL;
return 1;
}
E_API void
-e_screensaver_attrs_set(int timeout, int blanking, int expose)
-{
- _e_screensaver_timeout = timeout;
-// _e_screensaver_interval = ecore_x_screensaver_interval_get();
- _e_screensaver_blanking = blanking;
- _e_screensaver_expose = expose;
-}
-
-E_API Eina_Bool
-e_screensaver_on_get(void)
+e_screensaver_timeout_set(double time)
{
- return _e_screensaver_on;
+ _idle_time = time;
+ if (!_scrsaver_active) _e_scrsaver_reset();
}
-E_API void
-e_screensaver_activate(void)
-{
- if (e_screensaver_on_get()) return;
-
- E_FREE_FUNC(screensaver_idle_timer, ecore_timer_del);
- if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
- e_screensaver_eval(1);
- E_FREE_FUNC(_e_screensaver_timer, ecore_timer_del);
-}
-
-E_API void
-e_screensaver_deactivate(void)
-{
- if (!e_screensaver_on_get()) return;
-
- E_FREE_FUNC(screensaver_idle_timer, ecore_timer_del);
- e_screensaver_notidle();
-}
-
-E_API void
-e_screensaver_eval(Eina_Bool saver_on)
-{
- if (saver_on)
- {
- if (!e_screensaver_on_get())
- ecore_event_add(E_EVENT_SCREENSAVER_ON, NULL, NULL, NULL);
- return;
- }
- if (screensaver_idle_timer)
- {
- E_FREE_FUNC(screensaver_idle_timer, ecore_timer_del);
- return;
- }
- if (e_screensaver_on_get())
- ecore_event_add(E_EVENT_SCREENSAVER_OFF, NULL, NULL, NULL);
-}
-
-E_API void
-e_screensaver_notidle(void)
-{
- if (_e_screensaver_inhibited || (e_comp->comp_type != E_PIXMAP_TYPE_WL)) return;
- E_FREE_FUNC(_e_screensaver_timer, ecore_timer_del);
- if (e_screensaver_on_get())
- {
- ecore_event_add(E_EVENT_SCREENSAVER_OFF_PRE, NULL, NULL, NULL);
- _e_screensaver_timer = ecore_timer_add(0.2, _e_screensaver_idle_timeout_cb, NULL);
- }
- else if (_e_screensaver_timeout)
- _e_screensaver_timer = ecore_timer_add(_e_screensaver_timeout, _e_screensaver_idle_timeout_cb, (void*)1);
-}
-
-E_API void
-e_screensaver_inhibit_toggle(Eina_Bool inhibit)
+E_API double
+e_screensaver_timeout_get(void)
{
- if (e_comp->comp_type != E_PIXMAP_TYPE_WL) return;
- E_FREE_FUNC(_e_screensaver_timer, ecore_timer_del);
- _e_screensaver_inhibited = !!inhibit;
- if (inhibit)
- e_screensaver_eval(0);
- else
- e_screensaver_notidle();
+ return _idle_time;
}
#ifndef E_SCREENSAVER_H
#define E_SCREENSAVER_H
-EINTERN void e_screensaver_preinit(void);
-EINTERN int e_screensaver_init(void);
-EINTERN int e_screensaver_shutdown(void);
+EINTERN void e_screensaver_preinit(void);
+EINTERN int e_screensaver_init(void);
+EINTERN int e_screensaver_shutdown(void);
-E_API void e_screensaver_update(void);
-
-E_API int e_screensaver_timeout_get(Eina_Bool use_idle);
-E_API void e_screensaver_attrs_set(int timeout, int blanking, int expose);
-E_API Eina_Bool e_screensaver_on_get(void);
-E_API void e_screensaver_activate(void);
-E_API void e_screensaver_deactivate(void);
-
-E_API void e_screensaver_eval(Eina_Bool saver_on);
-E_API void e_screensaver_notidle(void);
-E_API void e_screensaver_inhibit_toggle(Eina_Bool inhibit);
+E_API void e_screensaver_timeout_set(double time);
+E_API double e_screensaver_timeout_get(void);
E_API extern int E_EVENT_SCREENSAVER_ON;
E_API extern int E_EVENT_SCREENSAVER_OFF_PRE;