Add cursor drawing with a colored rectangle

This commit is contained in:
Ivan Molodetskikh
2023-08-10 09:57:13 +04:00
parent 9a5f891002
commit 746840a119
4 changed files with 49 additions and 7 deletions
+34 -1
View File
@@ -2,7 +2,11 @@ use std::os::unix::io::AsRawFd;
use std::sync::Arc;
use std::time::Duration;
use smithay::desktop::space::space_render_elements;
use smithay::backend::renderer::element::render_elements;
use smithay::backend::renderer::element::solid::SolidColorRenderElement;
use smithay::backend::renderer::utils::CommitCounter;
use smithay::backend::renderer::ImportAll;
use smithay::desktop::space::{space_render_elements, SpaceRenderElements};
use smithay::desktop::{Space, Window, WindowSurfaceType};
use smithay::input::keyboard::XkbConfig;
use smithay::input::{Seat, SeatState};
@@ -139,6 +143,29 @@ impl Niri {
1.,
)
.unwrap();
let mut elements: Vec<_> = elements
.into_iter()
.map(OutputRenderElements::from)
.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.5, 0., 1.],
)),
);
backend.render(self, &elements);
let output = self.output.as_ref().unwrap();
@@ -155,6 +182,12 @@ impl Niri {
}
}
render_elements! {
pub OutputRenderElements<R, E> where R: ImportAll;
Space=SpaceRenderElements<R, E>,
Pointer = SolidColorRenderElement,
}
#[derive(Default)]
pub struct ClientState {
pub compositor_state: CompositorClientState,