Wayland compositor (wlroots)
git clone https://git.lucas.co/cce-compositor.git
fix: re-apply scale to all windows right before scene graph render build, ensuring subsurfaces are scaled correctly
src/server/output.rs | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/server/output.rs b/src/server/output.rs
index 402732e..573e9f2 100644
--- a/src/server/output.rs
+++ b/src/server/output.rs
@@ -6,6 +6,7 @@ use crate::server::{Server, WlListener, WlList, wl_signal_add, wl_listener_remov
use crate::layer_shell::LayerShellOutput;
use crate::lock_manager::{LockSurface, LockState};
use crate::util;
+use crate::window::Window;
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum OutputStateValue {
@@ -424,6 +425,14 @@ impl Output {
return Ok(());
}
+ // Re-apply scale to all windows in expose mode right before rendering
+ let wm = &(*self.server).wm;
+ for &window in wm.windows.iter() {
+ if !window.is_null() && (*window).scale != 1.0 {
+ (*window).render_finish();
+ }
+ }
+
let mut state = std::mem::zeroed();
ffi::wlr_output_state_init(&mut state);