aboutsummaryrefslogtreecommitdiff
path: root/rootston/xwayland.c
diff options
context:
space:
mode:
authoremersion <contact@emersion.fr>2018-01-21 15:13:10 +0100
committeremersion <contact@emersion.fr>2018-01-21 15:13:10 +0100
commitd8b36357e4c8d9edef7df4ecb465b7f728795f90 (patch)
tree13c2f82f25bb785b22004db180ab4a4d37a1e3d3 /rootston/xwayland.c
parenta636d72fc77ebcaa986fd1b72e85664e2fe586a3 (diff)
rootston: add roots_view_child::destroy
Diffstat (limited to 'rootston/xwayland.c')
-rw-r--r--rootston/xwayland.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/rootston/xwayland.c b/rootston/xwayland.c
index 6f9912e6..24315e1a 100644
--- a/rootston/xwayland.c
+++ b/rootston/xwayland.c
@@ -236,6 +236,12 @@ static void handle_map_notify(struct wl_listener *listener, void *data) {
view->y = xsurface->y;
wl_list_insert(&desktop->views, &view->link);
+ struct wlr_subsurface *subsurface;
+ wl_list_for_each(subsurface, &view->wlr_surface->subsurface_list,
+ parent_link) {
+ subsurface_create(view, subsurface);
+ }
+
view_damage_whole(view);
roots_surface->surface_commit.notify = handle_surface_commit;
@@ -252,6 +258,11 @@ static void handle_unmap_notify(struct wl_listener *listener, void *data) {
view_damage_whole(view);
+ struct roots_view_child *child, *tmp;
+ wl_list_for_each_safe(child, tmp, &view->children, link) {
+ child->destroy(child);
+ }
+
view->wlr_surface = NULL;
wl_list_remove(&view->link);
}