e_service_launcher: added identifier 'serial' to shared widget launch 18/212018/1 accepted/tizen/unified/20190814.065102 submit/tizen/20190813.104427
authorMinJeong Kim <minjjj.kim@samsung.com>
Tue, 13 Aug 2019 09:27:00 +0000 (18:27 +0900)
committerMinJeong Kim <minjjj.kim@samsung.com>
Tue, 13 Aug 2019 09:27:00 +0000 (18:27 +0900)
Change-Id: Ia67284e13cfabc836ae26665c8492092830be428
Signed-off-by: MinJeong Kim <minjjj.kim@samsung.com>
src/bin/e_policy_wl.c
src/bin/e_policy_wl.h
src/bin/services/e_service_launcher.c
src/bin/services/e_service_launcher.h

index fccce95d8267b732974105e1d2fdc5a39dd06ec8..9ad02745eef53a89efbe920cd7479febefa7d038 100644 (file)
@@ -5591,7 +5591,8 @@ _tzsh_iface_cb_softkey_get(struct wl_client *client, struct wl_resource *res_tzs
 // --------------------------------------------------------
 EINTERN Eina_Bool
 e_tzsh_shared_widget_launch_prepare_send(E_Client *callee_ec,
-                                         uint32_t state)
+                                         uint32_t state,
+                                         uint32_t serial)
 {
    E_Policy_Wl_Tzsh_Client *tzsh_client;
    Eina_List *l;
@@ -5607,7 +5608,8 @@ e_tzsh_shared_widget_launch_prepare_send(E_Client *callee_ec,
         if (tzsh_client->tzsh->ec != callee_ec) continue;
 
         tws_shared_widget_launch_send_prepare_shared_widget(tzsh_client->res_tzsh_client,
-                                                            state);
+                                                            state,
+                                                            serial);
 
         res = EINA_TRUE;
         break;
@@ -5627,7 +5629,8 @@ static void
 _tzsh_swl_iface_cb_prepare_shared_widget_done(struct wl_client *client,
                                               struct wl_resource *res_tzsh_swl,
                                               const char *shared_widget_info,
-                                              uint32_t state)
+                                              uint32_t state,
+                                              uint32_t serial)
 {
    E_Policy_Wl_Tzsh_Client *tzsh_client;
 
@@ -5642,7 +5645,8 @@ _tzsh_swl_iface_cb_prepare_shared_widget_done(struct wl_client *client,
    // send prepare event to caller
    e_service_launcher_prepare_send_with_shared_widget_info(tzsh_client->tzsh->ec,
                                                            shared_widget_info,
-                                                           state);
+                                                           state,
+                                                           serial);
 }
 
 static const struct tws_shared_widget_launch_interface _tzsh_swl_iface =
index fc593196c68d6493732e38063dabb4fcc0cd6c51..22ceff0dc7ede6d2e24abdbf048a3f6a4366e659 100644 (file)
@@ -76,7 +76,7 @@ EINTERN void e_tzsh_indicator_srv_property_update(E_Client *ec);
 EINTERN void e_tzsh_indicator_srv_ower_win_update(E_Zone *zone);
 
 /* tzsh shared widget launch */
-EINTERN Eina_Bool e_tzsh_shared_widget_launch_prepare_send(E_Client *callee_ec, uint32_t state);
+EINTERN Eina_Bool e_tzsh_shared_widget_launch_prepare_send(E_Client *callee_ec, uint32_t state, uint32_t serial);
 
 /* indicator */
 void         e_policy_wl_indicator_flick_send(E_Client *ec);
