e_service_launcher: reset ec's animatable lock flag after launching 09/233109/1 accepted/tizen/5.5/unified/20200512.132434 submit/tizen_5.5/20200512.074005
authorDoyoun Kang <doyoun.kang@samsung.com>
Tue, 12 May 2020 07:33:58 +0000 (16:33 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Tue, 12 May 2020 07:34:02 +0000 (16:34 +0900)
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

index 8676ee5fea5c7bdf87c0c8c5e6e1b5c51839cb7d..4d1c8587bc139a9b9d90cf1f3f1f65a715f9f764 100644 (file)
@@ -1991,6 +1991,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                                                                \
@@ -2051,6 +2089,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;