From: Doyoun Kang Date: Tue, 12 May 2020 07:33:58 +0000 (+0900) Subject: e_service_launcher: reset ec's animatable lock flag after launching X-Git-Tag: accepted/tizen/unified/20200528.133041~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F09%2F233209%2F2;p=platform%2Fupstream%2Fenlightenment.git 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 --- 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;