From e38ac79a3c4926c5f771779a15d6403cf60c92f0 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Wed, 19 Jul 2017 10:30:05 +0900 Subject: [PATCH] pointer freeze - delay by 10 sec... because anim is used for hiding this broke pointer hiding entirely... fix --- src/bin/e_comp_canvas.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/bin/e_comp_canvas.c b/src/bin/e_comp_canvas.c index 8c5cf1e71..1e3d89a65 100644 --- a/src/bin/e_comp_canvas.c +++ b/src/bin/e_comp_canvas.c @@ -3,6 +3,7 @@ static Eina_List *handlers; static Ecore_Timer *timer_post_screensaver_lock = NULL; static Ecore_Timer *timer_post_screensaver_on = NULL; +static Ecore_Timer *timer_pointer_freeze = NULL; static void _e_comp_canvas_cb_del() @@ -10,6 +11,7 @@ _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); + E_FREE_FUNC(timer_pointer_freeze, ecore_timer_del); } static void @@ -279,6 +281,14 @@ _e_comp_cb_timer_post_screensaver_lock(void *data EINA_UNUSED) return ECORE_CALLBACK_CANCEL; } +static Eina_Bool +_e_comp_cb_screensaver_ponter_freeze_cb(void *data EINA_UNUSED) +{ + e_pointers_freeze_set(EINA_TRUE); + timer_pointer_freeze = NULL; + return EINA_FALSE; +} + static Eina_Bool _e_comp_cb_screensaver_on() { @@ -296,7 +306,9 @@ _e_comp_cb_screensaver_on() (e_config->desklock_post_screensaver_time, _e_comp_cb_timer_post_screensaver_lock, NULL); } - e_pointers_freeze_set(1); + if (timer_pointer_freeze) ecore_timer_del(timer_pointer_freeze); + timer_pointer_freeze = ecore_timer_add + (10.0, _e_comp_cb_screensaver_ponter_freeze_cb, NULL); return ECORE_CALLBACK_PASS_ON; } @@ -305,7 +317,12 @@ _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); - e_pointers_freeze_set(0); + e_pointers_freeze_set(EINA_FALSE); + if (timer_pointer_freeze) + { + ecore_timer_del(timer_pointer_freeze); + timer_pointer_freeze = NULL; + } return ECORE_CALLBACK_PASS_ON; } ////////////////////////////////////