aboutsummaryrefslogtreecommitdiff
path: root/sway/desktop/render.c
diff options
context:
space:
mode:
authoremersion <contact@emersion.fr>2018-09-19 11:03:25 +0200
committeremersion <contact@emersion.fr>2018-09-19 11:03:25 +0200
commit4289343e17615509fba5fe389d855f2292ba09bc (patch)
treeb2116e1cd971ba5eb4d613b2e0fb9906971a654c /sway/desktop/render.c
parent15dadaaa4496085e064f290708267e703b3cd029 (diff)
Fix segfault in output_render
Diffstat (limited to 'sway/desktop/render.c')
-rw-r--r--sway/desktop/render.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/sway/desktop/render.c b/sway/desktop/render.c
index 1d2f445d..af4e2905 100644
--- a/sway/desktop/render.c
+++ b/sway/desktop/render.c
@@ -914,12 +914,17 @@ void output_render(struct sway_output *output, struct timespec *when,
struct wlr_output *wlr_output = output->wlr_output;
struct wlr_renderer *renderer =
- wlr_backend_get_renderer(wlr_output->backend);
+ wlr_backend_get_renderer(wlr_output->backend);
if (!sway_assert(renderer != NULL,
"expected the output backend to have a renderer")) {
return;
}
+ struct sway_workspace *workspace = output->current.active_workspace;
+ if (workspace == NULL) {
+ return;
+ }
+
wlr_renderer_begin(renderer, wlr_output->width, wlr_output->height);
if (!pixman_region32_not_empty(damage)) {
@@ -935,13 +940,11 @@ void output_render(struct sway_output *output, struct timespec *when,
pixman_region32_union_rect(damage, damage, 0, 0, width, height);
}
- struct sway_workspace *workspace = output->current.active_workspace;
- struct sway_container *fullscreen_con = workspace->current.fullscreen;
-
if (output_has_opaque_overlay_layer_surface(output)) {
goto render_overlay;
}
+ struct sway_container *fullscreen_con = workspace->current.fullscreen;
if (fullscreen_con) {
float clear_color[] = {0.0f, 0.0f, 0.0f, 1.0f};