e_policy: use e_client_parent_set 74/320874/1
authorSooChan Lim <sc1.lim@samsung.com>
Sun, 9 Mar 2025 06:22:05 +0000 (15:22 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Mon, 10 Mar 2025 08:46:03 +0000 (17:46 +0900)
e_policy listens the e_client_parent_set calling from server directory.

Change-Id: I8c774d6dc7b011772400bd6852714d917fa80093

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

index 97e42bdfe647665edad1b84fdc23273ff1762566..90dc445d451d2f7ef021dca15043d5233ab77eef 100644 (file)
@@ -202,7 +202,7 @@ e_shell_e_client_parent_set(E_Client *ec, struct wl_resource *parent_resource)
    ELOGF("SHELL", "Parent Set. parent_resource:%p, parent_ec:%p, prev_parent_ec:%p",
          ec, parent_resource, parent, ec->parent);
 
-   e_policy_stack_parent_set(ec, parent);
+   e_client_parent_set(ec, parent);
 }
 
 EINTERN Eina_Bool
index 40f2c602e003e9cf8fef33f7507933ef372a8c0d..69e9799273c477b6795089558f49ca958cff9a8d 100644 (file)
 #include "e_input_thread_client_intern.h"
 #include "e_view_intern.h"
 #include "e_view_client_intern.h"
-#include "e_policy_stack_intern.h"
 #include "e_compositor_intern.h"
 #include "e_canvas_intern.h"
 #include "e_tizen_launch_effect_intern.h"
 #include "e_server_intern.h"
 #include "e_tizen_display_policy_intern.h"
 #include "e_tizen_ws_shell_manager_intern.h"
+#include "e_policy_stack_intern.h"
 
 #include <wayland-server.h>
 #include <tizen-extension-server-protocol.h>
@@ -2430,7 +2430,7 @@ _tzpol_iface_cb_parent_set(struct wl_client *client, struct wl_resource *res_tzp
    EINA_SAFETY_ON_NULL_RETURN(ec);
 
    parent_ec = e_client_from_surface_resource(parent);
-   e_policy_stack_parent_set(ec, parent_ec);
+   e_client_parent_set(ec, parent_ec);
 }
 
 static void
index 4e99e5efeebf1e4c2973407bc05c3acede11a998..8c36c431e4935a0812329fcc38ff01af2124acb3 100644 (file)
@@ -202,6 +202,8 @@ _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_parent_set.link);
+
    wl_list_remove(&pc->pixmap_buffer_clear.link);
    wl_list_remove(&pc->pixmap_destroy.link);
 
@@ -2256,6 +2258,17 @@ _e_policy_client_cb_pixmap_destroy(struct wl_listener *listener, void *data)
    wl_list_init(&pc->pixmap_destroy.link);
 }
 
+static void
+_e_policy_client_cb_client_parent_set(struct wl_listener *listener, void *data)
+{
+   E_Policy_Client *policy_client;
+   E_Client *parent_ec = (E_Client *)data;
+
+   policy_client = wl_container_of(listener, policy_client, client_parent_set);
+
+   e_policy_stack_parent_set(policy_client->ec, parent_ec);
+}
+
 EINTERN E_Policy_Client *
 e_policy_client_add(E_Client *ec)
 {
@@ -2284,6 +2297,10 @@ e_policy_client_add(E_Client *ec)
    pc->pixmap_buffer_clear.notify = _e_policy_client_cb_pixmap_buffer_clear;
    e_pixmap_buffer_clear_listener_add(ec->pixmap, &pc->pixmap_buffer_clear);
 
+   // e_client listener add
+   pc->client_parent_set.notify = _e_policy_client_cb_client_parent_set;
+   e_client_parent_set_listener_add(ec, &pc->client_parent_set);
+
    return pc;
 }
 
index a6cfe355831ecd076784c9a1af7127c7f6ccc1b5..d9b33c1380e7f499fe3308eb2ea18d90353ad626 100644 (file)
@@ -72,6 +72,8 @@ struct _E_Policy_Client
 
    struct wl_listener pixmap_destroy;
    struct wl_listener pixmap_buffer_clear;
+
+   struct wl_listener client_parent_set;
 };
 
 struct _E_Policy_System_Info