diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-05-04 11:51:27 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-05-04 11:51:27 +0400 |
| commit | 99eb1227b17ee224c83a1a56103e3fb9eb6c34b8 (patch) | |
| tree | 5f548b359e21a6a7be0753efcfb6574ba5600daf /src | |
| parent | 79093baeee5bbb52e737afe4814b64a8f457da5a (diff) | |
| download | niri-99eb1227b17ee224c83a1a56103e3fb9eb6c34b8.tar.gz niri-99eb1227b17ee224c83a1a56103e3fb9eb6c34b8.tar.bz2 niri-99eb1227b17ee224c83a1a56103e3fb9eb6c34b8.zip | |
Extract RenderTarget::should_block_out()
Diffstat (limited to 'src')
| -rw-r--r-- | src/layout/closing_window.rs | 7 | ||||
| -rw-r--r-- | src/render_helpers/mod.rs | 11 | ||||
| -rw-r--r-- | src/render_helpers/snapshot.rs | 8 | ||||
| -rw-r--r-- | src/window/mapped.rs | 26 |
4 files changed, 17 insertions, 35 deletions
diff --git a/src/layout/closing_window.rs b/src/layout/closing_window.rs index d30d8646..6d6168bb 100644 --- a/src/layout/closing_window.rs +++ b/src/layout/closing_window.rs @@ -123,12 +123,7 @@ impl ClosingWindow { ) -> ClosingWindowRenderElement { let val = self.anim.clamped_value(); - let block_out = match self.block_out_from { - None => false, - Some(BlockOutFrom::Screencast) => target == RenderTarget::Screencast, - Some(BlockOutFrom::ScreenCapture) => target != RenderTarget::Output, - }; - let (buffer, offset) = if block_out { + let (buffer, offset) = if target.should_block_out(self.block_out_from) { (&self.blocked_out_buffer, self.blocked_out_buffer_offset) } else { (&self.buffer, self.buffer_offset) diff --git a/src/render_helpers/mod.rs b/src/render_helpers/mod.rs index c7a4025a..db2d39d7 100644 --- a/src/render_helpers/mod.rs +++ b/src/render_helpers/mod.rs @@ -1,6 +1,7 @@ use std::ptr; use anyhow::{ensure, Context}; +use niri_config::BlockOutFrom; use smithay::backend::allocator::Fourcc; use smithay::backend::renderer::element::solid::{SolidColorBuffer, SolidColorRenderElement}; use smithay::backend::renderer::element::texture::{TextureBuffer, TextureRenderElement}; @@ -70,6 +71,16 @@ pub trait ToRenderElement { ) -> Self::RenderElement; } +impl RenderTarget { + pub fn should_block_out(self, block_out_from: Option<BlockOutFrom>) -> bool { + match block_out_from { + None => false, + Some(BlockOutFrom::Screencast) => self == RenderTarget::Screencast, + Some(BlockOutFrom::ScreenCapture) => self != RenderTarget::Output, + } + } +} + impl<E> Default for SplitElements<E> { fn default() -> Self { Self { diff --git a/src/render_helpers/snapshot.rs b/src/render_helpers/snapshot.rs index b394dcd9..62416c43 100644 --- a/src/render_helpers/snapshot.rs +++ b/src/render_helpers/snapshot.rs @@ -47,13 +47,7 @@ where scale: Scale<f64>, target: RenderTarget, ) -> Option<&(GlesTexture, Rectangle<i32, Physical>)> { - let block_out = match self.block_out_from { - None => false, - Some(BlockOutFrom::Screencast) => target == RenderTarget::Screencast, - Some(BlockOutFrom::ScreenCapture) => target != RenderTarget::Output, - }; - - if block_out { + if target.should_block_out(self.block_out_from) { self.blocked_out_texture.get_or_init(|| { let _span = tracy_client::span!("RenderSnapshot::Texture"); diff --git a/src/window/mapped.rs b/src/window/mapped.rs index 6ebb7a32..3fd0a259 100644 --- a/src/window/mapped.rs +++ b/src/window/mapped.rs @@ -1,7 +1,7 @@ use std::cell::RefCell; use std::cmp::{max, min}; -use niri_config::{BlockOutFrom, WindowRule}; +use niri_config::WindowRule; use smithay::backend::renderer::element::solid::{SolidColorBuffer, SolidColorRenderElement}; use smithay::backend::renderer::element::surface::render_elements_from_surface_tree; use smithay::backend::renderer::element::{Id, Kind}; @@ -207,13 +207,7 @@ impl LayoutElement for Mapped { ) -> SplitElements<LayoutElementRenderElement<R>> { let mut rv = SplitElements::default(); - let block_out = match self.rules.block_out_from { - None => false, - Some(BlockOutFrom::Screencast) => target == RenderTarget::Screencast, - Some(BlockOutFrom::ScreenCapture) => target != RenderTarget::Output, - }; - - if block_out { + if target.should_block_out(self.rules.block_out_from) { let mut buffer = self.block_out_buffer.borrow_mut(); buffer.resize(self.window.geometry().size); let elem = SolidColorRenderElement::from_buffer( @@ -262,13 +256,7 @@ impl LayoutElement for Mapped { alpha: f32, target: RenderTarget, ) -> Vec<LayoutElementRenderElement<R>> { - let block_out = match self.rules.block_out_from { - None => false, - Some(BlockOutFrom::Screencast) => target == RenderTarget::Screencast, - Some(BlockOutFrom::ScreenCapture) => target != RenderTarget::Output, - }; - - if block_out { + if target.should_block_out(self.rules.block_out_from) { let mut buffer = self.block_out_buffer.borrow_mut(); buffer.resize(self.window.geometry().size); let elem = SolidColorRenderElement::from_buffer( @@ -301,13 +289,7 @@ impl LayoutElement for Mapped { alpha: f32, target: RenderTarget, ) -> Vec<LayoutElementRenderElement<R>> { - let block_out = match self.rules.block_out_from { - None => false, - Some(BlockOutFrom::Screencast) => target == RenderTarget::Screencast, - Some(BlockOutFrom::ScreenCapture) => target != RenderTarget::Output, - }; - - if block_out { + if target.should_block_out(self.rules.block_out_from) { vec![] } else { let mut rv = vec![]; |
