e_comp_wl_shell: use e_client_unmap 80/320880/1
authorSooChan Lim <sc1.lim@samsung.com>
Sun, 9 Mar 2025 08:50:12 +0000 (17:50 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Mon, 10 Mar 2025 08:46:03 +0000 (17:46 +0900)
use e_client_unmap instead of e_policy_client_unmap.
This remove the dependency of e_policy at e_comp_wl_shell

Change-Id: Ib37f87b49187c6a5aea134bb33380b2d957f6f3f

src/bin/server/e_comp_wl_shell.c
src/bin/windowmgr/e_policy.c
src/bin/windowmgr/e_policy_intern.h

index adceee66c4c8fb56b66a84a456ba350eed4e383b..f1fa603d8e248575738341b310d31a3c6ffadc54 100644 (file)
@@ -412,7 +412,7 @@ e_shell_e_client_destroy(E_Client *ec)
              ELOGF("SHELL", "Call shell.unmap by destroy surface", ec);
              e_client_shell_unmap(ec);
           }
-        e_policy_client_unmap(ec);
+        e_client_unmap(ec);
      }
 
    if (ec->comp_data)
index e73d45b9fc12cbbd38b2fddae94090466aca6044..b43db074969fbaf66d791eab272d4c2a8ca187d9 100644 (file)
@@ -202,6 +202,7 @@ _e_policy_desk_client_add_hook_delete(E_Policy_Client *pc)
 static void
 _e_policy_client_del(E_Policy_Client *pc)
 {
+   wl_list_remove(&pc->client_unmap.link);
    wl_list_remove(&pc->client_map_post.link);
    wl_list_remove(&pc->client_map_prepare.link);
    wl_list_remove(&pc->client_parent_set.link);
@@ -2358,6 +2359,20 @@ _e_policy_client_cb_client_map_post(struct wl_listener *listener, void *data)
    e_view_client_signal_emit(e_client_view_get(ec), "e,action,map,done", "e");
 }
 
+static void
+_e_policy_client_cb_client_unmap(struct wl_listener *listener, void *data)
+{
+   E_Policy_Client *policy_client;
+   E_Client *ec;
+
+   policy_client = wl_container_of(listener, policy_client, client_unmap);
+
+   ec = policy_client->ec;
+   EINA_SAFETY_ON_NULL_RETURN(ec);
+
+   e_policy_client_unmap(policy_client->ec);
+}
+
 EINTERN E_Policy_Client *
 e_policy_client_add(E_Client *ec)
 {
@@ -2396,6 +2411,9 @@ e_policy_client_add(E_Client *ec)
    pc->client_map_post.notify = _e_policy_client_cb_client_map_post;
    e_client_map_post_listener_add(ec, &pc->client_map_post);
 
+   pc->client_unmap.notify = _e_policy_client_cb_client_unmap;
+   e_client_unmap_listener_add(ec, &pc->client_unmap);
+
    return pc;
 }
 
index 92d18b7c0eee768581045a5868c33c2b1fb72fdb..8ed47045f0b153d71857d8b75a57befb1d789973 100644 (file)
@@ -76,6 +76,7 @@ struct _E_Policy_Client
    struct wl_listener client_parent_set;
    struct wl_listener client_map_prepare;
    struct wl_listener client_map_post;
+   struct wl_listener client_unmap;
 };
 
 struct _E_Policy_System_Info