e_comp_wl: remove "ping" smart call 64/309564/1
authorSooChan Lim <sc1.lim@samsung.com>
Fri, 12 Apr 2024 00:41:52 +0000 (09:41 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Fri, 12 Apr 2024 06:08:30 +0000 (15:08 +0900)
e_client provides the kill_reuqest signal and
move the implementation of ping callback function
to e_desk_area

Change-Id: I6efde8b3ea918b6a26c4d6a3a1db9de390ab5a2b

src/bin/e_client.c
src/bin/e_client_intern.h
src/bin/e_comp_wl.c
src/bin/e_desk_area.c

index 3aaa36a..b84b406 100644 (file)
@@ -107,6 +107,7 @@ struct _E_Client_Private
 
         struct wl_signal delete_request;
         struct wl_signal kill_request;
+        struct wl_signal ping;
      } events;
 
    Eina_Bool hide_by_request;
@@ -970,6 +971,7 @@ _e_client_private_init(E_Client *ec)
 
    wl_signal_init(&priv->events.delete_request);
    wl_signal_init(&priv->events.kill_request);
+   wl_signal_init(&priv->events.ping);
 
    e_object_data_set(E_OBJECT(ec), priv);
 
@@ -4976,7 +4978,7 @@ e_client_ping(E_Client *ec)
    EINA_SAFETY_ON_TRUE_RETURN(e_object_is_del(E_OBJECT(ec)));
 
    ec->ping_ok = 0;
-   evas_object_smart_callback_call(ec->frame, "ping", NULL);
+   wl_signal_emit(&PRI(ec)->events.ping, ec);
    ec->ping = ecore_loop_time_get();
    if (ec->ping_poller) ecore_poller_del(ec->ping_poller);
    ec->ping_poller = ecore_poller_add(ECORE_POLLER_CORE,
@@ -7474,6 +7476,13 @@ e_client_kill_request_listener_add(E_Client *ec, struct wl_listener *listener)
 }
 
 EINTERN void
+e_client_ping_listener_add(E_Client *ec, struct wl_listener *listener)
+{
+   API_ENTRY;
+   wl_signal_add(&priv->events.ping, listener);
+}
+
+EINTERN void
 e_client_shell_configure_send(E_Client *ec, uint32_t edges, int32_t width, int32_t height)
 {
    EINA_SAFETY_ON_NULL_RETURN(ec);
index 4825fc8..547871f 100644 (file)
@@ -277,6 +277,7 @@ EINTERN void e_client_subsurface_stack_update_listener_add(E_Client *ec, struct
 
 EINTERN void e_client_delete_request_listener_add(E_Client *ec, struct wl_listener *listener);
 EINTERN void e_client_kill_request_listener_add(E_Client *ec, struct wl_listener *listener);
+EINTERN void e_client_ping_listener_add(E_Client *ec, struct wl_listener *listener);
 
 EINTERN struct wl_listener  *e_client_destroy_listener_get(E_Client *ec, wl_notify_func_t notify);
 
index 32f7288..8b3a93f 100644 (file)
@@ -2208,16 +2208,6 @@ _e_comp_wl_evas_cb_focus_out(void *data, Evas *evas EINA_UNUSED, Evas_Object *ob
 }
 
 static void
-_e_comp_wl_evas_cb_ping(void *data, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
-{
-   E_Client *ec;
-
-   if (!(ec = data)) return;
-
-   e_client_shell_ping(ec);
-}
-
-static void
 _e_comp_wl_evas_cb_color_set(void *data, Evas_Object *obj, void *event EINA_UNUSED)
 {
    E_Client *ec;
@@ -2297,7 +2287,6 @@ _e_comp_wl_client_evas_init(E_Client *ec)
    evas_object_event_callback_priority_add(ec->frame, EVAS_CALLBACK_FOCUS_OUT,   EVAS_CALLBACK_PRIORITY_AFTER, _e_comp_wl_evas_cb_focus_out,   ec);
 
    /* setup ping callback */
-   evas_object_smart_callback_add(ec->frame, "ping",           _e_comp_wl_evas_cb_ping,           ec);
    evas_object_smart_callback_add(ec->frame, "color_set",      _e_comp_wl_evas_cb_color_set,      ec);
 
    ec->comp_data->evas_init = EINA_TRUE;
@@ -2327,7 +2316,6 @@ _e_comp_wl_client_evas_deinit(E_Client *ec)
    evas_object_event_callback_del(ec->frame, EVAS_CALLBACK_FOCUS_IN,  _e_comp_wl_evas_cb_focus_in);
    evas_object_event_callback_del(ec->frame, EVAS_CALLBACK_FOCUS_OUT, _e_comp_wl_evas_cb_focus_out);
 
-   evas_object_smart_callback_del(ec->frame, "ping",           _e_comp_wl_evas_cb_ping);
    evas_object_smart_callback_del(ec->frame, "color_set",      _e_comp_wl_evas_cb_color_set);
 
    ec->comp_data->evas_init = EINA_FALSE;
index 621da9c..d431d09 100644 (file)
@@ -92,6 +92,7 @@ struct _E_Desk_Area_Private_Client
    struct wl_listener client_activate_done;
    struct wl_listener delete_request;
    struct wl_listener kill_request;
+   struct wl_listener ping;
 
    // comp_object listeners
    struct wl_listener comp_object_raise;
@@ -846,6 +847,7 @@ _e_desk_area_private_client_del(E_Desk_Area_Private_Client *eda_client)
    wl_list_remove(&eda_client->comp_object_lower.link);
    wl_list_remove(&eda_client->comp_object_raise.link);
 
+   wl_list_remove(&eda_client->ping.link);
    wl_list_remove(&eda_client->kill_request.link);
    wl_list_remove(&eda_client->delete_request.link);
    wl_list_remove(&eda_client->client_activate_done.link);
@@ -1883,6 +1885,22 @@ _desk_area_cb_client_kill_request(struct wl_listener *listener, void *data)
 }
 
 static void
+_desk_area_cb_client_ping(struct wl_listener *listener, void *data)
+{
+   E_Desk_Area_Private_Client *eda_client;
+   E_Desk_Area *eda;
+   E_Client *ec;
+
+   eda_client = wl_container_of(listener, eda_client, ping);
+   eda = eda_client->eda;
+   ec = eda_client->ec;
+
+   ELOGF("EDA", "CLIENT PING. eda:%p", ec, eda);
+
+   e_client_shell_ping(ec);
+}
+
+static void
 _desk_area_cb_comp_object_lower(struct wl_listener *listener, void *data)
 {
    E_Desk_Area_Private_Client *eda_client;
@@ -2638,6 +2656,8 @@ e_desk_area_ec_add(E_Desk_Area *eda, E_Client *ec)
    e_client_delete_request_listener_add(ec, &eda_client->delete_request);
    eda_client->kill_request.notify = _desk_area_cb_client_kill_request;
    e_client_kill_request_listener_add(ec, &eda_client->kill_request);
+   eda_client->ping.notify = _desk_area_cb_client_ping;
+   e_client_ping_listener_add(ec, &eda_client->ping);
 
    // e_comp_object listeners
    eda_client->comp_object_lower.notify = _desk_area_cb_comp_object_lower;