aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/handlers/compositor.rs2
-rw-r--r--src/niri.rs1
-rw-r--r--src/pw_utils.rs5
-rw-r--r--src/render_helpers/border.rs4
-rw-r--r--src/render_helpers/clipped_surface.rs10
-rw-r--r--src/render_helpers/debug.rs2
-rw-r--r--src/render_helpers/offscreen.rs4
-rw-r--r--src/render_helpers/primary_gpu_texture.rs4
-rw-r--r--src/render_helpers/render_elements.rs2
-rw-r--r--src/render_helpers/resize.rs4
-rw-r--r--src/render_helpers/shader_element.rs4
11 files changed, 22 insertions, 20 deletions
diff --git a/src/handlers/compositor.rs b/src/handlers/compositor.rs
index 2afb8fe8..d12140e6 100644
--- a/src/handlers/compositor.rs
+++ b/src/handlers/compositor.rs
@@ -54,7 +54,7 @@ impl CompositorHandler for State {
.buffer
.as_ref()
.and_then(|assignment| match assignment {
- BufferAssignment::NewBuffer(buffer) => get_dmabuf(buffer).ok(),
+ BufferAssignment::NewBuffer(buffer) => get_dmabuf(buffer).cloned().ok(),
_ => None,
})
});
diff --git a/src/niri.rs b/src/niri.rs
index 65a7fac2..1c0ad3fc 100644
--- a/src/niri.rs
+++ b/src/niri.rs
@@ -491,6 +491,7 @@ impl State {
self.niri.cursor_manager.check_cursor_image_surface_alive();
self.niri.refresh_pointer_outputs();
self.niri.popups.cleanup();
+ self.niri.global_space.refresh();
self.niri.refresh_idle_inhibit();
self.refresh_popup_grab();
self.update_keyboard_focus();
diff --git a/src/pw_utils.rs b/src/pw_utils.rs
index 0c2dbd45..4da239ee 100644
--- a/src/pw_utils.rs
+++ b/src/pw_utils.rs
@@ -24,7 +24,7 @@ use pipewire::spa::utils::{
};
use pipewire::stream::{Stream, StreamFlags, StreamListener, StreamState};
use smithay::backend::allocator::dmabuf::{AsDmabuf, Dmabuf};
-use smithay::backend::allocator::gbm::{GbmBufferFlags, GbmDevice};
+use smithay::backend::allocator::gbm::{GbmBuffer, GbmBufferFlags, GbmDevice};
use smithay::backend::allocator::Fourcc;
use smithay::backend::drm::DrmDeviceFd;
use smithay::output::Output;
@@ -292,7 +292,8 @@ impl PipeWire {
return;
}
};
- let dmabuf = match bo.export() {
+ let buffer = GbmBuffer::from_bo(bo, true);
+ let dmabuf = match buffer.export() {
Ok(dmabuf) => dmabuf,
Err(err) => {
warn!("error exporting GBM buffer object as dmabuf: {err:?}");
diff --git a/src/render_helpers/border.rs b/src/render_helpers/border.rs
index 5ecbb7a5..9c909206 100644
--- a/src/render_helpers/border.rs
+++ b/src/render_helpers/border.rs
@@ -4,7 +4,7 @@ use glam::{Mat3, Vec2};
use niri_config::CornerRadius;
use smithay::backend::renderer::element::{Element, Id, Kind, RenderElement, UnderlyingStorage};
use smithay::backend::renderer::gles::{GlesError, GlesFrame, GlesRenderer, Uniform};
-use smithay::backend::renderer::utils::{CommitCounter, DamageSet};
+use smithay::backend::renderer::utils::{CommitCounter, DamageSet, OpaqueRegions};
use smithay::utils::{Buffer, Logical, Physical, Point, Rectangle, Scale, Size, Transform};
use super::renderer::NiriRenderer;
@@ -219,7 +219,7 @@ impl Element for BorderRenderElement {
self.inner.damage_since(scale, commit)
}
- fn opaque_regions(&self, scale: Scale<f64>) -> Vec<Rectangle<i32, Physical>> {
+ fn opaque_regions(&self, scale: Scale<f64>) -> OpaqueRegions<i32, Physical> {
self.inner.opaque_regions(scale)
}
diff --git a/src/render_helpers/clipped_surface.rs b/src/render_helpers/clipped_surface.rs
index 43ba8594..72c497b2 100644
--- a/src/render_helpers/clipped_surface.rs
+++ b/src/render_helpers/clipped_surface.rs
@@ -5,7 +5,7 @@ use smithay::backend::renderer::element::{Element, Id, Kind, RenderElement, Unde
use smithay::backend::renderer::gles::{
GlesError, GlesFrame, GlesRenderer, GlesTexProgram, Uniform,
};
-use smithay::backend::renderer::utils::{CommitCounter, DamageSet};
+use smithay::backend::renderer::utils::{CommitCounter, DamageSet, OpaqueRegions};
use smithay::utils::{Buffer, Logical, Physical, Rectangle, Scale, Size, Transform};
use super::damage::ExtraDamage;
@@ -45,10 +45,10 @@ impl<R: NiriRenderer> ClippedSurfaceRenderElement<R> {
let geo_loc = Vec2::new(geo.loc.x, geo.loc.y);
let geo_size = Vec2::new(geo.size.w, geo.size.h);
- let buf_size = elem.buffer_size().unwrap();
+ let buf_size = elem.buffer_size();
let buf_size = Vec2::new(buf_size.w as f32, buf_size.h as f32);
- let view = elem.view().unwrap();
+ let view = elem.view();
let src_loc = Vec2::new(view.src.loc.x as f32, view.src.loc.y as f32);
let src_size = Vec2::new(view.src.size.w as f32, view.src.size.h as f32);
@@ -172,7 +172,7 @@ impl<R: NiriRenderer> Element for ClippedSurfaceRenderElement<R> {
.collect()
}
- fn opaque_regions(&self, scale: Scale<f64>) -> Vec<Rectangle<i32, Physical>> {
+ fn opaque_regions(&self, scale: Scale<f64>) -> OpaqueRegions<i32, Physical> {
let regions = self.inner.opaque_regions(scale);
// Intersect with geometry, since we're clipping by it.
@@ -195,7 +195,7 @@ impl<R: NiriRenderer> Element for ClippedSurfaceRenderElement<R> {
rect
});
- Rectangle::subtract_rects_many(regions, corners)
+ OpaqueRegions::from_slice(&Rectangle::subtract_rects_many(regions, corners))
}
}
diff --git a/src/render_helpers/debug.rs b/src/render_helpers/debug.rs
index 2a4c4332..164e4370 100644
--- a/src/render_helpers/debug.rs
+++ b/src/render_helpers/debug.rs
@@ -24,7 +24,7 @@ pub fn draw_opaque_regions<R: NiriRenderer>(
}
let geo = elem.geometry(scale);
- let mut opaque = elem.opaque_regions(scale);
+ let mut opaque = elem.opaque_regions(scale).to_vec();
for rect in &mut opaque {
rect.loc += geo.loc;
diff --git a/src/render_helpers/offscreen.rs b/src/render_helpers/offscreen.rs
index 60e495ca..7c563b9b 100644
--- a/src/render_helpers/offscreen.rs
+++ b/src/render_helpers/offscreen.rs
@@ -4,7 +4,7 @@ use smithay::backend::renderer::element::texture::{TextureBuffer, TextureRenderE
use smithay::backend::renderer::element::utils::{Relocate, RelocateRenderElement};
use smithay::backend::renderer::element::{Element, Id, Kind, RenderElement, UnderlyingStorage};
use smithay::backend::renderer::gles::{GlesError, GlesFrame, GlesRenderer};
-use smithay::backend::renderer::utils::{CommitCounter, DamageSet};
+use smithay::backend::renderer::utils::{CommitCounter, DamageSet, OpaqueRegions};
use smithay::utils::{Buffer, Physical, Rectangle, Scale, Transform};
use super::primary_gpu_texture::PrimaryGpuTextureRenderElement;
@@ -138,7 +138,7 @@ impl Element for OffscreenRenderElement {
}
}
- fn opaque_regions(&self, scale: Scale<f64>) -> Vec<Rectangle<i32, Physical>> {
+ fn opaque_regions(&self, scale: Scale<f64>) -> OpaqueRegions<i32, Physical> {
if let Some(texture) = &self.texture {
texture.opaque_regions(scale)
} else {
diff --git a/src/render_helpers/primary_gpu_texture.rs b/src/render_helpers/primary_gpu_texture.rs
index 571d3927..54046f59 100644
--- a/src/render_helpers/primary_gpu_texture.rs
+++ b/src/render_helpers/primary_gpu_texture.rs
@@ -1,7 +1,7 @@
use smithay::backend::renderer::element::texture::TextureRenderElement;
use smithay::backend::renderer::element::{Element, Id, Kind, RenderElement, UnderlyingStorage};
use smithay::backend::renderer::gles::{GlesError, GlesFrame, GlesRenderer, GlesTexture};
-use smithay::backend::renderer::utils::{CommitCounter, DamageSet};
+use smithay::backend::renderer::utils::{CommitCounter, DamageSet, OpaqueRegions};
use smithay::utils::{Buffer, Physical, Rectangle, Scale, Transform};
use super::renderer::AsGlesFrame;
@@ -40,7 +40,7 @@ impl Element for PrimaryGpuTextureRenderElement {
self.0.damage_since(scale, commit)
}
- fn opaque_regions(&self, scale: Scale<f64>) -> Vec<Rectangle<i32, Physical>> {
+ fn opaque_regions(&self, scale: Scale<f64>) -> OpaqueRegions<i32, Physical> {
self.0.opaque_regions(scale)
}
diff --git a/src/render_helpers/render_elements.rs b/src/render_helpers/render_elements.rs
index b314d118..2dae7342 100644
--- a/src/render_helpers/render_elements.rs
+++ b/src/render_helpers/render_elements.rs
@@ -75,7 +75,7 @@ macro_rules! niri_render_elements {
}
}
- fn opaque_regions(&self, scale: smithay::utils::Scale<f64>) -> Vec<smithay::utils::Rectangle<i32, smithay::utils::Physical>> {
+ fn opaque_regions(&self, scale: smithay::utils::Scale<f64>) -> smithay::backend::renderer::utils::OpaqueRegions<i32, smithay::utils::Physical> {
match self {
$($name::$variant(elem) => elem.opaque_regions(scale)),+
}
diff --git a/src/render_helpers/resize.rs b/src/render_helpers/resize.rs
index 778dce42..b9c0231f 100644
--- a/src/render_helpers/resize.rs
+++ b/src/render_helpers/resize.rs
@@ -4,7 +4,7 @@ use glam::{Mat3, Vec2};
use niri_config::CornerRadius;
use smithay::backend::renderer::element::{Element, Id, Kind, RenderElement, UnderlyingStorage};
use smithay::backend::renderer::gles::{GlesError, GlesFrame, GlesRenderer, GlesTexture, Uniform};
-use smithay::backend::renderer::utils::{CommitCounter, DamageSet};
+use smithay::backend::renderer::utils::{CommitCounter, DamageSet, OpaqueRegions};
use smithay::utils::{Buffer, Logical, Physical, Rectangle, Scale, Size, Transform};
use super::renderer::{AsGlesFrame, NiriRenderer};
@@ -146,7 +146,7 @@ impl Element for ResizeRenderElement {
self.0.damage_since(scale, commit)
}
- fn opaque_regions(&self, scale: Scale<f64>) -> Vec<Rectangle<i32, Physical>> {
+ fn opaque_regions(&self, scale: Scale<f64>) -> OpaqueRegions<i32, Physical> {
self.0.opaque_regions(scale)
}
diff --git a/src/render_helpers/shader_element.rs b/src/render_helpers/shader_element.rs
index 81487c86..bb13d54d 100644
--- a/src/render_helpers/shader_element.rs
+++ b/src/render_helpers/shader_element.rs
@@ -8,7 +8,7 @@ use smithay::backend::renderer::gles::{
ffi, link_program, Capability, GlesError, GlesFrame, GlesRenderer, GlesTexture, Uniform,
UniformDesc, UniformName,
};
-use smithay::backend::renderer::utils::CommitCounter;
+use smithay::backend::renderer::utils::{CommitCounter, OpaqueRegions};
use smithay::backend::renderer::DebugFlags;
use smithay::utils::{Buffer, Logical, Physical, Point, Rectangle, Scale, Size};
@@ -274,7 +274,7 @@ impl Element for ShaderRenderElement {
self.area.to_physical_precise_round(scale)
}
- fn opaque_regions(&self, scale: Scale<f64>) -> Vec<Rectangle<i32, Physical>> {
+ fn opaque_regions(&self, scale: Scale<f64>) -> OpaqueRegions<i32, Physical> {
self.opaque_regions
.iter()
.map(|region| region.to_physical_precise_round(scale))