e_service_launcher: pass correct launchscreen path 94/225094/1
authorMinJeong Kim <minjjj.kim@samsung.com>
Mon, 17 Feb 2020 08:53:41 +0000 (17:53 +0900)
committerMinJeong Kim <minjjj.kim@samsung.com>
Mon, 17 Feb 2020 09:09:14 +0000 (18:09 +0900)
Change-Id: I9fc95965fe9f451d2b6215c41a8a38872e7be425
Signed-off-by: MinJeong Kim <minjjj.kim@samsung.com>
src/bin/e_policy_wl.c
src/bin/services/e_service_launcher.c
src/bin/services/e_service_launcher.h

index bdb37746ced9e3d8c90d747df8d9af08ba986510..b994d1cbbb17cac910b3bc1001e100e7eaa1a546 100644 (file)
@@ -5887,8 +5887,11 @@ _launch_splash_off(E_Policy_Wl_Tzlaunch_Splash *tzlaunch_splash)
    tzlaunch_splash->valid = EINA_FALSE;
    if (tzlaunch_splash->timeout) ecore_timer_del(tzlaunch_splash->timeout);
    tzlaunch_splash->timeout = NULL;
-   if (tzlaunch_splash->appid) eina_stringshare_del(tzlaunch_splash->appid);
+
+   eina_stringshare_del(tzlaunch_splash->appid);
    tzlaunch_splash->appid = NULL;
