diff options
Diffstat (limited to 'sway/desktop/output.c')
-rw-r--r-- | sway/desktop/output.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/sway/desktop/output.c b/sway/desktop/output.c index dd2eaf08..18367a1c 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c | |||
@@ -275,6 +275,25 @@ static void for_each_surface_container_iterator(struct sway_container *con, | |||
275 | 275 | ||
276 | static void output_for_each_surface(struct sway_output *output, | 276 | static void output_for_each_surface(struct sway_output *output, |
277 | sway_surface_iterator_func_t iterator, void *user_data) { | 277 | sway_surface_iterator_func_t iterator, void *user_data) { |
278 | if (server.session_lock.locked) { | ||
279 | if (server.session_lock.lock == NULL) { | ||
280 | return; | ||
281 | } | ||
282 | struct wlr_session_lock_surface_v1 *lock_surface; | ||
283 | wl_list_for_each(lock_surface, &server.session_lock.lock->surfaces, link) { | ||
284 | if (lock_surface->output != output->wlr_output) { | ||
285 | continue; | ||
286 | } | ||
287 | if (!lock_surface->mapped) { | ||
288 | continue; | ||
289 | } | ||
290 | |||
291 | output_surface_for_each_surface(output, lock_surface->surface, | ||
292 | 0.0, 0.0, iterator, user_data); | ||
293 | } | ||
294 | return; | ||
295 | } | ||
296 | |||
278 | if (output_has_opaque_overlay_layer_surface(output)) { | 297 | if (output_has_opaque_overlay_layer_surface(output)) { |
279 | goto overlay; | 298 | goto overlay; |
280 | } | 299 | } |