aboutsummaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-08-23 12:48:20 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2024-08-23 12:54:07 +0300
commitff7cbb97dfc1bc584b4363f60858ef132bb0bda4 (patch)
treeff092f4b10911af1391f5eefad683c2723bedeec /src/ui
parent09f3d3fb1217e3015ef002ca0aab2918fd2aaedc (diff)
downloadniri-ff7cbb97dfc1bc584b4363f60858ef132bb0bda4.tar.gz
niri-ff7cbb97dfc1bc584b4363f60858ef132bb0bda4.tar.bz2
niri-ff7cbb97dfc1bc584b4363f60858ef132bb0bda4.zip
Fix screen transition across scale/transform changes
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/screen_transition.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/ui/screen_transition.rs b/src/ui/screen_transition.rs
index ecec1f1e..3b5c2159 100644
--- a/src/ui/screen_transition.rs
+++ b/src/ui/screen_transition.rs
@@ -2,6 +2,7 @@ use std::time::Duration;
use smithay::backend::renderer::element::Kind;
use smithay::backend::renderer::gles::GlesTexture;
+use smithay::utils::{Scale, Transform};
use crate::render_helpers::primary_gpu_texture::PrimaryGpuTextureRenderElement;
use crate::render_helpers::texture::{TextureBuffer, TextureRenderElement};
@@ -43,6 +44,14 @@ impl ScreenTransition {
self.alpha == 0.
}
+ pub fn update_render_elements(&mut self, scale: Scale<f64>, transform: Transform) {
+ // These textures should remain full-screen, even if scale or transform changes.
+ for buffer in &mut self.from_texture {
+ buffer.set_texture_scale(scale);
+ buffer.set_texture_transform(transform);
+ }
+ }
+
pub fn render(&self, target: RenderTarget) -> PrimaryGpuTextureRenderElement {
let idx = match target {
RenderTarget::Output => 0,