aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-05-04 11:51:27 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2024-05-04 11:51:27 +0400
commit99eb1227b17ee224c83a1a56103e3fb9eb6c34b8 (patch)
tree5f548b359e21a6a7be0753efcfb6574ba5600daf /src
parent79093baeee5bbb52e737afe4814b64a8f457da5a (diff)
downloadniri-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.rs7
-rw-r--r--src/render_helpers/mod.rs11
-rw-r--r--src/render_helpers/snapshot.rs8
-rw-r--r--src/window/mapped.rs26
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![];