From: Changyeon Lee Date: Thu, 23 Apr 2020 12:25:01 +0000 (+0900) Subject: e_service_launcher: flush queue of target ec after launch done X-Git-Tag: submit/tizen/20200424.090401~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0ceeb25916986c9bb7127aa090f7e9450a0ed167;p=platform%2Fupstream%2Fenlightenment.git e_service_launcher: flush queue of target ec after launch done Change-Id: If76c085ea07f89f3a3196db5ed495f3880091c2b --- diff --git a/src/bin/services/e_service_launcher.c b/src/bin/services/e_service_launcher.c index 7dfe53a1d3..594e3809cc 100644 --- a/src/bin/services/e_service_launcher.c +++ b/src/bin/services/e_service_launcher.c @@ -1,6 +1,7 @@ #include "e.h" #include "e_policy_wl.h" #include +#include #include "services/e_service_launcher.h" typedef struct _E_Service_Launcher E_Service_Launcher; @@ -1047,6 +1048,24 @@ _launcher_cb_launching(struct wl_client *client EINA_UNUSED, } } +static void +_launcher_target_ec_queue_flush(E_Service_Launcher *lc) +{ + struct wayland_tbm_client_queue *cqueue; + + if (!e_comp_wl) return; + if (!lc) return; + if (!lc->target.ec) return; + if (!lc->target.ec->comp_data) return; + if (!lc->target.ec->comp_data->wl_surface) return; + if (e_object_is_del(E_OBJECT(lc->target.ec))) return; + + cqueue = wayland_tbm_server_client_queue_get(e_comp_wl->tbm.server, + lc->target.ec->comp_data->wl_surface); + if (cqueue) + wayland_tbm_server_client_queue_flush(cqueue); +} + static void _launcher_cb_launch_done(struct wl_client *client EINA_UNUSED, struct wl_resource *res_tws_lc, @@ -1100,6 +1119,7 @@ _launcher_cb_launch_done(struct wl_client *client EINA_UNUSED, } else //normal launcher { + _launcher_target_ec_queue_flush(lc); if (lc->direction == TWS_SERVICE_LAUNCHER_DIRECTION_FORWARD) _launcher_post_forward(lc, EINA_TRUE); else if (lc->direction == TWS_SERVICE_LAUNCHER_DIRECTION_BACKWARD)