Revert "e_client: remove CLIENT_DEL_STACK_ISSUE defines" 92/324292/1
author강도연/Tizen Platform Lab(SR)/삼성전자 <doyoun.kang@samsung.com>
Thu, 15 May 2025 06:44:22 +0000 (15:44 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Thu, 15 May 2025 07:18:47 +0000 (16:18 +0900)
This reverts commit 0edf38982db4000edfc88e36445574299bff9fce.

Change-Id: I4cb54bd73850034e7eec1ae973eba1bf0fb464a9

src/bin/core/e_client.c
src/bin/core/e_desk_area_intern.h
src/bin/core/e_intern.h
src/bin/windowmgr/e_policy_desk_area.c
src/include/e_client.h

index 10a37c20ea12759d656907c0f3eb909462d304e8..6fd9fa31a3ea571ed9cc15766aec16d09b8c0c5f 100644 (file)
@@ -239,6 +239,9 @@ static Eina_Inlist *_e_client_hooks[] =
    [E_CLIENT_HOOK_TRANSFORM_CHANGE] = NULL,
    [E_CLIENT_HOOK_ACTIVATE_DONE] = NULL,
    [E_CLIENT_HOOK_EVAL_VISIBILITY_END] = NULL,
+#ifdef CLIENT_DEL_STACK_ISSUE
+   [E_CLIENT_HOOK_FREE] = NULL,
+#endif // CLIENT_DEL_STACK_ISSUE
 };
 
 static Eina_Inlist *_e_client_intercept_hooks[] =
@@ -777,6 +780,10 @@ _e_client_free(E_Client *ec)
    eina_stringshare_replace(&ec->icccm.window_role, NULL);
    e_client_netwm_name_set(ec, NULL);
 
+#ifdef CLIENT_DEL_STACK_ISSUE
+   e_client_hook_call(E_CLIENT_HOOK_FREE, ec);
+#endif // CLIENT_DEL_STACK_ISSUE
+
    E_FREE_FUNC(ec->frame, evas_object_del);
 
    E_OBJECT(ec)->references--;
index d613778b330f2cdb84e8805b654dfc9e8bb5e096..44c8b2cf3a49c79a95f811394016b9b126878971 100644 (file)
@@ -38,6 +38,9 @@ struct _E_Desk_Area
    Eina_List           *fullscreen_clients;
 
    E_Comp_Wl_Hook      *hook_subsurf_create;
+#ifdef CLIENT_DEL_STACK_ISSUE
+   E_Client_Hook       *hook_client_free;
+#endif // CLIENT_DEL_STACK_ISSUE
 };
 
 typedef struct _E_Desk_Area_Data_EC_Get
index 0f65154ab622d6254260975d8df03f0bd0aa2ce0..2879366071089207e828a78b27bb5d5e0bbffb8f 100644 (file)
@@ -21,6 +21,7 @@
 #include <Eina.h>
 
 #define CHECKING_PRIMARY_ZPOS
+#define CLIENT_DEL_STACK_ISSUE
 
 #ifdef ENABLE_TTRACE
 #undef TRACE_DS_BEGIN
index 77b94166e374bbbfd664c55f3e349efc077aaf94..0c8532318465eae0d7b4a582aafabe86759fb479 100644 (file)
@@ -2832,6 +2832,10 @@ _e_policy_desk_area_private_client_del(E_Policy_Desk_Area_Private_Client *eda_cl
 {
    E_Desk_Area *eda = eda_client->eda;
    E_Client *ec = eda_client->ec;
+#ifdef CLIENT_DEL_STACK_ISSUE
+#else
+   E_Comp_Object *cw;
+#endif // CLIENT_DEL_STACK_ISSUE
 
    if (!e_desk_area_has_ec(eda, ec)) return;
 
@@ -2839,6 +2843,13 @@ _e_policy_desk_area_private_client_del(E_Policy_Desk_Area_Private_Client *eda_cl
    e_util_transform_del(ec->desk_area.transform);
    ec->desk_area.transform = NULL;
 
+#ifdef CLIENT_DEL_STACK_ISSUE
+#else
+   cw = evas_object_smart_data_get(ec->frame);
+   if (!cw)
+     ELOGF("EDA", "No Comp Object. Fix Me~!!", ec);
+#endif // CLIENT_DEL_STACK_ISSUE
+
    _e_policy_desk_area_client_data_del(ec);
 
    // wl_list remove
@@ -3007,6 +3018,21 @@ _e_policy_desk_area_cb_hook_subsurface_create(void *data, E_Client *ec)
      }
 }
 
+#ifdef CLIENT_DEL_STACK_ISSUE
+static void
+_e_policy_desk_area_cb_client_free(void *data, E_Client *ec)
+{
+   E_Desk_Area *eda = data;
+   E_Comp_Object *cw;
+
+   ELOGF("EDA", "HOOK CLIENT FREE. desk_area:%p", ec, eda);
+
+   cw = evas_object_smart_data_get(ec->frame);
+   if (!cw)
+     ELOGF("EDA", "No Comp Object. Fix Me~!!", ec);
+}
+#endif //CLIENT_DEL_STACK_ISSUE
+
 static void
 _e_policy_desk_area_tree_destroy(E_View_Tree *tree)
 {
@@ -3116,6 +3142,12 @@ e_policy_desk_area_new(E_Desk_Area *eda)
                                                  _e_policy_desk_area_cb_hook_subsurface_create,
                                                  NULL);
 
+#ifdef CLIENT_DEL_STACK_ISSUE
+   eda->hook_client_free = e_client_hook_add(E_CLIENT_HOOK_FREE,
+                                             _e_policy_desk_area_cb_client_free,
+                                             eda);
+#endif // CLIENT_DEL_STACK_ISSUE
+
    pda->geometry_set.notify = _e_policy_desk_area_cb_geometry_set;
    e_desk_area_geometry_set_listener_add(eda, &pda->geometry_set);
    pda->activate.notify = _e_policy_desk_area_cb_activate;
@@ -3171,6 +3203,9 @@ e_policy_desk_area_del(E_Policy_Desk_Area *pda)
    wl_list_remove(&pda->client_del.link);
 
    E_FREE_FUNC(eda->hook_subsurf_create, e_comp_wl_hook_del);
+#ifdef CLIENT_DEL_STACK_ISSUE
+   E_FREE_FUNC(eda->hook_client_free, e_client_hook_del);
+#endif // CLIENT_DEL_STACK_ISSUE
 
    e_policy_container_view_tree_shutdown(e_policy_container_get(pda));
 
index f2e75349f9726d77202a7a80bfccc3415ef449df..4477104f6fc13b2695b42da7b3e475e1b9e803fc 100644 (file)
@@ -272,6 +272,9 @@ typedef enum _E_Client_Hook_Point
    E_CLIENT_HOOK_TRANSFORM_CHANGE,
    E_CLIENT_HOOK_ACTIVATE_DONE,
    E_CLIENT_HOOK_EVAL_VISIBILITY_END,
+#ifdef CLIENT_DEL_STACK_ISSUE
+   E_CLIENT_HOOK_FREE,
+#endif // CLIENT_DEL_STACK_ISSUE
    E_CLIENT_HOOK_LAST,
 } E_Client_Hook_Point;