From 3282163f64291cfd63611110ab63e37051e80501 Mon Sep 17 00:00:00 2001
From: Drew DeVault <sir@cmpwn.com>
Date: Fri, 18 Dec 2015 19:29:44 -0500
Subject: Implement compositor support for swaylock

This makes swaylock more or less work.
---
 swaylock/main.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

(limited to 'swaylock')

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) {
 		if (!window) {
 			sway_abort("Failed to create surfaces.");
 		}
-		lock_set_lock_surface(registry->swaylock, output->output, window->surface);
 		list_add(surfaces, window);
 	}
 
@@ -217,7 +216,17 @@ int main(int argc, char **argv) {
 
 	cairo_surface_destroy(image);
 
-	while (wl_display_dispatch(registry->display) != -1);
+	bool locked = false;
+	while (wl_display_dispatch(registry->display) != -1) {
+		if (!locked) {
+			for (i = 0; i < registry->outputs->length; ++i) {
+				struct output_state *output = registry->outputs->items[i];
+				struct window *window = surfaces->items[i];
+				lock_set_lock_surface(registry->swaylock, output->output, window->surface);
+			}
+			locked = true;
+		}
+	}
 
 	for (i = 0; i < surfaces->length; ++i) {
 		struct window *window = surfaces->items[i];
-- 
cgit v1.2.3