From 3fc786413ccc076065d49f12ba71be0e2210b809 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Tue, 11 Jul 2017 16:39:51 +0900 Subject: [PATCH] e - fix desklock + grabs with hiding pointer on screen powerdown/up --- src/bin/e_comp.c | 26 ++++++++++++++++++-------- src/bin/e_sys.c | 1 + 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c index 01e8d4d51..ef3b06b3e 100644 --- a/src/bin/e_comp.c +++ b/src/bin/e_comp.c @@ -1822,8 +1822,12 @@ _e_comp_pointer_ungrab(void) { if (e_comp->comp_type == E_PIXMAP_TYPE_X) { - e_grabinput_release(e_comp->suspend_grabbed, e_comp->suspend_grabbed); - ecore_x_window_free(e_comp->suspend_grabbed); + if (e_comp->suspend_grabbed) + { + e_grabinput_release(e_comp->suspend_grabbed, e_comp->suspend_grabbed); + ecore_x_window_free(e_comp->suspend_grabbed); + e_comp->suspend_grabbed = 0; + } } } @@ -1841,9 +1845,12 @@ e_comp_screen_suspend(void) { #ifndef HAVE_WAYLAND_ONLY if (e_comp->comp_type != E_PIXMAP_TYPE_X) return; - _e_comp_pointer_ungrab(); - _e_comp_pointer_grab(); - if (!e_comp->suspend_grabbed) return; + if (!e_desklock_state_get()) + { + _e_comp_pointer_ungrab(); + _e_comp_pointer_grab(); + if (!e_comp->suspend_grabbed) return; + } if ((e_comp->pointer) && (e_comp->pointer->o_ptr)) { const char *s = edje_object_data_get(e_comp->pointer->o_ptr, @@ -1873,9 +1880,12 @@ e_comp_screen_resume(void) { #ifndef HAVE_WAYLAND_ONLY if (e_comp->comp_type != E_PIXMAP_TYPE_X) return; - _e_comp_pointer_ungrab(); - _e_comp_pointer_grab(); - if (!e_comp->suspend_grabbed) return; + if (!e_desklock_state_get()) + { + _e_comp_pointer_ungrab(); + _e_comp_pointer_grab(); + if (!e_comp->suspend_grabbed) return; + } if ((e_comp->pointer) && (e_comp->pointer->o_ptr)) { const char *s = edje_object_data_get(e_comp->pointer->o_ptr, diff --git a/src/bin/e_sys.c b/src/bin/e_sys.c index d323ea60b..0a79b97da 100644 --- a/src/bin/e_sys.c +++ b/src/bin/e_sys.c @@ -1151,6 +1151,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw) { _e_sys_susp_hib_check(); if (e_config->desklock_on_suspend) + // XXX: this desklock - ensure its instant e_desklock_show(EINA_TRUE); _e_sys_begin_time = ecore_time_get(); if (systemd_works)