mirror of
https://github.com/labwc/labwc.git
synced 2025-11-30 06:59:52 -05:00
view: add defensive checks for null content_tree
This commit is contained in:
parent
b1e7282995
commit
8bd20f19dc
4 changed files with 14 additions and 3 deletions
|
|
@ -163,7 +163,7 @@ struct view {
|
||||||
struct workspace *workspace;
|
struct workspace *workspace;
|
||||||
struct wlr_surface *surface;
|
struct wlr_surface *surface;
|
||||||
struct wlr_scene_tree *scene_tree;
|
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. */
|
/* These are never NULL and an empty string is set instead. */
|
||||||
char *title;
|
char *title;
|
||||||
|
|
|
||||||
|
|
@ -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);
|
snprintf(view_name, sizeof(view_name), "view (%s)", view->app_id);
|
||||||
return view_name;
|
return view_name;
|
||||||
}
|
}
|
||||||
if (node == &view->content_tree->node) {
|
if (view->content_tree && node == &view->content_tree->node) {
|
||||||
return "view->content_tree";
|
return "view->content_tree";
|
||||||
}
|
}
|
||||||
if (view->resize_indicator.tree
|
if (view->resize_indicator.tree
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,13 @@ render_node(struct server *server, struct wlr_render_pass *pass,
|
||||||
static struct wlr_buffer *
|
static struct wlr_buffer *
|
||||||
render_thumb(struct output *output, struct view *view)
|
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 server *server = output->server;
|
||||||
struct wlr_buffer *buffer = wlr_allocator_create_buffer(server->allocator,
|
struct wlr_buffer *buffer = wlr_allocator_create_buffer(server->allocator,
|
||||||
view->current.width, view->current.height,
|
view->current.width, view->current.height,
|
||||||
|
|
|
||||||
|
|
@ -2517,7 +2517,11 @@ view_set_shade(struct view *view, bool shaded)
|
||||||
|
|
||||||
view->shaded = shaded;
|
view->shaded = shaded;
|
||||||
ssd_enable_shade(view->ssd, view->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
|
void
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue