[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[] =
e_client_netwm_name_set(ec, NULL);
e_view_destroy(e_view_client_view_get(PRI(ec)->view_client));
+
+#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--;
}
}
+#ifdef CLIENT_DEL_STACK_ISSUE
+static void
+_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)
+ _e_comp_object_layers_remove(eda, cw);
+ else
+ ELOGF("EDA", "No Comp Object. Fix Me~!!", ec);
+}
+#endif //CLIENT_DEL_STACK_ISSUE
+
EINTERN int
e_desk_area_init(void)
{
_e_desk_area_free(E_Desk_Area *eda)
{
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_comp_wl_hook_del);
+#endif // CLIENT_DEL_STACK_ISSUE
_e_desk_area_private_finish(eda);
free(eda);
{
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;
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)
_e_comp_object_layers_remove(eda, cw);
else
ELOGF("EDA", "No Comp Object. Fix Me~!!", ec);
+#endif // CLIENT_DEL_STACK_ISSUE
_e_desk_area_smart_client_del(eda->smart_obj, ec);
_e_desk_area_client_data_del(eda, ec);
_e_desk_area_cb_hook_subsurface_create,
NULL);
+#ifdef CLIENT_DEL_STACK_ISSUE
+ eda->hook_client_free = e_client_hook_add(E_CLIENT_HOOK_FREE,
+ _desk_area_cb_client_free,
+ eda);
+#endif // CLIENT_DEL_STACK_ISSUE
return eda;
}