diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2023-08-10 14:27:09 +0400 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2023-08-10 14:50:51 +0400 |
| commit | 100d7d4b471a8dbe9f28d4862d755f96c412e9ef (patch) | |
| tree | feb6908547f618b05b7e0e92710aee0bb6024f6b /src | |
| parent | 0ed5bad452113eaa55b88c8fc46d36badea43286 (diff) | |
| download | niri-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.rs | 30 |
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., )), ); |
