mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-23 02:05:33 +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 std::time::Duration;
|
||||||
|
|
||||||
use smithay::backend::renderer::element::render_elements;
|
use smithay::backend::renderer::element::render_elements;
|
||||||
use smithay::backend::renderer::element::solid::SolidColorRenderElement;
|
use smithay::backend::renderer::element::solid::{SolidColorBuffer, SolidColorRenderElement};
|
||||||
use smithay::backend::renderer::utils::CommitCounter;
|
|
||||||
use smithay::backend::renderer::ImportAll;
|
use smithay::backend::renderer::ImportAll;
|
||||||
use smithay::desktop::space::{space_render_elements, SpaceRenderElements};
|
use smithay::desktop::space::{space_render_elements, SpaceRenderElements};
|
||||||
use smithay::desktop::{Space, Window, WindowSurfaceType};
|
use smithay::desktop::{Space, Window, WindowSurfaceType};
|
||||||
@@ -46,6 +45,8 @@ pub struct Niri {
|
|||||||
pub seat: Seat<Self>,
|
pub seat: Seat<Self>,
|
||||||
pub output: Option<Output>,
|
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()
|
// 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.
|
// which means that you cannot queue more than one redraw at once.
|
||||||
pub redraw_queued: bool,
|
pub redraw_queued: bool,
|
||||||
@@ -107,6 +108,8 @@ impl Niri {
|
|||||||
})
|
})
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
|
let pointer_buffer = SolidColorBuffer::new((16, 16), [1., 0.8, 0., 1.]);
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
start_time,
|
start_time,
|
||||||
event_loop,
|
event_loop,
|
||||||
@@ -124,6 +127,7 @@ impl Niri {
|
|||||||
|
|
||||||
seat,
|
seat,
|
||||||
output: None,
|
output: None,
|
||||||
|
pointer_buffer,
|
||||||
redraw_queued: false,
|
redraw_queued: false,
|
||||||
waiting_for_vblank: false,
|
waiting_for_vblank: false,
|
||||||
}
|
}
|
||||||
@@ -183,19 +187,15 @@ impl Niri {
|
|||||||
.collect();
|
.collect();
|
||||||
elements.insert(
|
elements.insert(
|
||||||
0,
|
0,
|
||||||
OutputRenderElements::Pointer(SolidColorRenderElement::new(
|
OutputRenderElements::Pointer(SolidColorRenderElement::from_buffer(
|
||||||
smithay::backend::renderer::element::Id::new(),
|
&self.pointer_buffer,
|
||||||
smithay::utils::Rectangle {
|
self.seat
|
||||||
loc: self
|
.get_pointer()
|
||||||
.seat
|
.unwrap()
|
||||||
.get_pointer()
|
.current_location()
|
||||||
.unwrap()
|
.to_physical_precise_round(1.),
|
||||||
.current_location()
|
1.,
|
||||||
.to_physical_precise_round(1.),
|
1.,
|
||||||
size: (16, 16).into(),
|
|
||||||
},
|
|
||||||
CommitCounter::default(),
|
|
||||||
[1., 0.8, 0., 1.],
|
|
||||||
)),
|
)),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user