} \
while (0)
+# define E_COMP_WL_HOOK_APPEND(list, type, callback, data) \
+ do \
+ { \
+ E_Comp_Wl_Hook *_cwh; \
+ _cwh = e_comp_wl_hook_add(type, callback, data); \
+ assert(_cwh); \
+ list = eina_list_append(list, _cwh); \
+ } \
+ while (0)
+
# define E_CLAMP(x, min, max) (x < min ? min : (x > max ? max : x))
# define E_RECTS_CLIP_TO_RECT(_x, _y, _w, _h, _cx, _cy, _cw, _ch) \
{ \
static Eina_Bool comp_grabbed = EINA_FALSE;
static Eina_List *handlers = NULL;
+static Eina_List *hooks = NULL;
//static Eina_Bool client_grabbed = EINA_FALSE;
static Ecore_Event_Handler *action_handler_key = NULL;
e_client_transform_core_update(subc);
}
+static void
+_e_client_cb_hook_shell_surface_ready(void *data EINA_UNUSED, E_Client *ec)
+{
+ if (EINA_UNLIKELY(!ec))
+ return;
+
+ _e_client_aux_hint_eval(ec);
+}
+
E_API void
e_client_visibility_calculate(void)
{
E_LIST_HANDLER_APPEND(handlers, E_EVENT_CONFIG_MODE_CHANGED, _e_client_cb_config_mode, NULL);
E_LIST_HANDLER_APPEND(handlers, E_EVENT_DESK_WINDOW_PROFILE_CHANGE, _e_client_cb_desk_window_profile_change, NULL);
+ E_COMP_WL_HOOK_APPEND(hooks, E_COMP_WL_HOOK_SHELL_SURFACE_READY, _e_client_cb_hook_shell_surface_ready, NULL);
+
E_EVENT_CLIENT_ADD = ecore_event_type_new();
E_EVENT_CLIENT_REMOVE = ecore_event_type_new();
E_EVENT_CLIENT_DESK_SET = ecore_event_type_new();
for (pix_id = 0; pix_id < E_PIXMAP_TYPE_MAX; pix_id++)
E_FREE_FUNC(clients_hash[pix_id], eina_hash_free);
+ E_FREE_LIST(hooks, e_comp_wl_hook_del);
E_FREE_LIST(handlers, ecore_event_handler_del);
E_FREE_FUNC(warp_timer, ecore_timer_del);