From 00586c6063377b4f473fc277dad14506f3cafebf Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Tue, 12 May 2020 16:33:58 +0900 Subject: [PATCH] e_service_launcher: reset ec's animatable lock flag after launching There was a bug that the background effect was not shown when the window's show effect was running. It was due to the background ec's animatable lock flag was set by launcher service. For fix this problem, we add resetting animatable lock flag code after all launching process done. Change-Id: If3a71f46c4349965e02a54a0ade77d6d42fcefd7 --- src/bin/services/e_service_launcher.c | 43 +++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/bin/services/e_service_launcher.c b/src/bin/services/e_service_launcher.c index 8c3da10..06ca201 100644 --- a/src/bin/services/e_service_launcher.c +++ b/src/bin/services/e_service_launcher.c @@ -1810,6 +1810,44 @@ send_stop: return ECORE_CALLBACK_PASS_ON; } +static Eina_Bool +_launcher_handler_cb_event_client_visibility_change(void *data, int type EINA_UNUSED, void *event) +{ + E_Service_Launcher *pre_runner; + E_Client *ec; + E_Event_Client *ev; + + ev = (E_Event_Client *)event; + EINA_SAFETY_ON_NULL_RETURN_VAL(ev, ECORE_CALLBACK_PASS_ON); + EINA_SAFETY_ON_NULL_RETURN_VAL(ev->ec, ECORE_CALLBACK_PASS_ON); + + ec = ev->ec; + if (ec->visibility.obscured != E_VISIBILITY_UNOBSCURED) + return ECORE_CALLBACK_PASS_ON; + + pre_runner = _launcher_handler_launcher_pre_runner_get(); + if (pre_runner) + { + switch (pre_runner->state) + { + case LAUNCHER_STATE_DONE: + case LAUNCHER_STATE_CANCELED: + if (pre_runner->launched_ec) + { + if (pre_runner->launched_ec == ec) + { + e_policy_animatable_lock(pre_runner->launched_ec, E_POLICY_ANIMATABLE_CUSTOMIZED, 0); + } + } + break; + default: + break; + } + } + + return ECORE_CALLBACK_PASS_ON; +} + #undef LAUNCHER_HANDLER_CB_ADD #define LAUNCHER_HANDLER_CB_ADD(l, appender, event_type, cb, data) \ do \ @@ -1868,6 +1906,11 @@ _launcher_handler_create(void) E_EVENT_CLIENT_SHOW, _launcher_handler_cb_event_client_show, NULL); + LAUNCHER_HANDLER_CB_ADD(laundler->hdlrs_ev, + ecore_event_handler_add, + E_EVENT_CLIENT_VISIBILITY_CHANGE, + _launcher_handler_cb_event_client_visibility_change, NULL); + ELOGF("LAUNCHER_SRV", "new launcher handler(%p) created", NULL, laundler); return laundler; -- 2.7.4