aboutsummaryrefslogtreecommitdiff
path: root/src/winit.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2023-09-03 13:04:32 +0400
committerIvan Molodetskikh <yalterz@gmail.com>2023-09-03 13:04:32 +0400
commit5a707c879ba9b21665d2207020fe354040b807b2 (patch)
tree5bdc370a4b3068b0878d3d85acfbd25bf23a3952 /src/winit.rs
parent3bd5a012cbf15bd294e1a6290914a6e687cbcf2d (diff)
downloadniri-5a707c879ba9b21665d2207020fe354040b807b2.tar.gz
niri-5a707c879ba9b21665d2207020fe354040b807b2.tar.bz2
niri-5a707c879ba9b21665d2207020fe354040b807b2.zip
Replace Backend trait with enum
Diffstat (limited to 'src/winit.rs')
-rw-r--r--src/winit.rs81
1 files changed, 39 insertions, 42 deletions
diff --git a/src/winit.rs b/src/winit.rs
index d1253199..35bf3407 100644
--- a/src/winit.rs
+++ b/src/winit.rs
@@ -12,7 +12,6 @@ use smithay::reexports::winit::dpi::LogicalSize;
use smithay::reexports::winit::window::WindowBuilder;
use smithay::utils::Transform;
-use crate::backend::Backend;
use crate::input::{BackendAction, CompositorMod};
use crate::niri::OutputRenderElements;
use crate::utils::get_monotonic_time;
@@ -25,46 +24,6 @@ pub struct Winit {
damage_tracker: OutputDamageTracker,
}
-impl Backend for Winit {
- fn seat_name(&self) -> String {
- "winit".to_owned()
- }
-
- fn renderer(&mut self) -> &mut GlesRenderer {
- self.backend.renderer()
- }
-
- fn render(
- &mut self,
- niri: &mut Niri,
- output: &Output,
- elements: &[OutputRenderElements<GlesRenderer>],
- ) {
- let _span = tracy_client::span!("Winit::render");
-
- self.backend.bind().unwrap();
- let age = self.backend.buffer_age().unwrap();
- let res = self
- .damage_tracker
- .render_output(self.backend.renderer(), age, elements, [0.1, 0.1, 0.1, 1.0])
- .unwrap();
- if let Some(damage) = res.damage {
- self.backend.submit(Some(&damage)).unwrap();
-
- let mut presentation_feedbacks = niri.take_presentation_feedbacks(output, &res.states);
- let refresh = output.current_mode().unwrap().refresh as u32;
- presentation_feedbacks.presented::<_, smithay::utils::Monotonic>(
- get_monotonic_time(),
- refresh,
- 0,
- wp_presentation_feedback::Kind::empty(),
- );
-
- self.backend.window().request_redraw();
- }
- }
-}
-
impl Winit {
pub fn new(event_loop: LoopHandle<LoopData>) -> Self {
let builder = WindowBuilder::new()
@@ -100,7 +59,7 @@ impl Winit {
let timer = Timer::immediate();
event_loop
.insert_source(timer, move |_, _, data| {
- let winit = data.winit.as_mut().unwrap();
+ let winit = data.backend.winit().unwrap();
winit.dispatch(&mut data.niri);
TimeoutAction::ToDuration(Duration::from_micros(16667))
})
@@ -178,4 +137,42 @@ impl Winit {
Ok(()) => (),
}
}
+
+ pub fn seat_name(&self) -> String {
+ "winit".to_owned()
+ }
+
+ pub fn renderer(&mut self) -> &mut GlesRenderer {
+ self.backend.renderer()
+ }
+
+ pub fn render(
+ &mut self,
+ niri: &mut Niri,
+ output: &Output,
+ elements: &[OutputRenderElements<GlesRenderer>],
+ ) {
+ let _span = tracy_client::span!("Winit::render");
+
+ self.backend.bind().unwrap();
+ let age = self.backend.buffer_age().unwrap();
+ let res = self
+ .damage_tracker
+ .render_output(self.backend.renderer(), age, elements, [0.1, 0.1, 0.1, 1.0])
+ .unwrap();
+ if let Some(damage) = res.damage {
+ self.backend.submit(Some(&damage)).unwrap();
+
+ let mut presentation_feedbacks = niri.take_presentation_feedbacks(output, &res.states);
+ let refresh = output.current_mode().unwrap().refresh as u32;
+ presentation_feedbacks.presented::<_, smithay::utils::Monotonic>(
+ get_monotonic_time(),
+ refresh,
+ 0,
+ wp_presentation_feedback::Kind::empty(),
+ );
+
+ self.backend.window().request_redraw();
+ }
+ }
}