e_policy: Add policy client before add the new client into zone 31/299331/1
authorJunseok Kim <juns.kim@samsung.com>
Tue, 26 Sep 2023 04:12:12 +0000 (13:12 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Tue, 26 Sep 2023 06:27:11 +0000 (15:27 +0900)
Change-Id: I0d62cedc4c444b90a8037011ef039f4883e511fd

src/bin/e_policy.c
src/bin/e_policy.h
src/bin/e_zone.c

index de192de..15934af 100644 (file)
@@ -193,32 +193,6 @@ _e_policy_desk_client_add_hook_delete(E_Policy_Client *pc)
 }
 #endif
 
-static E_Policy_Client *
-_e_policy_client_add(E_Client *ec)
-{
-   E_Policy_Client *pc;
-
-   if (e_object_is_del(E_OBJECT(ec))) return NULL;
-
-   pc = eina_hash_find(hash_policy_clients, &ec);
-   if (pc) return pc;
-
-   pc = E_NEW(E_Policy_Client, 1);
-   if (!pc) return NULL;
-
-   pc->ec = ec;
-   pc->zone = e_comp_zone_find_by_ec(ec);
-
-   eina_hash_add(hash_policy_clients, &ec, pc);
-
-#ifdef REFACTOR_ZONE_DESK
-   // This client_add hook of desk will be deleted at the hook callback for it.
-   _e_policy_desk_client_add_hook_add(pc);
-#endif
-
-   return pc;
-}
-
 static void
 _e_policy_client_del(E_Policy_Client *pc)
 {
@@ -547,15 +521,6 @@ _e_policy_desk_get_by_num(unsigned int zone_num, int x, int y)
 }
 
 static void
-_e_policy_cb_hook_client_new_post(void *d EINA_UNUSED, E_Client *ec)
-{
-   if (EINA_UNLIKELY(!ec))
-     return;
-
-   _e_policy_client_add(ec);
-}
-
-static void
 _e_policy_cb_hook_client_del(void *d EINA_UNUSED, E_Client *ec)
 {
    E_Policy_Client *pc;
@@ -2365,6 +2330,32 @@ e_policy_deferred_job(void)
    e_policy_wl_defer_job();
 }
 
+EINTERN E_Policy_Client *
+e_policy_client_add(E_Client *ec)
+{
+   E_Policy_Client *pc;
+
+   if (e_object_is_del(E_OBJECT(ec))) return NULL;
+
+   pc = eina_hash_find(hash_policy_clients, &ec);
+   if (pc) return pc;
+
+   pc = E_NEW(E_Policy_Client, 1);
+   if (!pc) return NULL;
+
+   pc->ec = ec;
+   pc->zone = e_comp_zone_find_by_ec(ec);
+
+   eina_hash_add(hash_policy_clients, &ec, pc);
+
+#ifdef REFACTOR_ZONE_DESK
+   // This client_add hook of desk will be deleted at the hook callback for it.
+   _e_policy_desk_client_add_hook_add(pc);
+#endif
+
+   return pc;
+}
+
 EINTERN int
 e_policy_init(void)
 {
@@ -2423,7 +2414,6 @@ e_policy_init(void)
    E_LIST_HANDLER_APPEND(handlers, E_EVENT_CLIENT_HIDE,               _e_policy_cb_client_hide,                     NULL);
    E_LIST_HANDLER_APPEND(handlers, E_EVENT_CLIENT_ZONE_SET,           _e_policy_cb_client_zone_set,                 NULL);
 
-   E_CLIENT_HOOK_APPEND(hooks_ec,  E_CLIENT_HOOK_NEW_CLIENT_POST,     _e_policy_cb_hook_client_new_post,            NULL);
    E_CLIENT_HOOK_APPEND(hooks_ec,  E_CLIENT_HOOK_DEL,                 _e_policy_cb_hook_client_del,                 NULL);
    E_CLIENT_HOOK_APPEND(hooks_ec,  E_CLIENT_HOOK_EVAL_PRE_NEW_CLIENT, _e_policy_cb_hook_client_eval_pre_new_client, NULL);
    E_CLIENT_HOOK_APPEND(hooks_ec,  E_CLIENT_HOOK_EVAL_PRE_FETCH,      _e_policy_cb_hook_client_eval_pre_fetch,      NULL);
index cef630d..fa9980a 100644 (file)
@@ -303,6 +303,7 @@ EINTERN void e_policy_user_geometry_set(E_Client *ec, E_Policy_Allow_User_Geomet
 E_API void e_policy_allow_user_geometry_set(E_Client *ec, Eina_Bool set);
 E_API Eina_Bool e_policy_allow_user_geometry_get(E_Client *ec);
 EINTERN void e_policy_deferred_job(void);
+EINTERN E_Policy_Client *e_policy_client_add(E_Client *ec);
 EINTERN int  e_policy_init(void);
 EINTERN int  e_policy_shutdown(void);
 
index 97ce7c2..594ad9b 100644 (file)
@@ -420,6 +420,7 @@ _e_zone_cb_hook_client_new_client_post(void *d, E_Client *ec)
    //        We need to make a policy for the placement of the ec at the zone.
    if (zone != e_zone_current_get()) return;
 
+   e_policy_client_add(ec);
    e_zone_client_add(zone, ec);
 }