From 23f66f24f10ecab33b3d126cc02347fbfd241161 Mon Sep 17 00:00:00 2001 From: Doyoun Kang Date: Tue, 28 Apr 2020 14:00:04 +0900 Subject: [PATCH] e_service_launcher: fix code to send e,action,launch_real,done signal to target window There was a bug that the launching done signal was sent to the launcher service window. We modified code to send lannching done signal to the target(launched) window not launcher window. Change-Id: Ib1bf3b495e723cbdda206d3c5452cb57d3655b40 --- src/bin/services/e_service_launcher.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/bin/services/e_service_launcher.c b/src/bin/services/e_service_launcher.c index 7a721c496b..0f2937ed9a 100644 --- a/src/bin/services/e_service_launcher.c +++ b/src/bin/services/e_service_launcher.c @@ -1073,12 +1073,17 @@ _launcher_cb_launch_done(struct wl_client *client EINA_UNUSED, { E_Service_Launcher *lc; E_Service_Launcher *runner; + E_Client *target_ec = NULL; + enum tws_service_launcher_direction launch_direction = 0; lc = wl_resource_get_user_data(res_tws_lc); EINA_SAFETY_ON_NULL_RETURN(lc); ELOGF("LAUNCHER_SRV", "LAUNCH_DONE(%d) target:%p", lc->ec, serial, lc->target.ec); + target_ec = lc->target.ec; + launch_direction = lc->direction; + //check current state of lc runner = _launcher_handler_launcher_runner_get(); if (runner != lc) @@ -1130,8 +1135,14 @@ _launcher_cb_launch_done(struct wl_client *client EINA_UNUSED, _launcher_handler_launcher_pre_runner_set(lc); _launcher_state_set(lc, LAUNCHER_STATE_DONE); - ELOGF("LAUNCH", "SHOW real win by launcher service", lc->ec); - e_comp_object_signal_emit(lc->ec->frame, "e,action,launch_real,done", "e"); + if (launch_direction == TWS_SERVICE_LAUNCHER_DIRECTION_FORWARD) + { + if (target_ec && !e_object_is_del(E_OBJECT(target_ec))) + { + ELOGF("LAUNCH", "SHOW real win (win:0x%08zx, ec:%p) by launcher service.", lc->ec, e_client_util_win_get(target_ec), target_ec); + e_comp_object_signal_emit(target_ec->frame, "e,action,launch_real,done", "e"); + } + } } static void -- 2.34.1