aboutsummaryrefslogtreecommitdiff
path: root/src/niri.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-09-08 22:05:56 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2024-09-08 22:05:56 +0300
commitbb044075fab6181747fc7d3b648c6fcd9b5b760f (patch)
treef2c49c16691f7bc8e68f46f7bbf909fc7c0ad40b /src/niri.rs
parent370fd4e172ec3daf9dc9c75dc0555fe91182f731 (diff)
downloadniri-bb044075fab6181747fc7d3b648c6fcd9b5b760f.tar.gz
niri-bb044075fab6181747fc7d3b648c6fcd9b5b760f.tar.bz2
niri-bb044075fab6181747fc7d3b648c6fcd9b5b760f.zip
Inform layer surfaces of scale/transform changes
How'd I miss this and then never catch it?
Diffstat (limited to 'src/niri.rs')
-rw-r--r--src/niri.rs14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/niri.rs b/src/niri.rs
index a5cedef4..7ba04176 100644
--- a/src/niri.rs
+++ b/src/niri.rs
@@ -2157,9 +2157,20 @@ impl Niri {
pub fn output_resized(&mut self, output: &Output) {
let output_size = output_size(output).to_i32_round();
+ let scale = output.current_scale();
+ let transform = output.current_transform();
let is_locked = self.is_locked();
- layer_map_for_output(output).arrange();
+ {
+ let mut layer_map = layer_map_for_output(output);
+ layer_map.arrange();
+ for layer in layer_map.layers() {
+ layer.with_surfaces(|surface, data| {
+ send_scale_transform(surface, data, scale, transform);
+ });
+ }
+ }
+
self.layout.update_output_size(output);
if let Some(state) = self.output_state.get_mut(output) {
@@ -2175,7 +2186,6 @@ impl Niri {
// If the output size changed with an open screenshot UI, close the screenshot UI.
if let Some((old_size, old_scale, old_transform)) = self.screenshot_ui.output_size(output) {
- let transform = output.current_transform();
let output_mode = output.current_mode().unwrap();
let size = transform.transform_size(output_mode.size);
let scale = output.current_scale().fractional_scale();