From 93c9be9b328e8e6c9004d62569d30c8aab3ba57e Mon Sep 17 00:00:00 2001 From: Ian Douglas Scott Date: Fri, 10 Mar 2023 09:14:57 -0800 Subject: [PATCH] Update primary scanout output when not visible on previous output This seems to fix https://github.com/pop-os/cosmic-comp/issues/58. Though in the future the default behavior in Smithay may need some improvement. --- src/state.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/state.rs b/src/state.rs index d3b202e5..b93c7afd 100644 --- a/src/state.rs +++ b/src/state.rs @@ -408,7 +408,8 @@ impl Common { let active = self.shell.active_space(output); active.mapped().for_each(|mapped| { - if active.outputs_for_element(mapped).any(|o| &o == output) { + let outputs_for_element: Vec<_> = active.outputs_for_element(mapped).collect(); + if outputs_for_element.contains(&output) { let window = mapped.active_window(); window.with_surfaces(|surface, states| { update_surface_primary_scanout_output( @@ -416,7 +417,18 @@ impl Common { output, states, render_element_states, - default_primary_scanout_output_compare, + |current_output, current_state, next_output, next_state| { + if outputs_for_element.contains(current_output) { + default_primary_scanout_output_compare( + current_output, + current_state, + next_output, + next_state, + ) + } else { + next_output + } + }, ); }); window.send_frame(output, time, throttle, surface_primary_scanout_output);