e_service_launcher: reset ec's animatable lock flag after launching 09/233209/2
authorDoyoun Kang <doyoun.kang@samsung.com>
Tue, 12 May 2020 07:33:58 +0000 (16:33 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Wed, 13 May 2020 07:01:24 +0000 (07:01 +0000)
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 8c3da10..06ca201 100644 (file)
@@ -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;