e_service_launcher: fix code to send e,action,launch_real,done signal to target window 51/233051/2
authorDoyoun Kang <doyoun.kang@samsung.com>
Tue, 28 Apr 2020 05:00:04 +0000 (14:00 +0900)
committerDoyoun Kang <doyoun.kang@samsung.com>
Wed, 13 May 2020 07:00:07 +0000 (07:00 +0000)
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

index 7a721c4..0f2937e 100644 (file)
@@ -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