e_screensaver: cleanup and refactoring 15/66915/8
authorGwanglim Lee <gl77.lee@samsung.com>
Fri, 22 Apr 2016 04:35:54 +0000 (13:35 +0900)
committerGwanglim Lee <gl77.lee@samsung.com>
Mon, 25 Apr 2016 04:59:03 +0000 (21:59 -0700)
Change-Id: I09f2578547ac650be33cc1bccca9e84914072037

src/bin/e_comp.c
src/bin/e_comp_canvas.c
src/bin/e_comp_wl.c
src/bin/e_comp_wl.h
src/bin/e_comp_wl_data.c
src/bin/e_dpms.c
src/bin/e_main.c
src/bin/e_screensaver.c
src/bin/e_screensaver.h

index 468a17f..0df5ebc 100644 (file)
@@ -850,6 +850,7 @@ _e_comp_override_expire(void *data EINA_UNUSED)
 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;
 
@@ -865,6 +866,7 @@ _e_comp_screensaver_on(void *data EINA_UNUSED, int type EINA_UNUSED, void *event
         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;
 }
@@ -872,6 +874,7 @@ _e_comp_screensaver_on(void *data EINA_UNUSED, int type EINA_UNUSED, void *event
 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;
@@ -891,6 +894,7 @@ _e_comp_screensaver_off(void *data EINA_UNUSED, int type EINA_UNUSED, void *even
    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;
 }
@@ -999,7 +1003,6 @@ e_comp_init(void)
      }
 
    e_comp_canvas_fake_layers_init();
-   e_screensaver_update();
 
 #ifdef HAVE_HWC
    // TO DO : check hwc init condition
index 1711b0c..a401567 100644 (file)
@@ -1,15 +1,11 @@
 #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
@@ -68,7 +64,6 @@ _e_comp_canvas_cb_mouse_in(void *d EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object
 {
    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);
@@ -77,35 +72,33 @@ _e_comp_canvas_cb_mouse_in(void *d EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object
 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);
 }
 
@@ -120,40 +113,6 @@ _e_comp_cb_zone_change()
 
 ////////////////////////////////////
 
-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)
 {
@@ -236,8 +195,6 @@ e_comp_canvas_init(int w, int h)
    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);
@@ -387,7 +344,7 @@ e_comp_canvas_zone_update(E_Zone *zone)
    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");
index c22b3c5..f9c5b17 100644 (file)
@@ -47,7 +47,6 @@ typedef struct _E_Comp_Wl_Transform_Context
 
 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;
@@ -1725,11 +1724,8 @@ _e_comp_wl_cb_comp_object_add(void *data EINA_UNUSED, int type EINA_UNUSED, E_Ev
 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)
@@ -4263,8 +4259,6 @@ e_comp_wl_init(void)
 
    E_EVENT_WAYLAND_GLOBAL_ADD = ecore_event_type_new();
 
-   _last_event_time = ecore_loop_time_get();
-
    TRACE_DS_END();
    return EINA_TRUE;
 }
@@ -4605,17 +4599,6 @@ err:
    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)
 {
@@ -4781,7 +4764,6 @@ e_comp_wl_key_down(Ecore_Event_Key *ev)
      {
         return EINA_FALSE;
      }
-   _last_event_time = ecore_loop_time_get();
 
    keycode = (ev->keycode - 8);
    if (!(e_comp_wl = e_comp->wl_comp_data))
@@ -4867,8 +4849,6 @@ e_comp_wl_key_up(Ecore_Event_Key *ev)
         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))
index 1b55136..07ab55e 100644 (file)
@@ -479,7 +479,6 @@ E_API E_Comp_Wl_Buffer *e_comp_wl_buffer_get(struct wl_resource *resource, E_Cli
 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);
 
index cb0ba18..1320efe 100644 (file)
@@ -294,7 +294,6 @@ _e_comp_wl_data_device_drag_finished(E_Drag *drag, int dropped)
    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;
@@ -360,7 +359,6 @@ _e_comp_wl_data_device_cb_drag_start(struct wl_client *client, struct wl_resourc
    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);
 }
 
index 559f936..ffe2327 100644 (file)
@@ -15,10 +15,10 @@ static unsigned int _e_dpms_timeout_off = 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
@@ -78,52 +78,52 @@ _e_dpms_handler_desk_show_cb(void *data EINA_UNUSED, int type EINA_UNUSED, void
 }
 
 #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
@@ -165,10 +165,8 @@ e_dpms_init(void)
 #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
 
index 91acf1e..9a41023 100644 (file)
@@ -558,8 +558,6 @@ main(int argc, char **argv)
    TS("E_Theme Init Done");
    _e_main_shutdown_push(e_theme_shutdown);
 
-   e_screensaver_preinit();
-
    TS("E_Actions Init");
    if (!e_actions_init())
      {
@@ -572,19 +570,11 @@ main(int argc, char **argv)
    /* 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())
@@ -597,6 +587,15 @@ main(int argc, char **argv)
    _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");
index d847411..7b464bd 100644 (file)
 #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;
 }
 
@@ -138,27 +74,14 @@ e_screensaver_preinit(void)
 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;
 }
@@ -166,156 +89,28 @@ e_screensaver_init(void)
 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;
 }
index 35e94cb..aa1f270 100644 (file)
@@ -3,21 +3,12 @@
 #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;