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

Change-Id: I6423c6af1958f104855b7aed69ba0cecb35dcf68

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

index 90dc445d451d2f7ef021dca15043d5233ab77eef..e41ee6d7c333b918cd4b86902eb3e204d5a28adc 100644 (file)
@@ -732,35 +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_pre(E_Client *ec)
-{
-   E_Desk *desk;
-
-   if (!ec) return;
-
-   e_view_client_signal_emit(e_client_view_get(ec), "e,state,map", "e");
-
-   if (ec->use_splash)
-     {
-        ELOGF("LAUNCH", "SHOW real win after splash effect", ec);
-        e_view_client_signal_emit(e_client_view_get(ec), "e,action,launch_real,done", "e");
-     }
-   ec->use_splash = EINA_FALSE;
-
-   /* unset previous content */
-   e_comp_object_content_unset(ec->frame);
-
-   /* apply zoom */
-   desk = e_comp_desk_find_by_ec(ec);
-   if (desk) e_desk_client_zoom_apply(desk, ec);
-
-   /* map this surface if needed */
-   ec->visible = EINA_TRUE;
-   e_view_client_show(e_client_view_get(ec));
-   ec->comp_data->mapped = EINA_TRUE;
-}
-
 static void
 _e_shell_client_map_common_post(E_Client *ec)
 {
@@ -840,7 +811,7 @@ _e_shell_surface_map(struct wl_resource *resource)
               ec->use_splash, ec->first_mapped, ec->iconic, ec->exp_iconify.by_client, ec->exp_iconify.type,
               ec->post_raise, ec->post_lower, ec->ignored, ec->override, ec->input_only);
 
-        _e_shell_client_map_common_pre(ec);
+        e_client_map_prepare(ec);
         _e_shell_client_map_common_post(ec);
      }
 }
@@ -1346,7 +1317,7 @@ _e_xdg_shell_surface_map_cb_timer(void *data)
               ec->use_splash, ec->first_mapped, ec->iconic, ec->exp_iconify.by_client, ec->exp_iconify.type,
               ec->post_raise, ec->post_lower, ec->ignored, ec->override, ec->input_only);
 
-        _e_shell_client_map_common_pre(ec);
+        e_client_map_prepare(ec);
 
         /* force update */
         e_view_client_damage(e_client_view_get(ec), 0, 0, ec->w, ec->h);
@@ -1427,7 +1398,7 @@ e_shell_e_client_map(E_Client *ec)
          ec->use_splash, ec->first_mapped, ec->iconic, ec->exp_iconify.by_client, ec->exp_iconify.type,
          ec->post_raise, ec->post_lower, ec->ignored, ec->override, ec->input_only);
 
-   _e_shell_client_map_common_pre(ec);
+   e_client_map_prepare(ec);
    _e_shell_client_map_common_post(ec);
 }
 
index 8c36c431e4935a0812329fcc38ff01af2124acb3..2d321f6e3f87e72c65cf9dae5a947685b91e7e17 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_prepare.link);
    wl_list_remove(&pc->client_parent_set.link);
 
    wl_list_remove(&pc->pixmap_buffer_clear.link);
@@ -2269,6 +2270,40 @@ _e_policy_client_cb_client_parent_set(struct wl_listener *listener, void *data)
    e_policy_stack_parent_set(policy_client->ec, parent_ec);
 }
 
+static void
+_e_policy_client_cb_client_map_prepare(struct wl_listener *listener, void *data)
+{
+   E_Policy_Client *policy_client;
+   E_Client *ec;
+   E_Desk *desk;
+
+   policy_client = wl_container_of(listener, policy_client, client_map_prepare);
+
+   ec = policy_client->ec;
+   EINA_SAFETY_ON_NULL_RETURN(ec);
+
+   e_view_client_signal_emit(e_client_view_get(ec), "e,state,map", "e");
+
+   if (ec->use_splash)
+     {
+        ELOGF("LAUNCH", "SHOW real win after splash effect", ec);
+        e_view_client_signal_emit(e_client_view_get(ec), "e,action,launch_real,done", "e");
+     }
+   ec->use_splash = EINA_FALSE;
+
+   /* unset previous content */
+   e_comp_object_content_unset(ec->frame);
+
+   /* apply zoom */
+   desk = e_comp_desk_find_by_ec(ec);
+   if (desk) e_desk_client_zoom_apply(desk, ec);
+
+   /* map this surface if needed */
+   ec->visible = EINA_TRUE;
+   e_view_client_show(e_client_view_get(ec));
+   ec->comp_data->mapped = EINA_TRUE;
+}
+
 EINTERN E_Policy_Client *
 e_policy_client_add(E_Client *ec)
 {
@@ -2301,6 +2336,9 @@ e_policy_client_add(E_Client *ec)
    pc->client_parent_set.notify = _e_policy_client_cb_client_parent_set;
    e_client_parent_set_listener_add(ec, &pc->client_parent_set);
 
+   pc->client_map_prepare.notify = _e_policy_client_cb_client_map_prepare;
+   e_client_map_prepare_listener_add(ec, &pc->client_map_prepare);
+
    return pc;
 }
 
index d9b33c1380e7f499fe3308eb2ea18d90353ad626..544de9ec87c1ad39aa5cd10a54d15bbb4d2b803e 100644 (file)
@@ -74,6 +74,7 @@ struct _E_Policy_Client
    struct wl_listener pixmap_buffer_clear;
 
    struct wl_listener client_parent_set;
+   struct wl_listener client_map_prepare;
 };
 
 struct _E_Policy_System_Info