struct wl_client *client;
struct wl_resource *res;
E_Comp_Wl_Subsurf_Data *sdata;
+ E_Client *offscreen_parent = NULL;
/* try to get the wayland client from the surface resource */
if (!(client = wl_resource_get_client(surface_resource)))
return EINA_FALSE;
}
+ // reparent remote surface provider's subsurfaces
+ if (epc->comp_data->remote_surface.onscreen_parent)
+ {
+ offscreen_parent = epc;
+ epc = epc->comp_data->remote_surface.onscreen_parent;
+ }
+
// check parent relationship is a cycle
{
E_Client *parent = epc;
sdata->resource = res;
sdata->synchronized = EINA_TRUE;
sdata->parent = epc;
+ sdata->remote_surface.offscreen_parent = offscreen_parent;
/* set subsurface client properties */
ec->borderless = EINA_TRUE;
evas_object_del(ec->comp_data->sub.below_obj);
/* remove sub list */
+ /* TODO: if parent is set by onscreen_parent of remote surface? */
EINA_LIST_FREE(ec->comp_data->sub.list, subc)
if (subc->comp_data && subc->comp_data->sub.data) subc->comp_data->sub.data->parent = NULL;
EINA_LIST_FREE(ec->comp_data->sub.list_pending, subc)