index 10626ec524f7199c2f77bb643009348d992c7552..14c6318f475907556ac3c2869fac49579eabe685 100644 (file)
@@ -361,8 +361,12 @@ _launcher_prepare_shared_widget_forward_send(E_Service_Launcher *lc,
    _launcher_launched_ec_set(lc, NULL);
    _launcher_target_ec_set(lc, target_ec);
 
+   lc->direction = TWS_SERVICE_LAUNCHER_DIRECTION_FORWARD;
+   lc->serial = wl_display_next_serial(e_comp_wl->wl.disp);
+
    sent = e_tzsh_shared_widget_launch_prepare_send(target_ec,
-                                                   TWS_SHARED_WIDGET_LAUNCH_PREPARE_STATE_WIDGET_HIDE);
+                                                   TWS_SHARED_WIDGET_LAUNCH_PREPARE_STATE_WIDGET_HIDE,
+                                                   lc->serial);
    if (!sent)
      {
         ELOGF("LAUNCHER_SRV", "Failed to send event(PREPARE:FORWARD)", lc->ec);
@@ -378,7 +382,6 @@ _launcher_prepare_shared_widget_backward_send(E_Service_Launcher *lc,
                                               E_Client *target_ec,
                                               E_Vis_Job_Type job_type)
 {
-   int x, y;
    Eina_Bool sent = EINA_FALSE;
 
    EINA_SAFETY_ON_NULL_RETURN_VAL(lc, EINA_FALSE);
@@ -411,12 +414,12 @@ _launcher_prepare_shared_widget_backward_send(E_Service_Launcher *lc,
    _launcher_launched_ec_set(lc, NULL);
    _launcher_target_ec_set(lc, target_ec);
 
-   lc->serial = wl_display_next_serial(e_comp_wl->wl.disp);
    lc->direction = TWS_SERVICE_LAUNCHER_DIRECTION_BACKWARD;
-   e_client_pos_get(target_ec, &x, &y);
+   lc->serial = wl_display_next_serial(e_comp_wl->wl.disp);
 
    sent = e_tzsh_shared_widget_launch_prepare_send(target_ec,
-                                                   TWS_SHARED_WIDGET_LAUNCH_PREPARE_STATE_WIDGET_HIDE);
+                                                   TWS_SHARED_WIDGET_LAUNCH_PREPARE_STATE_WIDGET_HIDE,
+                                                   lc->serial);
 
    // fail to send protocol event
    if (!sent)
@@ -929,7 +932,8 @@ _launcher_cb_launch_done(struct wl_client *client EINA_UNUSED,
        (lc->with_swl))
      {
         e_tzsh_shared_widget_launch_prepare_send(lc->target.ec,
-                                                 TWS_SHARED_WIDGET_LAUNCH_PREPARE_STATE_WIDGET_SHOW);
+                                                 TWS_SHARED_WIDGET_LAUNCH_PREPARE_STATE_WIDGET_SHOW,
+                                                 lc->serial);
         return;
      }
 
@@ -941,7 +945,8 @@ _launcher_cb_launch_done(struct wl_client *client EINA_UNUSED,
      {
         if (lc->with_swl)
           e_tzsh_shared_widget_launch_prepare_send(lc->target.ec,
-                                                   TWS_SHARED_WIDGET_LAUNCH_PREPARE_STATE_WIDGET_SHOW);
+                                                   TWS_SHARED_WIDGET_LAUNCH_PREPARE_STATE_WIDGET_SHOW,
+                                                   lc->serial);
         _launcher_post_backward(lc, EINA_TRUE);
      }
 
@@ -1672,7 +1677,8 @@ 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 state,
+                                                        uint32_t serial)
 {
    E_Service_Launcher *lc = NULL;
    Eina_Bool sent;
@@ -1680,11 +1686,14 @@ e_service_launcher_prepare_send_with_shared_widget_info(E_Client *target_ec,
    Eina_Iterator *hash_iter;
    Eina_Bool found = EINA_FALSE;
 
+   EINA_SAFETY_ON_NULL_RETURN(_laundler);
+
    /* look for launcher service object which has given target_ec */
    hash_iter = eina_hash_iterator_data_new(_laundler->launcher_hash);
    EINA_ITERATOR_FOREACH(hash_iter, lc)
      {
         if (lc->target.ec != target_ec) continue;
+        if (lc->serial != serial) continue;
         found = EINA_TRUE;
         break;
      }
index 8ba60bfcf3bba515ef7904f9d4bdb5c92f189d50..2278e5fed074cc82c2f9481ce4ce17ec07e1a726 100644 (file)
@@ -7,6 +7,6 @@
 EINTERN void              e_service_launcher_resource_set(E_Client *ec, struct wl_resource *res_tws_lc);
 EINTERN void              e_service_launcher_client_set(E_Client *ec);
 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);
+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);
 
 #endif