From af63443e1974295a149a1d8216bbd308046ed09c Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Thu, 28 May 2020 23:07:56 +0100 Subject: [PATCH] sys - fix non-systemd code patch for suspend/resume handling/tracking so in the non-systemd case there was a current e sys action stored and never cleared. e keeps thinking it is in the midddle of an action as it was not cleared. the systemd code path was different and didn't suffer from this. this fixes that so the non-systemd path works too. @fix --- src/bin/e_sys.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/bin/e_sys.c b/src/bin/e_sys.c index 89c388097..b6066d38f 100644 --- a/src/bin/e_sys.c +++ b/src/bin/e_sys.c @@ -64,7 +64,7 @@ E_API int E_EVENT_SYS_RESUME = -1; static Eina_Bool _e_sys_comp_done2_cb(void *data) { - printf("_e_sys_comp_done2_cb %p\n", data); + printf("SSS: _e_sys_comp_done2_cb %p\n", data); e_sys_action_raw_do((E_Sys_Action)(long)data, NULL); return EINA_FALSE; } @@ -268,6 +268,7 @@ _e_sys_comp_resume2(void *data EINA_UNUSED) Eina_List *l; E_Zone *zone; + _e_sys_action_current = E_SYS_NONE; #ifndef HAVE_WAYLAND_ONLY if (e_comp->comp_type == E_PIXMAP_TYPE_X) _e_comp_x_screensaver_off(); @@ -289,6 +290,7 @@ _e_sys_comp_resume2(void *data EINA_UNUSED) static void _e_sys_comp_resume(void) { + printf("SSS: sys resume ... \n"); edje_thaw(); ecore_evas_manual_render_set(e_comp->ee, EINA_FALSE); evas_damage_rectangle_add(e_comp->evas, 0, 0, e_comp->w, e_comp->h); @@ -492,6 +494,7 @@ e_sys_action_do(E_Sys_Action a, char *param) break; } + printf("SSS: e_sys_ction_do ret=%i a=%i\n", ret, _e_sys_action_current); if (ret) _e_sys_action_current = a; else _e_sys_action_current = E_SYS_NONE; @@ -512,6 +515,7 @@ e_sys_action_raw_do(E_Sys_Action a, char *param) ret = _e_sys_action_do(a, param, EINA_TRUE); + printf("SSS: e_sys_ction_raw_do ret=%i a=%i\n", ret, _e_sys_action_current); if (ret) _e_sys_action_current = a; else _e_sys_action_current = E_SYS_NONE; @@ -669,9 +673,11 @@ _e_sys_systemd_hibernate(void) static Eina_Bool _e_sys_resume_delay(void *d EINA_UNUSED) { + printf("SSS: hib check resume delay...\n"); _e_sys_resume_delay_timer = NULL; if (_e_sys_suspended) { + printf("SSS: suspended to false\n"); _e_sys_suspended = EINA_FALSE; ecore_event_add(E_EVENT_SYS_RESUME, NULL, NULL, NULL); _e_sys_comp_resume(); @@ -687,6 +693,7 @@ _e_sys_susp_hib_check_timer_cb(void *data EINA_UNUSED) printf("SSS: hib check @%1.8f (unix %1.8f, delt %1.8f)\n", ecore_time_get(), t, t - _e_sys_susp_hib_check_last_tick); if ((t - _e_sys_susp_hib_check_last_tick) > 0.5) { + printf("SSS: hib check long gap\n"); _e_sys_susp_hib_check_timer = NULL; if (_e_sys_resume_delay_timer) ecore_timer_del(_e_sys_resume_delay_timer); @@ -865,6 +872,7 @@ after: static void _e_sys_logout_after(void) { + printf("SSS: sys action after %i\n", _e_sys_action_after); _e_sys_action_current = _e_sys_action_after; _e_sys_action_do(_e_sys_action_after, NULL, _e_sys_action_after_raw); _e_sys_action_after = E_SYS_NONE; @@ -993,6 +1001,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw) { e_fm2_die(); ecore_main_loop_quit(); + ret = 1; } else return 0; @@ -1007,6 +1016,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw) e_fm2_die(); restart = 1; ecore_main_loop_quit(); + ret = 1; } else { @@ -1048,10 +1058,8 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw) if (systemd_works) _e_sys_systemd_poweroff(); else - { - e_system_send("power-halt", NULL); - ret = 1; - } + e_system_send("power-halt", NULL); + ret = 1; } else { @@ -1075,18 +1083,14 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw) if (systemd_works) _e_sys_systemd_reboot(); else - { - e_system_send("power-reboot", NULL); - ret = 1; - } + e_system_send("power-reboot", NULL); } else { - ret = 0; _e_sys_begin_time = ecore_time_get(); _e_sys_logout_begin(a, EINA_TRUE); } - /* FIXME: display reboot status */ + ret = 1; } break; @@ -1112,8 +1116,8 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw) { _e_sys_susp_hib_check(); e_system_send("power-suspend", NULL); - ret = 1; } + ret = 1; } else { @@ -1162,8 +1166,8 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw) { _e_sys_susp_hib_check(); e_system_send("power-hibernate", NULL); - ret = 1; } + ret = 1; } else {