}
static Eina_Bool
-_e_comp_wl_subsurface_order_commit_recursive(E_Client *ec)
+_e_comp_wl_subsurface_order_commit(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_recursive(subc);
+ _e_comp_wl_subsurface_order_commit(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_recursive(subc);
+ _e_comp_wl_subsurface_order_commit(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);
- _e_comp_wl_subsurface_order_commit(ec);
+ if (_e_comp_wl_subsurface_order_commit(ec))
+ {
+ _e_comp_wl_subsurface_restack(ec);
+ _e_comp_wl_subsurface_restack_bg_rectangle(ec);
+ }
sdata->cached.has_data = EINA_FALSE;
}
{
EINA_SAFETY_ON_NULL_RETURN_VAL(ec, EINA_FALSE);
- _e_comp_wl_subsurface_order_commit(ec);
-
- return EINA_FALSE;
+ return _e_comp_wl_subsurface_order_commit(ec);
}
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);