aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/tty.rs4
-rw-r--r--src/backend/winit.rs6
-rw-r--r--src/handlers/mod.rs13
-rw-r--r--src/niri.rs19
-rw-r--r--src/render_helpers/gradient.rs4
-rw-r--r--src/render_helpers/mod.rs3
-rw-r--r--src/render_helpers/offscreen.rs4
-rw-r--r--src/render_helpers/primary_gpu_pixel_shader.rs4
-rw-r--r--src/render_helpers/primary_gpu_texture.rs4
-rw-r--r--src/render_helpers/render_elements.rs2
10 files changed, 30 insertions, 33 deletions
diff --git a/src/backend/tty.rs b/src/backend/tty.rs
index 32932f08..eedb47a2 100644
--- a/src/backend/tty.rs
+++ b/src/backend/tty.rs
@@ -1197,7 +1197,9 @@ impl Tty {
{
if let PrimaryPlaneElement::Swapchain(element) = res.primary_element {
let _span = tracy_client::span!("wait for completion");
- element.sync.wait();
+ if let Err(err) = element.sync.wait() {
+ warn!("error waiting for frame completion: {err:?}");
+ }
}
}
diff --git a/src/backend/winit.rs b/src/backend/winit.rs
index 65244e81..0c5fc1fc 100644
--- a/src/backend/winit.rs
+++ b/src/backend/winit.rs
@@ -176,10 +176,12 @@ impl Winit {
.wait_for_frame_completion_before_queueing
{
let _span = tracy_client::span!("wait for completion");
- res.sync.wait();
+ if let Err(err) = res.sync.wait() {
+ warn!("error waiting for frame completion: {err:?}");
+ }
}
- self.backend.submit(Some(&damage)).unwrap();
+ self.backend.submit(Some(damage)).unwrap();
let mut presentation_feedbacks = niri.take_presentation_feedbacks(output, &res.states);
let mode = output.current_mode().unwrap();
diff --git a/src/handlers/mod.rs b/src/handlers/mod.rs
index f87d494c..ae2b4499 100644
--- a/src/handlers/mod.rs
+++ b/src/handlers/mod.rs
@@ -10,6 +10,7 @@ use std::thread;
use smithay::backend::allocator::dmabuf::Dmabuf;
use smithay::backend::drm::DrmNode;
+use smithay::backend::input::TabletToolDescriptor;
use smithay::desktop::{PopupKind, PopupManager};
use smithay::input::pointer::{CursorIcon, CursorImageStatus, PointerHandle};
use smithay::input::{keyboard, Seat, SeatHandler, SeatState};
@@ -45,6 +46,7 @@ use smithay::wayland::selection::{SelectionHandler, SelectionTarget};
use smithay::wayland::session_lock::{
LockSurface, SessionLockHandler, SessionLockManagerState, SessionLocker,
};
+use smithay::wayland::tablet_manager::TabletSeatHandler;
use smithay::{
delegate_cursor_shape, delegate_data_control, delegate_data_device, delegate_dmabuf,
delegate_drm_lease, delegate_idle_inhibit, delegate_idle_notify, delegate_input_method_manager,
@@ -105,11 +107,20 @@ impl SeatHandler for State {
}
delegate_seat!(State);
delegate_cursor_shape!(State);
-delegate_tablet_manager!(State);
delegate_pointer_gestures!(State);
delegate_relative_pointer!(State);
delegate_text_input_manager!(State);
+impl TabletSeatHandler for State {
+ fn tablet_tool_image(&mut self, _tool: &TabletToolDescriptor, image: CursorImageStatus) {
+ // FIXME: tablet tools should have their own cursors.
+ self.niri.cursor_manager.set_cursor_image(image);
+ // FIXME: granular.
+ self.niri.queue_redraw_all();
+ }
+}
+delegate_tablet_manager!(State);
+
impl PointerConstraintsHandler for State {
fn new_constraint(&mut self, _surface: &WlSurface, pointer: &PointerHandle<Self>) {
self.niri.maybe_activate_pointer_constraint(
diff --git a/src/niri.rs b/src/niri.rs
index 036a5a83..1eedcffa 100644
--- a/src/niri.rs
+++ b/src/niri.rs
@@ -82,7 +82,7 @@ use smithay::wayland::shell::xdg::decoration::XdgDecorationState;
use smithay::wayland::shell::xdg::XdgShellState;
use smithay::wayland::shm::ShmState;
use smithay::wayland::socket::ListeningSocketSource;
-use smithay::wayland::tablet_manager::{TabletManagerState, TabletSeatTrait};
+use smithay::wayland::tablet_manager::TabletManagerState;
use smithay::wayland::text_input::TextInputManagerState;
use smithay::wayland::viewporter::ViewporterState;
use smithay::wayland::virtual_keyboard::VirtualKeyboardManagerState;
@@ -1232,23 +1232,6 @@ impl Niri {
let mods_with_finger_scroll_binds =
mods_with_finger_scroll_binds(backend.mod_key(), &config_.binds);
- let (tx, rx) = calloop::channel::channel();
- event_loop
- .insert_source(rx, move |event, _, state| {
- if let calloop::channel::Event::Msg(image) = event {
- state.niri.cursor_manager.set_cursor_image(image);
- // FIXME: granular.
- state.niri.queue_redraw_all();
- }
- })
- .unwrap();
- seat.tablet_seat()
- .on_cursor_surface(move |_tool, new_image| {
- if let Err(err) = tx.send(new_image) {
- warn!("error sending new tablet cursor image: {err:?}");
- };
- });
-
let screenshot_ui = ScreenshotUi::new();
let config_error_notification = ConfigErrorNotification::new(config.clone());
diff --git a/src/render_helpers/gradient.rs b/src/render_helpers/gradient.rs
index 62fd3714..958c2f9e 100644
--- a/src/render_helpers/gradient.rs
+++ b/src/render_helpers/gradient.rs
@@ -2,7 +2,7 @@ use glam::Vec2;
use smithay::backend::renderer::element::{Element, Id, Kind, RenderElement, UnderlyingStorage};
use smithay::backend::renderer::gles::element::PixelShaderElement;
use smithay::backend::renderer::gles::{GlesError, GlesFrame, GlesRenderer, Uniform};
-use smithay::backend::renderer::utils::CommitCounter;
+use smithay::backend::renderer::utils::{CommitCounter, DamageSet};
use smithay::utils::{Buffer, Logical, Physical, Rectangle, Scale, Transform};
use super::primary_gpu_pixel_shader::PrimaryGpuPixelShaderRenderElement;
@@ -85,7 +85,7 @@ impl Element for GradientRenderElement {
&self,
scale: Scale<f64>,
commit: Option<CommitCounter>,
- ) -> Vec<Rectangle<i32, Physical>> {
+ ) -> DamageSet<i32, Physical> {
self.0.damage_since(scale, commit)
}
diff --git a/src/render_helpers/mod.rs b/src/render_helpers/mod.rs
index f0d61fbe..238ad8ec 100644
--- a/src/render_helpers/mod.rs
+++ b/src/render_helpers/mod.rs
@@ -64,8 +64,7 @@ pub fn render_and_download(
) -> anyhow::Result<GlesMapping> {
let _span = tracy_client::span!();
- let (_, sync_point) = render_to_texture(renderer, size, scale, transform, fourcc, elements)?;
- sync_point.wait();
+ let (_, _) = render_to_texture(renderer, size, scale, transform, fourcc, elements)?;
let buffer_size = size.to_logical(1).to_buffer(1, Transform::Normal);
let mapping = renderer
diff --git a/src/render_helpers/offscreen.rs b/src/render_helpers/offscreen.rs
index 72c2471b..60e495ca 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;
+use smithay::backend::renderer::utils::{CommitCounter, DamageSet};
use smithay::utils::{Buffer, Physical, Rectangle, Scale, Transform};
use super::primary_gpu_texture::PrimaryGpuTextureRenderElement;
@@ -130,7 +130,7 @@ impl Element for OffscreenRenderElement {
&self,
scale: Scale<f64>,
commit: Option<CommitCounter>,
- ) -> Vec<Rectangle<i32, Physical>> {
+ ) -> DamageSet<i32, Physical> {
if let Some(texture) = &self.texture {
texture.damage_since(scale, commit)
} else {
diff --git a/src/render_helpers/primary_gpu_pixel_shader.rs b/src/render_helpers/primary_gpu_pixel_shader.rs
index b3b75023..7564a50f 100644
--- a/src/render_helpers/primary_gpu_pixel_shader.rs
+++ b/src/render_helpers/primary_gpu_pixel_shader.rs
@@ -1,7 +1,7 @@
use smithay::backend::renderer::element::{Element, Id, Kind, RenderElement, UnderlyingStorage};
use smithay::backend::renderer::gles::element::PixelShaderElement;
use smithay::backend::renderer::gles::{GlesError, GlesFrame, GlesRenderer};
-use smithay::backend::renderer::utils::CommitCounter;
+use smithay::backend::renderer::utils::{CommitCounter, DamageSet};
use smithay::utils::{Buffer, Physical, Rectangle, Scale, Transform};
use super::renderer::AsGlesFrame;
@@ -36,7 +36,7 @@ impl Element for PrimaryGpuPixelShaderRenderElement {
&self,
scale: Scale<f64>,
commit: Option<CommitCounter>,
- ) -> Vec<Rectangle<i32, Physical>> {
+ ) -> DamageSet<i32, Physical> {
self.0.damage_since(scale, commit)
}
diff --git a/src/render_helpers/primary_gpu_texture.rs b/src/render_helpers/primary_gpu_texture.rs
index 5ec50a6e..571d3927 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;
+use smithay::backend::renderer::utils::{CommitCounter, DamageSet};
use smithay::utils::{Buffer, Physical, Rectangle, Scale, Transform};
use super::renderer::AsGlesFrame;
@@ -36,7 +36,7 @@ impl Element for PrimaryGpuTextureRenderElement {
&self,
scale: Scale<f64>,
commit: Option<CommitCounter>,
- ) -> Vec<Rectangle<i32, Physical>> {
+ ) -> DamageSet<i32, Physical> {
self.0.damage_since(scale, commit)
}
diff --git a/src/render_helpers/render_elements.rs b/src/render_helpers/render_elements.rs
index 84673131..b314d118 100644
--- a/src/render_helpers/render_elements.rs
+++ b/src/render_helpers/render_elements.rs
@@ -69,7 +69,7 @@ macro_rules! niri_render_elements {
&self,
scale: smithay::utils::Scale<f64>,
commit: Option<smithay::backend::renderer::utils::CommitCounter>,
- ) -> Vec<smithay::utils::Rectangle<i32, smithay::utils::Physical>> {
+ ) -> smithay::backend::renderer::utils::DamageSet<i32, smithay::utils::Physical> {
match self {
$($name::$variant(elem) => elem.damage_since(scale, commit)),+
}