From: Doyoun Kang Date: Tue, 28 Apr 2020 05:00:04 +0000 (+0900) Subject: e_service_launcher: fix code to send e,action,launch_real,done signal to target window X-Git-Tag: submit/tizen/20200518.052213~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=23f66f24f10ecab33b3d126cc02347fbfd241161;p=platform%2Fupstream%2Fenlightenment.git 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 --- 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