From 50350f37b0c8b59f5a526cb17bad99634e828858 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bor=20Gro=C5=A1elj=20Simi=C4=87?= Date: Wed, 4 Jul 2018 01:15:14 +0200 Subject: [PATCH] Make the swaylock background only render once Fixes #1857 --- swaylock/render.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/swaylock/render.c b/swaylock/render.c index 2032ddcf3..dac5b5b28 100644 --- a/swaylock/render.c +++ b/swaylock/render.c @@ -15,6 +15,8 @@ const float TYPE_INDICATOR_BORDER_THICKNESS = M_PI / 128.0f; void render_frame(struct swaylock_surface *surface) { struct swaylock_state *state = surface->state; + static bool first_render = true; + int buffer_width = surface->width * surface->scale; int buffer_height = surface->height * surface->scale; if (buffer_width == 0 || buffer_height == 0) { @@ -30,12 +32,15 @@ void render_frame(struct swaylock_surface *surface) { cairo_t *cairo = surface->current_buffer->cairo; cairo_identity_matrix(cairo); - if (state->args.mode == BACKGROUND_MODE_SOLID_COLOR || !surface->image) { - cairo_set_source_u32(cairo, state->args.color); - cairo_paint(cairo); - } else { - render_background_image(cairo, surface->image, - state->args.mode, buffer_width, buffer_height); + if (first_render) { + if (state->args.mode == BACKGROUND_MODE_SOLID_COLOR || !surface->image) { + cairo_set_source_u32(cairo, state->args.color); + cairo_paint(cairo); + } else { + render_background_image(cairo, surface->image, + state->args.mode, buffer_width, buffer_height); + } + first_render = false; } cairo_identity_matrix(cairo);