]> git.mdlowis.com Git - proto/labwc.git/commitdiff
view: add defensive checks for null content_tree
authorJohn Lindgren <john@jlindgren.net>
Mon, 24 Nov 2025 15:35:21 +0000 (10:35 -0500)
committerJohn Lindgren <john@jlindgren.net>
Thu, 27 Nov 2025 06:26:55 +0000 (01:26 -0500)
include/view.h
src/debug.c
src/osd/osd-thumbnail.c
src/view.c

index 491a0c9ce881ba8d453e4e05108b4f28a08a02ed..9ad11cd90ff6cdfa22906e2c54926b76ff5fd67f 100644 (file)
@@ -163,7 +163,7 @@ struct view {
        struct workspace *workspace;
        struct wlr_surface *surface;
        struct wlr_scene_tree *scene_tree;
-       struct wlr_scene_tree *content_tree;
+       struct wlr_scene_tree *content_tree; /* may be NULL for unmapped view */
 
        /* These are never NULL and an empty string is set instead. */
        char *title;
index 84b844d8a472cf9381a8ce419d69e779e9acb544..cd2ce3d28ed0a667cf6061fe93d75243572919b6 100644 (file)
@@ -77,7 +77,7 @@ get_view_part(struct view *view, struct wlr_scene_node *node)
                snprintf(view_name, sizeof(view_name), "view (%s)", view->app_id);
                return view_name;
        }
-       if (node == &view->content_tree->node) {
+       if (view->content_tree && node == &view->content_tree->node) {
                return "view->content_tree";
        }
        if (view->resize_indicator.tree
index cc34a3c25465169a0276558a09540246b197b63d..6861089601689290abf9a5cc4c2da0b0e26226d8 100644 (file)
@@ -74,6 +74,13 @@ render_node(struct server *server, struct wlr_render_pass *pass,
 static struct wlr_buffer *
 render_thumb(struct output *output, struct view *view)
 {
+       if (!view->content_tree) {
+               /*
+                * Defensive. Could possibly occur if view was unmapped
+                * with OSD already displayed.
+                */
+               return NULL;
+       }
        struct server *server = output->server;
        struct wlr_buffer *buffer = wlr_allocator_create_buffer(server->allocator,
                view->current.width, view->current.height,
index d2297147703f6dcdcd94045a7cad8a8470754b0a..f9dd3e0b2bf40ae9ba2c687c475fafd08365195f 100644 (file)
@@ -2517,7 +2517,11 @@ view_set_shade(struct view *view, bool shaded)
 
        view->shaded = shaded;
        ssd_enable_shade(view->ssd, view->shaded);
-       wlr_scene_node_set_enabled(&view->content_tree->node, !view->shaded);
+       /* An unmapped view may not have a content tree */
+       if (view->content_tree) {
+               wlr_scene_node_set_enabled(&view->content_tree->node,
+                       !view->shaded);
+       }
 }
 
 void