e_policy: move the map_post implementation 78/320878/1
authorSooChan Lim <sc1.lim@samsung.com>
Sun, 9 Mar 2025 08:25:15 +0000 (17:25 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Mon, 10 Mar 2025 08:46:03 +0000 (17:46 +0900)
Move the map_post implemenation from e_comp_wl_shell to e_policy.

Change-Id: I4b90ab3e73f510f787754bddeeca309a9527f280

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

index e41ee6d7c333b918cd4b86902eb3e204d5a28adc..adceee66c4c8fb56b66a84a456ba350eed4e383b 100644 (file)
@@ -732,53 +732,6 @@ _e_shell_surface_ping(struct wl_resource *resource)
    wl_shell_surface_send_ping(ec->comp_data->shell.surface, serial);
 }
 
-static void
-_e_shell_client_map_common_post(E_Client *ec)
-{
-   if (!ec) return;
-
-   if ((!ec->iconic) && (!e_client_util_ignored_get(ec)))
-     {
-        if (ec->parent)
-          {
-             e_policy_stack_transient_for_apply(ec);
-
-             ec->post_lower = EINA_FALSE;
-             ec->post_raise = EINA_FALSE;
-          }
-
-        if (!e_comp_wl_subsurface_check(ec))
-          {
-             if (ec->post_lower)
-               {
-                  ELOGF("SHELL", "lower called by post lower flag", ec);
-                  e_client_lower(ec);
-               }
-             else if (ec->post_raise)
-               {
-                  ELOGF("SHELL", "raise called by post raise flag", ec);
-                  e_client_raise(ec);
-               }
-
-             ec->post_lower = EINA_FALSE;
-             ec->post_raise = EINA_FALSE;
-          }
-     }
-
-   ec->first_mapped = 1;
-
-   e_policy_visibility_client_hide_job_cancel(ec);
-   if (!(ec->iconic && e_client_is_iconified_by_client(ec)) && !ec->bg_state && (ec->show_pending.count == 0))
-     e_vis_client_check_send_pre_visibility_event(ec, EINA_FALSE);
-
-   ELOGF("COMP", "Un-Set launching flag", ec);
-   ec->launching = EINA_FALSE;
-
-   EC_CHANGED(ec);
-
-   e_view_client_signal_emit(e_client_view_get(ec), "e,action,map,done", "e");
-}
-
 static void
 _e_shell_surface_map(struct wl_resource *resource)
 {
@@ -812,7 +765,7 @@ _e_shell_surface_map(struct wl_resource *resource)
               ec->post_raise, ec->post_lower, ec->ignored, ec->override, ec->input_only);
 
         e_client_map_prepare(ec);
-        _e_shell_client_map_common_post(ec);
+        e_client_map_post(ec);
      }
 }
 
@@ -1326,7 +1279,7 @@ _e_xdg_shell_surface_map_cb_timer(void *data)
 
         e_comp_wl_surface_commit(ec);
 
-        _e_shell_client_map_common_post(ec);
+        e_client_map_post(ec);
      }
    ec->map_timer = NULL;
    return ECORE_CALLBACK_CANCEL;
@@ -1399,7 +1352,7 @@ e_shell_e_client_map(E_Client *ec)
          ec->post_raise, ec->post_lower, ec->ignored, ec->override, ec->input_only);
 
    e_client_map_prepare(ec);
-   _e_shell_client_map_common_post(ec);
+   e_client_map_post(ec);
 }
 
 static void
index 2d321f6e3f87e72c65cf9dae5a947685b91e7e17..e73d45b9fc12cbbd38b2fddae94090466aca6044 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_map_post.link);
    wl_list_remove(&pc->client_map_prepare.link);
    wl_list_remove(&pc->client_parent_set.link);
 
@@ -2304,6 +2305,59 @@ _e_policy_client_cb_client_map_prepare(struct wl_listener *listener, void *data)
    ec->comp_data->mapped = EINA_TRUE;
 }
 
+static void
+_e_policy_client_cb_client_map_post(struct wl_listener *listener, void *data)
+{
+   E_Policy_Client *policy_client;
+   E_Client *ec;
+
+   policy_client = wl_container_of(listener, policy_client, client_map_post);
+
+   ec = policy_client->ec;
+   EINA_SAFETY_ON_NULL_RETURN(ec);
+
+   if ((!ec->iconic) && (!e_client_util_ignored_get(ec)))
+     {
+        if (ec->parent)
+          {
+             e_policy_stack_transient_for_apply(ec);
+
+             ec->post_lower = EINA_FALSE;
+             ec->post_raise = EINA_FALSE;
+          }
+
+        if (!e_comp_wl_subsurface_check(ec))
+          {
+             if (ec->post_lower)
+               {
+                  ELOGF("SHELL", "lower called by post lower flag", ec);
+                  e_client_lower(ec);
+               }
+             else if (ec->post_raise)
+               {
+                  ELOGF("SHELL", "raise called by post raise flag", ec);
+                  e_client_raise(ec);
+               }
+
+             ec->post_lower = EINA_FALSE;
+             ec->post_raise = EINA_FALSE;
+          }
+     }
+
+   ec->first_mapped = 1;
+
+   e_policy_visibility_client_hide_job_cancel(ec);
+   if (!(ec->iconic && e_client_is_iconified_by_client(ec)) && !ec->bg_state && (ec->show_pending.count == 0))
+     e_vis_client_check_send_pre_visibility_event(ec, EINA_FALSE);
+
+   ELOGF("COMP", "Un-Set launching flag", ec);
+   ec->launching = EINA_FALSE;
+
+   EC_CHANGED(ec);
+
+   e_view_client_signal_emit(e_client_view_get(ec), "e,action,map,done", "e");
+}
+
 EINTERN E_Policy_Client *
 e_policy_client_add(E_Client *ec)
 {
@@ -2339,6 +2393,9 @@ e_policy_client_add(E_Client *ec)
    pc->client_map_prepare.notify = _e_policy_client_cb_client_map_prepare;
    e_client_map_prepare_listener_add(ec, &pc->client_map_prepare);
 
+   pc->client_map_post.notify = _e_policy_client_cb_client_map_post;
+   e_client_map_post_listener_add(ec, &pc->client_map_post);
+
    return pc;
 }
 
index 544de9ec87c1ad39aa5cd10a54d15bbb4d2b803e..92d18b7c0eee768581045a5868c33c2b1fb72fdb 100644 (file)
@@ -75,6 +75,7 @@ struct _E_Policy_Client
 
    struct wl_listener client_parent_set;
    struct wl_listener client_map_prepare;
+   struct wl_listener client_map_post;
 };
 
 struct _E_Policy_System_Info