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;
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
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,
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