aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2023-08-10 14:27:09 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2023-08-10 14:50:51 +0400
commit100d7d4b471a8dbe9f28d4862d755f96c412e9ef (patch)
treefeb6908547f618b05b7e0e92710aee0bb6024f6b /src
parent0ed5bad452113eaa55b88c8fc46d36badea43286 (diff)
downloadniri-100d7d4b471a8dbe9f28d4862d755f96c412e9ef.tar.gz
niri-100d7d4b471a8dbe9f28d4862d755f96c412e9ef.tar.bz2
niri-100d7d4b471a8dbe9f28d4862d755f96c412e9ef.zip
Keep around the pointer color buffer
Fixes pointer drawing preventing idle.
Diffstat (limited to 'src')
-rw-r--r--src/niri.rs30
1 files changed, 15 insertions, 15 deletions
diff --git a/src/niri.rs b/src/niri.rs
index 28bc2dfd..66ecbae3 100644
--- a/src/niri.rs
+++ b/src/niri.rs
@@ -3,8 +3,7 @@ use std::sync::Arc;
use std::time::Duration;
use smithay::backend::renderer::element::render_elements;
-use smithay::backend::renderer::element::solid::SolidColorRenderElement;
-use smithay::backend::renderer::utils::CommitCounter;
+use smithay::backend::renderer::element::solid::{SolidColorBuffer, SolidColorRenderElement};
use smithay::backend::renderer::ImportAll;
use smithay::desktop::space::{space_render_elements, SpaceRenderElements};
use smithay::desktop::{Space, Window, WindowSurfaceType};
@@ -46,6 +45,8 @@ pub struct Niri {
pub seat: Seat<Self>,
pub output: Option<Output>,
+ pub pointer_buffer: SolidColorBuffer,
+
// Set to `true` if there's a redraw queued on the event loop. Reset to `false` in redraw()
// which means that you cannot queue more than one redraw at once.
pub redraw_queued: bool,
@@ -107,6 +108,8 @@ impl Niri {
})
.unwrap();
+ let pointer_buffer = SolidColorBuffer::new((16, 16), [1., 0.8, 0., 1.]);
+
Self {
start_time,
event_loop,
@@ -124,6 +127,7 @@ impl Niri {
seat,
output: None,
+ pointer_buffer,
redraw_queued: false,
waiting_for_vblank: false,
}
@@ -183,19 +187,15 @@ impl Niri {
.collect();
elements.insert(
0,
- OutputRenderElements::Pointer(SolidColorRenderElement::new(
- smithay::backend::renderer::element::Id::new(),
- smithay::utils::Rectangle {
- loc: self
- .seat
- .get_pointer()
- .unwrap()
- .current_location()
- .to_physical_precise_round(1.),
- size: (16, 16).into(),
- },
- CommitCounter::default(),
- [1., 0.8, 0., 1.],
+ OutputRenderElements::Pointer(SolidColorRenderElement::from_buffer(
+ &self.pointer_buffer,
+ self.seat
+ .get_pointer()
+ .unwrap()
+ .current_location()
+ .to_physical_precise_round(1.),
+ 1.,
+ 1.,
)),
);