mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-22 02:01:55 +07:00
Keep around the pointer color buffer
Fixes pointer drawing preventing idle.
This commit is contained in:
+15
-15
@@ -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.,
|
||||
)),
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user