+   eina_stringshare_del(tzlaunch_splash->path);
+   tzlaunch_splash->path = NULL;
 
 
    ELOGF("TZPOL",
@@ -5991,7 +5994,7 @@ _launchscreen_splash_setup(E_Policy_Wl_Tzlaunch_Splash *splash,
          "Launchscreen setup | options %p extra_config:%p",
          ec, options, extra_config);
 
-   splash->path = pfname;
+   splash->path = eina_stringshare_add(pfname);
    splash->type = ftype;
    splash->indicator = indicator;
    splash->angle = angle;
@@ -6274,7 +6277,7 @@ _tzlaunch_splash_iface_cb_owner(struct wl_client *client EINA_UNUSED, struct wl_
              /* TODO : use tizen_launch_appinfo */
              if (tzlaunch_splash->custom_effect_callee)
                {
-                  e_service_launcher_callee_register(tzlaunch_splash->appid, new_ec);
+                  e_service_launcher_callee_register(new_ec, tzlaunch_splash->appid, tzlaunch_splash->path, SPLASH_GROUP_NAME);
                }
 
              evas_object_show(new_ec->frame);
@@ -6318,7 +6321,7 @@ _tzlaunch_splash_iface_cb_owner(struct wl_client *client EINA_UNUSED, struct wl_
         /* TODO : use tizen_launch_appinfo */
         if (tzlaunch_splash->custom_effect_callee)
           {
-             e_service_launcher_callee_register(tzlaunch_splash->appid, old_ec);
+             e_service_launcher_callee_register(old_ec, tzlaunch_splash->appid, tzlaunch_splash->path, SPLASH_GROUP_NAME);
           }
 
         evas_object_show(old_ec->frame);
@@ -6456,6 +6459,8 @@ _tzlaunch_splash_destroy(struct wl_resource *res_tzlaunch_splash)
    tzlaunch_effect = tzlaunch_splash->tzlaunch_effect;
    tzlaunch_effect->splash_list = eina_list_remove(tzlaunch_effect->splash_list, tzlaunch_splash);
 
+   eina_stringshare_del(tzlaunch_splash->appid);
+   eina_stringshare_del(tzlaunch_splash->path);
    memset(tzlaunch_splash, 0x0, sizeof(E_Policy_Wl_Tzlaunch_Splash));
    E_FREE(tzlaunch_splash);
 }
index f038fa64731f123fdff8f41e8078cceff49d4ea4..ef00b5a27ba285ce6956182a598bc1788571058d 100644 (file)
@@ -38,6 +38,9 @@ struct _E_Service_Launcher
 
         Eina_Bool                       delay_del;      //refered delay_del
         E_Object_Delfn                 *delfn;          //del callback of target E_Client
+
+        const char                     *splash_path;    //path of file for splash
+        const char                     *splash_group;   //group name for splash
      } target; //target window information for transition
 
    E_Client                            *launched_ec;    //E_Client was launched by launcher
@@ -186,6 +189,8 @@ _launcher_post_forward(E_Service_Launcher *lc, Eina_Bool success)
    lc->target.pid = -1;
 
    E_FREE_FUNC(lc->target.appid, eina_stringshare_del);
+   E_FREE_FUNC(lc->target.splash_path, eina_stringshare_del);
+   E_FREE_FUNC(lc->target.splash_group, eina_stringshare_del);
    E_FREE_FUNC(lc->buff_attach, ecore_event_handler_del);
 
    //if forward animation is failed, enlightenment can run animation instead.
@@ -230,6 +235,8 @@ _launcher_post_backward(E_Service_Launcher *lc, Eina_Bool success)
    lc->direction = 0;
 
    E_FREE_FUNC(lc->target.appid, eina_stringshare_del);
+   E_FREE_FUNC(lc->target.splash_path, eina_stringshare_del);
+   E_FREE_FUNC(lc->target.splash_group, eina_stringshare_del);
    E_FREE_FUNC(lc->buff_attach, ecore_event_handler_del);
 
    if (target_ec)
@@ -324,7 +331,10 @@ _launcher_prepare_send(E_Service_Launcher *lc,
               EINA_SAFETY_ON_NULL_GOTO(content, fail);
 
               target_type = TWS_SERVICE_LAUNCHER_TARGET_TYPE_EDJE;
-              edje_object_file_get(content, &target_path, &target_group);
+              target_path = lc->target.splash_path;
+              target_group = lc->target.splash_group;
+              if ((!target_path) || (!target_group))
+                edje_object_file_get(content, &target_path, &target_group);
               EINA_SAFETY_ON_NULL_GOTO(target_path, fail);
               EINA_SAFETY_ON_NULL_GOTO(target_group, fail);
 
@@ -1247,6 +1257,8 @@ _launcher_handler_launcher_runner_set(E_Service_Launcher *lc)
               runner->target.pid = -1;
               runner->target.ec = NULL;
               E_FREE_FUNC(runner->target.appid, eina_stringshare_del);
+              E_FREE_FUNC(runner->target.splash_path, eina_stringshare_del);
+              E_FREE_FUNC(runner->target.splash_group, eina_stringshare_del);
               break;
            default:
               break;
@@ -1613,6 +1625,8 @@ send_stop:
    runner->serial = 0;
    runner->target.ec = NULL;
    E_FREE_FUNC(runner->target.appid, eina_stringshare_del);
+   E_FREE_FUNC(runner->target.splash_path, eina_stringshare_del);
+   E_FREE_FUNC(runner->target.splash_group, eina_stringshare_del);
 
    _launcher_stop_send(runner);
    _launcher_state_set(runner, LAUNCHER_STATE_IDLE);
@@ -1966,7 +1980,7 @@ e_service_launcher_release_shared_widget_launch(E_Client *ec)
 }
 
 EINTERN void
-e_service_launcher_callee_register(const char *appid, E_Client *callee)
+e_service_launcher_callee_register(E_Client *callee, const char *appid, const char *splash_path, const char *splash_group)
 {
    E_Service_Launcher *runner;
 
@@ -1981,6 +1995,8 @@ e_service_launcher_callee_register(const char *appid, E_Client *callee)
         if (!e_util_strcmp(appid, runner->target.appid))
           {
              runner->target.ec = callee;
+             runner->target.splash_path = eina_stringshare_add(splash_path);
+             runner->target.splash_group = eina_stringshare_add(splash_group);
 
              ELOGF("LAUNCHER_SRV", "Register callee(%p)  by appid(%s)",
                    runner->ec, runner->target.ec, runner->target.appid);
index f20b706f9a67b5420066d5eae46bf90b4cf7f296..0b84d63b6b8893098d5bf0be54c13ed724dc2805 100644 (file)
@@ -10,7 +10,7 @@ EINTERN void              e_service_launcher_client_unset(E_Client *ec);
 EINTERN void              e_service_launcher_prepare_send_with_shared_widget_info(E_Client *target_ec, const char *shared_widget_info, uint32_t state, uint32_t serial);
 EINTERN void              e_service_launcher_release_shared_widget_launch(E_Client *ec);
 
-EINTERN void              e_service_launcher_callee_register(const char *appid, E_Client *callee);
+EINTERN void              e_service_launcher_callee_register(E_Client *callee, const char *appid, const char *splash_path, const char *splash_group);
 EINTERN void              e_service_launcher_appid_register(const char *appid, pid_t pid);
 
 #endif