diff options
Diffstat (limited to 'swaylock')
-rw-r--r-- | swaylock/main.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/swaylock/main.c b/swaylock/main.c index 4073da99..82b88731 100644 --- a/swaylock/main.c +++ b/swaylock/main.c | |||
@@ -108,7 +108,6 @@ int main(int argc, char **argv) { | |||
108 | if (!window) { | 108 | if (!window) { |
109 | sway_abort("Failed to create surfaces."); | 109 | sway_abort("Failed to create surfaces."); |
110 | } | 110 | } |
111 | lock_set_lock_surface(registry->swaylock, output->output, window->surface); | ||
112 | list_add(surfaces, window); | 111 | list_add(surfaces, window); |
113 | } | 112 | } |
114 | 113 | ||
@@ -217,7 +216,17 @@ int main(int argc, char **argv) { | |||
217 | 216 | ||
218 | cairo_surface_destroy(image); | 217 | cairo_surface_destroy(image); |
219 | 218 | ||
220 | while (wl_display_dispatch(registry->display) != -1); | 219 | bool locked = false; |
220 | while (wl_display_dispatch(registry->display) != -1) { | ||
221 | if (!locked) { | ||
222 | for (i = 0; i < registry->outputs->length; ++i) { | ||
223 | struct output_state *output = registry->outputs->items[i]; | ||
224 | struct window *window = surfaces->items[i]; | ||
225 | lock_set_lock_surface(registry->swaylock, output->output, window->surface); | ||
226 | } | ||
227 | locked = true; | ||
228 | } | ||
229 | } | ||
221 | 230 | ||
222 | for (i = 0; i < surfaces->length; ++i) { | 231 | for (i = 0; i < surfaces->length; ++i) { |
223 | struct window *window = surfaces->items[i]; | 232 | struct window *window = surfaces->items[i]; |