Fix segfault in output_render

This commit is contained in:
emersion 2018-09-19 11:03:25 +02:00
parent 15dadaaa44
commit 4289343e17

View file

@ -914,12 +914,17 @@ void output_render(struct sway_output *output, struct timespec *when,
struct wlr_output *wlr_output = output->wlr_output; struct wlr_output *wlr_output = output->wlr_output;
struct wlr_renderer *renderer = struct wlr_renderer *renderer =
wlr_backend_get_renderer(wlr_output->backend); wlr_backend_get_renderer(wlr_output->backend);
if (!sway_assert(renderer != NULL, if (!sway_assert(renderer != NULL,
"expected the output backend to have a renderer")) { "expected the output backend to have a renderer")) {
return; return;
} }
struct sway_workspace *workspace = output->current.active_workspace;
if (workspace == NULL) {
return;
}
wlr_renderer_begin(renderer, wlr_output->width, wlr_output->height); wlr_renderer_begin(renderer, wlr_output->width, wlr_output->height);
if (!pixman_region32_not_empty(damage)) { 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); 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)) { if (output_has_opaque_overlay_layer_surface(output)) {
goto render_overlay; goto render_overlay;
} }
struct sway_container *fullscreen_con = workspace->current.fullscreen;
if (fullscreen_con) { if (fullscreen_con) {
float clear_color[] = {0.0f, 0.0f, 0.0f, 1.0f}; float clear_color[] = {0.0f, 0.0f, 0.0f, 1.0f};