aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/wlr/types/wlr_surface.h3
-rw-r--r--types/wlr_surface.c3
2 files changed, 5 insertions, 1 deletions
diff --git a/include/wlr/types/wlr_surface.h b/include/wlr/types/wlr_surface.h
index abb05600..175150f9 100644
--- a/include/wlr/types/wlr_surface.h
+++ b/include/wlr/types/wlr_surface.h
@@ -220,7 +220,8 @@ struct wlr_subsurface *wlr_subsurface_create(struct wlr_surface *surface,
struct wl_list *resource_list);
/**
- * Get the root of the subsurface tree for this surface.
+ * Get the root of the subsurface tree for this surface. Can return NULL if
+ * a surface in the tree has been destroyed.
*/
struct wlr_surface *wlr_surface_get_root_surface(struct wlr_surface *surface);
diff --git a/types/wlr_surface.c b/types/wlr_surface.c
index c251816e..dd022489 100644
--- a/types/wlr_surface.c
+++ b/types/wlr_surface.c
@@ -1061,6 +1061,9 @@ struct wlr_surface *wlr_surface_get_root_surface(struct wlr_surface *surface) {
if (subsurface == NULL) {
break;
}
+ if (subsurface->parent == NULL) {
+ return NULL;
+ }
surface = subsurface->parent;
}
return surface;