diff options
author | emersion <contact@emersion.fr> | 2019-03-02 12:01:00 +0100 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2019-03-02 09:37:05 -0700 |
commit | 242e9e3bf00fa0eaca631be19b54d11493bdeaa8 (patch) | |
tree | 300bf9fb61897a383737a7a47b0a9c2ae4c2c941 | |
parent | bfaf06f04bfbfc53b4c62ed373b1e92c1c6b2a0e (diff) |
rootston: fix Xwayland children rendering when fullscreen
-rw-r--r-- | rootston/output.c | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/rootston/output.c b/rootston/output.c index 70197081..595b401a 100644 --- a/rootston/output.c +++ b/rootston/output.c @@ -136,22 +136,23 @@ void output_view_for_each_surface(struct roots_output *output, view_for_each_surface(view, output_for_each_surface_iterator, &data); } -/*#if WLR_HAS_XWAYLAND -static void xwayland_children_for_each_surface( - struct wlr_xwayland_surface *surface, - wlr_surface_iterator_func_t iterator, struct layout_data *layout_data, - void *user_data) { +#if WLR_HAS_XWAYLAND +static void output_xwayland_children_for_each_surface( + struct roots_output *output, struct wlr_xwayland_surface *surface, + roots_surface_iterator_func_t iterator, void *user_data) { struct wlr_xwayland_surface *child; wl_list_for_each(child, &surface->children, parent_link) { if (child->mapped) { - surface_for_each_surface(child->surface, child->x, child->y, 0, - layout_data, iterator, user_data); + double ox = child->x - output->wlr_output->lx; + double oy = child->y - output->wlr_output->ly; + output_surface_for_each_surface(output, child->surface, + ox, oy, iterator, user_data); } - xwayland_children_for_each_surface(child, iterator, layout_data, - user_data); + output_xwayland_children_for_each_surface(output, child, + iterator, user_data); } } -#endif*/ +#endif void output_layer_for_each_surface(struct roots_output *output, struct wl_list *layer_surfaces, roots_surface_iterator_func_t iterator, @@ -192,15 +193,14 @@ void output_for_each_surface(struct roots_output *output, output_view_for_each_surface(output, view, iterator, user_data); -/*#if WLR_HAS_XWAYLAND +#if WLR_HAS_XWAYLAND if (view->type == ROOTS_XWAYLAND_VIEW) { struct roots_xwayland_surface *xwayland_surface = roots_xwayland_surface_from_view(view); - xwayland_children_for_each_surface( - xwayland_surface->xwayland_surface, - iterator, layout_data, user_data); + output_xwayland_children_for_each_surface(output, + xwayland_surface->xwayland_surface, iterator, user_data); } -#endif*/ +#endif } else { struct roots_view *view; wl_list_for_each_reverse(view, &desktop->views, link) { @@ -509,15 +509,15 @@ static void render_output(struct roots_output *output) { // During normal rendering the xwayland window tree isn't traversed // because all windows are rendered. Here we only want to render // the fullscreen window's children so we have to traverse the tree. -/*#if WLR_HAS_XWAYLAND +#if WLR_HAS_XWAYLAND if (view->type == ROOTS_XWAYLAND_VIEW) { struct roots_xwayland_surface *xwayland_surface = roots_xwayland_surface_from_view(view); - xwayland_children_for_each_surface( + output_xwayland_children_for_each_surface(output, xwayland_surface->xwayland_surface, - render_surface, &data.layout, &data); + render_surface_iterator, &data); } -#endif*/ +#endif } else { // Render all views struct roots_view *view; |