From 7405942cc82c19bf8cf686f7f50a935fccc298fb Mon Sep 17 00:00:00 2001 From: MinJeong Kim Date: Mon, 17 Feb 2020 17:53:41 +0900 Subject: [PATCH] e_service_launcher: pass correct launchscreen path Change-Id: Ie87c030c4448d41034b330b6910a746965466f8d Signed-off-by: MinJeong Kim --- src/bin/e_policy_wl.c | 13 +++++++++---- src/bin/services/e_service_launcher.c | 20 ++++++++++++++++++-- src/bin/services/e_service_launcher.h | 2 +- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/bin/e_policy_wl.c b/src/bin/e_policy_wl.c index 112983d8ac..d683ee5cad 100644 --- a/src/bin/e_policy_wl.c +++ b/src/bin/e_policy_wl.c @@ -5933,8 +5933,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", @@ -6037,7 +6040,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; @@ -6318,7 +6321,7 @@ _tzlaunch_splash_iface_cb_owner(struct wl_client *client EINA_UNUSED, struct wl_ 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); @@ -6361,7 +6364,7 @@ _tzlaunch_splash_iface_cb_owner(struct wl_client *client EINA_UNUSED, struct wl_ 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); @@ -6499,6 +6502,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); } diff --git a/src/bin/services/e_service_launcher.c b/src/bin/services/e_service_launcher.c index 6b84ab5fa9..ad7c8a1561 100644 --- a/src/bin/services/e_service_launcher.c +++ b/src/bin/services/e_service_launcher.c @@ -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 @@ -187,6 +190,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. @@ -231,6 +236,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) @@ -325,7 +332,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); @@ -1248,6 +1258,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; @@ -1614,6 +1626,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); @@ -1995,7 +2009,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; @@ -2010,6 +2024,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); diff --git a/src/bin/services/e_service_launcher.h b/src/bin/services/e_service_launcher.h index f3e01a3912..9b3440d13c 100644 --- a/src/bin/services/e_service_launcher.h +++ b/src/bin/services/e_service_launcher.h @@ -10,6 +10,6 @@ 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); #endif -- 2.34.1