forked from enlightenment/enlightenment
add functioning wayland screensaver support
block xscreensaver events, manage input<->activation eventing fix T2525
This commit is contained in:
parent
c2ecadae14
commit
7f638d98bf
|
@ -1069,7 +1069,10 @@ e_comp_init(void)
|
||||||
if (e_comp->comp_type == E_PIXMAP_TYPE_NONE) return EINA_FALSE;
|
if (e_comp->comp_type == E_PIXMAP_TYPE_NONE) return EINA_FALSE;
|
||||||
out:
|
out:
|
||||||
if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
|
if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
|
||||||
|
{
|
||||||
e_comp_canvas_fake_layers_init();
|
e_comp_canvas_fake_layers_init();
|
||||||
|
e_screensaver_update();
|
||||||
|
}
|
||||||
e_comp->elm = elm_win_fake_add(e_comp->ee);
|
e_comp->elm = elm_win_fake_add(e_comp->ee);
|
||||||
elm_win_fullscreen_set(e_comp->elm, 1);
|
elm_win_fullscreen_set(e_comp->elm, 1);
|
||||||
evas_object_show(e_comp->elm);
|
evas_object_show(e_comp->elm);
|
||||||
|
|
|
@ -65,6 +65,7 @@ _e_comp_canvas_cb_mouse_in(void *d EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object
|
||||||
{
|
{
|
||||||
E_Client *ec;
|
E_Client *ec;
|
||||||
|
|
||||||
|
e_screensaver_notidle();
|
||||||
if (e_client_action_get()) return;
|
if (e_client_action_get()) return;
|
||||||
ec = e_client_focused_get();
|
ec = e_client_focused_get();
|
||||||
if (ec && (!ec->border_menu)) e_focus_event_mouse_out(ec);
|
if (ec && (!ec->border_menu)) e_focus_event_mouse_out(ec);
|
||||||
|
@ -73,6 +74,7 @@ _e_comp_canvas_cb_mouse_in(void *d EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object
|
||||||
static void
|
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_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;
|
if (e_client_action_get()) return;
|
||||||
e_bindings_mouse_down_evas_event_handle(E_BINDING_CONTEXT_COMPOSITOR, E_OBJECT(e_comp), event_info);
|
e_bindings_mouse_down_evas_event_handle(E_BINDING_CONTEXT_COMPOSITOR, E_OBJECT(e_comp), event_info);
|
||||||
}
|
}
|
||||||
|
@ -80,6 +82,7 @@ _e_comp_canvas_cb_mouse_down(void *d EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Obje
|
||||||
static void
|
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_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;
|
if (e_client_action_get()) return;
|
||||||
e_bindings_mouse_up_evas_event_handle(E_BINDING_CONTEXT_COMPOSITOR, E_OBJECT(e_comp), event_info);
|
e_bindings_mouse_up_evas_event_handle(E_BINDING_CONTEXT_COMPOSITOR, E_OBJECT(e_comp), event_info);
|
||||||
}
|
}
|
||||||
|
@ -87,6 +90,7 @@ _e_comp_canvas_cb_mouse_up(void *d EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object
|
||||||
static void
|
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_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;
|
if (e_client_action_get()) return;
|
||||||
e_bindings_wheel_evas_event_handle(E_BINDING_CONTEXT_COMPOSITOR, E_OBJECT(e_comp), event_info);
|
e_bindings_wheel_evas_event_handle(E_BINDING_CONTEXT_COMPOSITOR, E_OBJECT(e_comp), event_info);
|
||||||
}
|
}
|
||||||
|
@ -94,6 +98,7 @@ _e_comp_canvas_cb_mouse_wheel(void *d EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Obj
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_e_comp_cb_key_down(void *data EINA_UNUSED, int ev_type EINA_UNUSED, Ecore_Event_Key *ev)
|
_e_comp_cb_key_down(void *data EINA_UNUSED, int ev_type EINA_UNUSED, Ecore_Event_Key *ev)
|
||||||
{
|
{
|
||||||
|
e_screensaver_notidle();
|
||||||
if (e_menu_grab_window_get())
|
if (e_menu_grab_window_get())
|
||||||
{
|
{
|
||||||
#ifdef HAVE_WAYLAND
|
#ifdef HAVE_WAYLAND
|
||||||
|
@ -123,6 +128,7 @@ _e_comp_cb_key_down(void *data EINA_UNUSED, int ev_type EINA_UNUSED, Ecore_Event
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_e_comp_cb_key_up(void *data EINA_UNUSED, int ev_type EINA_UNUSED, Ecore_Event_Key *ev)
|
_e_comp_cb_key_up(void *data EINA_UNUSED, int ev_type EINA_UNUSED, Ecore_Event_Key *ev)
|
||||||
{
|
{
|
||||||
|
e_screensaver_notidle();
|
||||||
if (e_menu_grab_window_get())
|
if (e_menu_grab_window_get())
|
||||||
{
|
{
|
||||||
#ifdef HAVE_WAYLAND
|
#ifdef HAVE_WAYLAND
|
||||||
|
|
|
@ -60,9 +60,6 @@ static int _e_comp_x_mapping_change_disabled = 0;
|
||||||
static Ecore_X_Randr_Screen_Size screen_size = { -1, -1 };
|
static Ecore_X_Randr_Screen_Size screen_size = { -1, -1 };
|
||||||
static int screen_size_index = -1;
|
static int screen_size_index = -1;
|
||||||
|
|
||||||
static Ecore_Timer *screensaver_idle_timer = NULL;
|
|
||||||
static Eina_Bool screensaver_dimmed = EINA_FALSE;
|
|
||||||
|
|
||||||
static Ecore_X_Atom backlight_atom = 0;
|
static Ecore_X_Atom backlight_atom = 0;
|
||||||
extern double e_bl_val;
|
extern double e_bl_val;
|
||||||
|
|
||||||
|
@ -4553,67 +4550,13 @@ _e_comp_x_cb_ping(void *data EINA_UNUSED, int ev_type EINA_UNUSED, Ecore_X_Event
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
|
||||||
_e_comp_x_screensaver_idle_timer_cb(void *d EINA_UNUSED)
|
|
||||||
{
|
|
||||||
ecore_event_add(E_EVENT_SCREENSAVER_ON, NULL, NULL, NULL);
|
|
||||||
screensaver_idle_timer = NULL;
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Ecore_Timer *screensaver_eval_timer = NULL;
|
static Ecore_Timer *screensaver_eval_timer = NULL;
|
||||||
static Eina_Bool saver_on = EINA_FALSE;
|
static Eina_Bool saver_on = EINA_FALSE;
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_e_comp_x_screensaver_eval_cb(void *d EINA_UNUSED)
|
_e_comp_x_screensaver_eval_cb(void *d EINA_UNUSED)
|
||||||
{
|
{
|
||||||
if (saver_on)
|
e_screensaver_eval(saver_on);
|
||||||
{
|
|
||||||
if (e_config->backlight.idle_dim)
|
|
||||||
{
|
|
||||||
double t = e_config->screensaver_timeout -
|
|
||||||
e_config->backlight.timer;
|
|
||||||
|
|
||||||
if (t < 1.0) t = 1.0;
|
|
||||||
E_FREE_FUNC(screensaver_idle_timer, ecore_timer_del);
|
|
||||||
if (e_config->screensaver_enable)
|
|
||||||
screensaver_idle_timer = ecore_timer_add
|
|
||||||
(t, _e_comp_x_screensaver_idle_timer_cb, NULL);
|
|
||||||
if (e_backlight_mode_get(NULL) != E_BACKLIGHT_MODE_DIM)
|
|
||||||
{
|
|
||||||
e_backlight_mode_set(NULL, E_BACKLIGHT_MODE_DIM);
|
|
||||||
screensaver_dimmed = EINA_TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (!e_screensaver_on_get())
|
|
||||||
ecore_event_add(E_EVENT_SCREENSAVER_ON, NULL, NULL, NULL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (screensaver_idle_timer)
|
|
||||||
{
|
|
||||||
E_FREE_FUNC(screensaver_idle_timer, ecore_timer_del);
|
|
||||||
if (e_config->backlight.idle_dim)
|
|
||||||
{
|
|
||||||
if (e_backlight_mode_get(NULL) != E_BACKLIGHT_MODE_NORMAL)
|
|
||||||
e_backlight_mode_set(NULL, E_BACKLIGHT_MODE_NORMAL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (screensaver_dimmed)
|
|
||||||
{
|
|
||||||
if (e_backlight_mode_get(NULL) != E_BACKLIGHT_MODE_NORMAL)
|
|
||||||
e_backlight_mode_set(NULL, E_BACKLIGHT_MODE_NORMAL);
|
|
||||||
screensaver_dimmed = EINA_FALSE;
|
|
||||||
}
|
|
||||||
if (e_screensaver_on_get())
|
|
||||||
ecore_event_add(E_EVENT_SCREENSAVER_OFF, NULL, NULL, NULL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
screensaver_eval_timer = NULL;
|
screensaver_eval_timer = NULL;
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
@ -5298,8 +5241,6 @@ e_comp_x_init(void)
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
ecore_x_screensaver_event_listen_set(1);
|
|
||||||
|
|
||||||
clients_win_hash = eina_hash_int32_new(NULL);
|
clients_win_hash = eina_hash_int32_new(NULL);
|
||||||
damages_hash = eina_hash_int32_new(NULL);
|
damages_hash = eina_hash_int32_new(NULL);
|
||||||
alarm_hash = eina_hash_int32_new(NULL);
|
alarm_hash = eina_hash_int32_new(NULL);
|
||||||
|
@ -5359,7 +5300,6 @@ e_comp_x_init(void)
|
||||||
_e_comp_x_cb_frame_extents_request, NULL);
|
_e_comp_x_cb_frame_extents_request, NULL);
|
||||||
E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_PING,
|
E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_PING,
|
||||||
_e_comp_x_cb_ping, NULL);
|
_e_comp_x_cb_ping, NULL);
|
||||||
E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_SCREENSAVER_NOTIFY, _e_comp_x_screensaver_notify_cb, NULL);
|
|
||||||
E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_RANDR_OUTPUT_PROPERTY_NOTIFY, _e_comp_x_backlight_notify_cb, NULL);
|
E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_RANDR_OUTPUT_PROPERTY_NOTIFY, _e_comp_x_backlight_notify_cb, NULL);
|
||||||
if (ecore_x_randr_version_get() >= RANDR_VERSION_1_3)
|
if (ecore_x_randr_version_get() >= RANDR_VERSION_1_3)
|
||||||
backlight_atom = ecore_x_atom_get("Backlight");
|
backlight_atom = ecore_x_atom_get("Backlight");
|
||||||
|
@ -5367,11 +5307,16 @@ e_comp_x_init(void)
|
||||||
if (!backlight_atom)
|
if (!backlight_atom)
|
||||||
backlight_atom = ecore_x_atom_get("BACKLIGHT");
|
backlight_atom = ecore_x_atom_get("BACKLIGHT");
|
||||||
|
|
||||||
|
if (e_comp->comp_type != E_PIXMAP_TYPE_WL)
|
||||||
|
{
|
||||||
|
ecore_x_screensaver_event_listen_set(1);
|
||||||
|
E_LIST_HANDLER_APPEND(handlers, ECORE_X_EVENT_SCREENSAVER_NOTIFY, _e_comp_x_screensaver_notify_cb, NULL);
|
||||||
ecore_x_screensaver_custom_blanking_enable();
|
ecore_x_screensaver_custom_blanking_enable();
|
||||||
|
|
||||||
e_screensaver_attrs_set(ecore_x_screensaver_timeout_get(),
|
e_screensaver_attrs_set(ecore_x_screensaver_timeout_get(),
|
||||||
ecore_x_screensaver_blank_get(),
|
ecore_x_screensaver_blank_get(),
|
||||||
ecore_x_screensaver_expose_get());
|
ecore_x_screensaver_expose_get());
|
||||||
|
}
|
||||||
ecore_x_passive_grab_replay_func_set(_e_comp_x_grab_replay, NULL);
|
ecore_x_passive_grab_replay_func_set(_e_comp_x_grab_replay, NULL);
|
||||||
|
|
||||||
e_client_hook_add(E_CLIENT_HOOK_DESK_SET, _e_comp_x_hook_client_desk_set, NULL);
|
e_client_hook_add(E_CLIENT_HOOK_DESK_SET, _e_comp_x_hook_client_desk_set, NULL);
|
||||||
|
@ -5417,6 +5362,7 @@ e_comp_x_shutdown(void)
|
||||||
E_FREE_FUNC(alarm_hash, eina_hash_free);
|
E_FREE_FUNC(alarm_hash, eina_hash_free);
|
||||||
E_FREE_FUNC(frame_extents, eina_hash_free);
|
E_FREE_FUNC(frame_extents, eina_hash_free);
|
||||||
e_xsettings_shutdown();
|
e_xsettings_shutdown();
|
||||||
|
if (e_comp->comp_type == E_PIXMAP_TYPE_X)
|
||||||
ecore_x_screensaver_custom_blanking_disable();
|
ecore_x_screensaver_custom_blanking_disable();
|
||||||
if (x_fatal) return;
|
if (x_fatal) return;
|
||||||
e_atoms_shutdown();
|
e_atoms_shutdown();
|
||||||
|
|
|
@ -22,9 +22,26 @@ static int _e_screensaver_expose = 0;
|
||||||
static Ecore_Timer *_e_screensaver_suspend_timer = NULL;
|
static Ecore_Timer *_e_screensaver_suspend_timer = NULL;
|
||||||
static Eina_Bool _e_screensaver_on = EINA_FALSE;
|
static Eina_Bool _e_screensaver_on = EINA_FALSE;
|
||||||
|
|
||||||
|
static Ecore_Timer *screensaver_idle_timer = NULL;
|
||||||
|
static Eina_Bool screensaver_dimmed = EINA_FALSE;
|
||||||
|
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
static Ecore_Timer *_e_screensaver_timer;
|
||||||
|
#endif
|
||||||
|
|
||||||
E_API int E_EVENT_SCREENSAVER_ON = -1;
|
E_API int E_EVENT_SCREENSAVER_ON = -1;
|
||||||
E_API int E_EVENT_SCREENSAVER_OFF = -1;
|
E_API int E_EVENT_SCREENSAVER_OFF = -1;
|
||||||
|
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
static Eina_Bool
|
||||||
|
_e_screensaver_idle_timeout_cb(void *d EINA_UNUSED)
|
||||||
|
{
|
||||||
|
e_screensaver_eval(1);
|
||||||
|
_e_screensaver_timer = NULL;
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
E_API int
|
E_API int
|
||||||
e_screensaver_timeout_get(Eina_Bool use_idle)
|
e_screensaver_timeout_get(Eina_Bool use_idle)
|
||||||
{
|
{
|
||||||
|
@ -52,21 +69,22 @@ e_screensaver_timeout_get(Eina_Bool use_idle)
|
||||||
E_API void
|
E_API void
|
||||||
e_screensaver_update(void)
|
e_screensaver_update(void)
|
||||||
{
|
{
|
||||||
#ifndef HAVE_WAYLAND_ONLY
|
int timeout;
|
||||||
int timeout = 0, interval = 0, blanking = 0, expose = 0;
|
|
||||||
Eina_Bool changed = EINA_FALSE;
|
Eina_Bool changed = EINA_FALSE;
|
||||||
|
|
||||||
timeout = e_screensaver_timeout_get(EINA_TRUE);
|
timeout = e_screensaver_timeout_get(EINA_TRUE);
|
||||||
|
|
||||||
interval = e_config->screensaver_interval;
|
|
||||||
blanking = e_config->screensaver_blanking;
|
|
||||||
expose = e_config->screensaver_expose;
|
|
||||||
|
|
||||||
if (_e_screensaver_timeout != timeout)
|
if (_e_screensaver_timeout != timeout)
|
||||||
{
|
{
|
||||||
_e_screensaver_timeout = timeout;
|
_e_screensaver_timeout = timeout;
|
||||||
changed = EINA_TRUE;
|
changed = EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
#ifndef HAVE_WAYLAND_ONLY
|
||||||
|
int interval = 0, blanking = 0, expose = 0;
|
||||||
|
|
||||||
|
interval = e_config->screensaver_interval;
|
||||||
|
blanking = e_config->screensaver_blanking;
|
||||||
|
expose = e_config->screensaver_expose;
|
||||||
|
|
||||||
// if (_e_screensaver_interval != interval)
|
// if (_e_screensaver_interval != interval)
|
||||||
// {
|
// {
|
||||||
// _e_screensaver_interval = interval;
|
// _e_screensaver_interval = interval;
|
||||||
|
@ -83,12 +101,19 @@ e_screensaver_update(void)
|
||||||
changed = EINA_TRUE;
|
changed = EINA_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e_comp_util_has_x())
|
if (e_comp->comp_type != E_PIXMAP_TYPE_WL)
|
||||||
{
|
{
|
||||||
if (changed)
|
if (changed)
|
||||||
ecore_x_screensaver_set(timeout, interval, blanking, expose);
|
ecore_x_screensaver_set(timeout, interval, blanking, expose);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
if (changed && (e_comp->comp_type == E_PIXMAP_TYPE_WL))
|
||||||
|
{
|
||||||
|
E_FREE_FUNC(_e_screensaver_timer, ecore_timer_del);
|
||||||
|
_e_screensaver_timer = ecore_timer_add(timeout, _e_screensaver_idle_timeout_cb, NULL);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
E_API void
|
E_API void
|
||||||
|
@ -281,6 +306,9 @@ _e_screensaver_handler_screensaver_off_cb(void *data EINA_UNUSED, int type EINA_
|
||||||
}
|
}
|
||||||
else if (_e_screensaver_ask_presentation_count)
|
else if (_e_screensaver_ask_presentation_count)
|
||||||
_e_screensaver_ask_presentation_count = 0;
|
_e_screensaver_ask_presentation_count = 0;
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
_e_screensaver_timer = ecore_timer_add(_e_screensaver_timeout, _e_screensaver_idle_timeout_cb, NULL);
|
||||||
|
#endif
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -305,6 +333,14 @@ _e_screensaver_handler_desk_show_cb(void *data EINA_UNUSED, int type EINA_UNUSED
|
||||||
return ECORE_CALLBACK_PASS_ON;
|
return ECORE_CALLBACK_PASS_ON;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
_e_screensaver_idle_timer_cb(void *d EINA_UNUSED)
|
||||||
|
{
|
||||||
|
ecore_event_add(E_EVENT_SCREENSAVER_ON, NULL, NULL, NULL);
|
||||||
|
screensaver_idle_timer = NULL;
|
||||||
|
return EINA_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
EINTERN void
|
EINTERN void
|
||||||
e_screensaver_preinit(void)
|
e_screensaver_preinit(void)
|
||||||
{
|
{
|
||||||
|
@ -439,24 +475,93 @@ e_screensaver_on_get(void)
|
||||||
E_API void
|
E_API void
|
||||||
e_screensaver_activate(void)
|
e_screensaver_activate(void)
|
||||||
{
|
{
|
||||||
|
if (e_screensaver_on_get()) return;
|
||||||
|
|
||||||
|
E_FREE_FUNC(screensaver_idle_timer, ecore_timer_del);
|
||||||
#ifndef HAVE_WAYLAND_ONLY
|
#ifndef HAVE_WAYLAND_ONLY
|
||||||
if (e_comp_util_has_x())
|
if (e_comp->comp_type != E_PIXMAP_TYPE_WL)
|
||||||
{
|
|
||||||
ecore_x_screensaver_activate();
|
ecore_x_screensaver_activate();
|
||||||
}
|
#endif
|
||||||
#else
|
#ifdef HAVE_WAYLAND
|
||||||
|
if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
|
||||||
|
e_screensaver_eval(1);
|
||||||
|
E_FREE_FUNC(_e_screensaver_timer, ecore_timer_del);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
E_API void
|
E_API void
|
||||||
e_screensaver_deactivate(void)
|
e_screensaver_deactivate(void)
|
||||||
{
|
{
|
||||||
|
if (!e_screensaver_on_get()) return;
|
||||||
|
|
||||||
|
E_FREE_FUNC(screensaver_idle_timer, ecore_timer_del);
|
||||||
#ifndef HAVE_WAYLAND_ONLY
|
#ifndef HAVE_WAYLAND_ONLY
|
||||||
if (e_comp_util_has_x())
|
if (e_comp->comp_type != E_PIXMAP_TYPE_WL)
|
||||||
{
|
|
||||||
ecore_x_screensaver_reset();
|
ecore_x_screensaver_reset();
|
||||||
}
|
#endif
|
||||||
#else
|
#ifdef HAVE_WAYLAND
|
||||||
|
if (e_comp->comp_type == E_PIXMAP_TYPE_WL)
|
||||||
|
e_screensaver_eval(0);
|
||||||
|
E_FREE_FUNC(_e_screensaver_timer, ecore_timer_del);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
E_API void
|
||||||
|
e_screensaver_eval(Eina_Bool saver_on)
|
||||||
|
{
|
||||||
|
if (saver_on)
|
||||||
|
{
|
||||||
|
if (e_config->backlight.idle_dim)
|
||||||
|
{
|
||||||
|
double t = e_config->screensaver_timeout -
|
||||||
|
e_config->backlight.timer;
|
||||||
|
|
||||||
|
if (t < 1.0) t = 1.0;
|
||||||
|
E_FREE_FUNC(screensaver_idle_timer, ecore_timer_del);
|
||||||
|
if (e_config->screensaver_enable)
|
||||||
|
screensaver_idle_timer = ecore_timer_add
|
||||||
|
(t, _e_screensaver_idle_timer_cb, NULL);
|
||||||
|
if (e_backlight_mode_get(NULL) != E_BACKLIGHT_MODE_DIM)
|
||||||
|
{
|
||||||
|
e_backlight_mode_set(NULL, E_BACKLIGHT_MODE_DIM);
|
||||||
|
screensaver_dimmed = EINA_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
if (e_config->backlight.idle_dim)
|
||||||
|
{
|
||||||
|
if (e_backlight_mode_get(NULL) != E_BACKLIGHT_MODE_NORMAL)
|
||||||
|
e_backlight_mode_set(NULL, E_BACKLIGHT_MODE_NORMAL);
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (screensaver_dimmed)
|
||||||
|
{
|
||||||
|
if (e_backlight_mode_get(NULL) != E_BACKLIGHT_MODE_NORMAL)
|
||||||
|
e_backlight_mode_set(NULL, E_BACKLIGHT_MODE_NORMAL);
|
||||||
|
screensaver_dimmed = EINA_FALSE;
|
||||||
|
}
|
||||||
|
if (e_screensaver_on_get())
|
||||||
|
ecore_event_add(E_EVENT_SCREENSAVER_OFF, NULL, NULL, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
E_API void
|
||||||
|
e_screensaver_notidle(void)
|
||||||
|
{
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
if (_e_screensaver_timer)
|
||||||
|
ecore_timer_reset(_e_screensaver_timer);
|
||||||
|
if (e_screensaver_on_get())
|
||||||
|
e_screensaver_eval(0);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,9 @@ E_API Eina_Bool e_screensaver_on_get(void);
|
||||||
E_API void e_screensaver_activate(void);
|
E_API void e_screensaver_activate(void);
|
||||||
E_API void e_screensaver_deactivate(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 extern int E_EVENT_SCREENSAVER_ON;
|
E_API extern int E_EVENT_SCREENSAVER_ON;
|
||||||
E_API extern int E_EVENT_SCREENSAVER_OFF;
|
E_API extern int E_EVENT_SCREENSAVER_OFF;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue