From fd1d4b07fd46e298131d9030ea49dc3453e5e478 Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Wed, 3 Jan 2024 11:33:24 +0400 Subject: Replace renderer() with with_primary_renderer() --- src/backend/mod.rs | 9 ++++++--- src/backend/tty.rs | 7 +++++-- src/backend/winit.rs | 7 +++++-- 3 files changed, 16 insertions(+), 7 deletions(-) (limited to 'src/backend') diff --git a/src/backend/mod.rs b/src/backend/mod.rs index a23cc36a..54b504ca 100644 --- a/src/backend/mod.rs +++ b/src/backend/mod.rs @@ -45,10 +45,13 @@ impl Backend { } } - pub fn renderer(&mut self) -> Option<&mut GlesRenderer> { + pub fn with_primary_renderer( + &mut self, + f: impl FnOnce(&mut GlesRenderer) -> T, + ) -> Option { match self { - Backend::Tty(tty) => tty.renderer(), - Backend::Winit(winit) => Some(winit.renderer()), + Backend::Tty(tty) => tty.with_primary_renderer(f), + Backend::Winit(winit) => winit.with_primary_renderer(f), } } diff --git a/src/backend/tty.rs b/src/backend/tty.rs index 7c2a35b0..67aa6af0 100644 --- a/src/backend/tty.rs +++ b/src/backend/tty.rs @@ -860,8 +860,11 @@ impl Tty { self.session.seat() } - pub fn renderer(&mut self) -> Option<&mut GlesRenderer> { - self.output_device.as_mut().map(|d| &mut d.gles) + pub fn with_primary_renderer( + &mut self, + f: impl FnOnce(&mut GlesRenderer) -> T, + ) -> Option { + self.output_device.as_mut().map(|d| f(&mut d.gles)) } pub fn render( diff --git a/src/backend/winit.rs b/src/backend/winit.rs index 0bda3984..b3c89e17 100644 --- a/src/backend/winit.rs +++ b/src/backend/winit.rs @@ -129,8 +129,11 @@ impl Winit { "winit".to_owned() } - pub fn renderer(&mut self) -> &mut GlesRenderer { - self.backend.renderer() + pub fn with_primary_renderer( + &mut self, + f: impl FnOnce(&mut GlesRenderer) -> T, + ) -> Option { + Some(f(self.backend.renderer())) } pub fn render(&mut self, niri: &mut Niri, output: &Output) -> RenderResult { -- cgit