}
static Eina_Bool
-_e_comp_wl_subsurface_order_commit(E_Client *ec)
+_e_comp_wl_subsurface_order_commit_recursive(E_Client *ec)
{
E_Client *subc;
Eina_List *l;
ec->comp_data->sub.list = eina_list_remove(ec->comp_data->sub.list, subc);
ec->comp_data->sub.list = eina_list_append(ec->comp_data->sub.list, subc);
- _e_comp_wl_subsurface_order_commit(subc);
+ _e_comp_wl_subsurface_order_commit_recursive(subc);
}
EINA_LIST_FOREACH(ec->comp_data->sub.below_list_pending, l, subc)
ec->comp_data->sub.below_list = eina_list_remove(ec->comp_data->sub.below_list, subc);
ec->comp_data->sub.below_list = eina_list_append(ec->comp_data->sub.below_list, subc);
- _e_comp_wl_subsurface_order_commit(subc);
+ _e_comp_wl_subsurface_order_commit_recursive(subc);
}
return EINA_TRUE;
}
+static void
+_e_comp_wl_subsurface_order_commit(E_Client *ec)
+{
+ Eina_Bool res;
+
+ res = _e_comp_wl_subsurface_order_commit_recursive(ec);
+ if (res)
+ {
+ _e_comp_wl_subsurface_restack(ec);
+ _e_comp_wl_subsurface_restack_bg_rectangle(ec);
+ }
+}
+
static void
_e_comp_wl_subsurface_commit_to_cache(E_Client *ec)
{
e_comp_wl_buffer_reference(&sdata->cached_buffer_ref, NULL);
- if (_e_comp_wl_subsurface_order_commit(ec))
- {
- _e_comp_wl_subsurface_restack(ec);
- _e_comp_wl_subsurface_restack_bg_rectangle(ec);
- }
+ _e_comp_wl_subsurface_order_commit(ec);
sdata->cached.has_data = EINA_FALSE;
}
{
EINA_SAFETY_ON_NULL_RETURN_VAL(ec, EINA_FALSE);
- return _e_comp_wl_subsurface_order_commit(ec);
+ _e_comp_wl_subsurface_order_commit(ec);
+
+ return EINA_FALSE;
}
EINTERN Eina_Bool
_e_comp_wl_subsurface_hide(ec);
}
-EINTERN void
-e_comp_wl_subsurface_restack_bg_rectangle(E_Client *ec)
-{
- EINA_SAFETY_ON_NULL_RETURN(ec);
-
- _e_comp_wl_subsurface_restack_bg_rectangle(ec);
-}
-
-EINTERN void
-e_comp_wl_subsurface_restack(E_Client *ec)
-{
- EINA_SAFETY_ON_NULL_RETURN(ec);
-
- _e_comp_wl_subsurface_restack(ec);
-}
-
E_API void
e_comp_wl_subsurface_stack_update(E_Client *ec)
{
EINTERN Eina_Bool e_comp_wl_subsurface_can_show(E_Client *ec);
EINTERN void e_comp_wl_subsurface_show(E_Client *ec);
EINTERN void e_comp_wl_subsurface_hide(E_Client *ec);
-EINTERN void e_comp_wl_subsurface_restack_bg_rectangle(E_Client *ec);
-EINTERN void e_comp_wl_subsurface_restack(E_Client *ec);
EINTERN Eina_Bool e_comp_wl_video_subsurface_has(E_Client *ec);
EINTERN Eina_Bool e_comp_wl_normal_subsurface_has(E_Client *ec);
EINTERN void e_comp_wl_subsurface_check_below_bg_rectangle(E_Client *ec);