From 9290cffa70305e60960b85e8c49aa0dc1795f1e1 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sat, 15 Mar 2025 17:18:28 +0100 Subject: [PATCH] graphics/fbbootlogd: Extract handle_handoff method --- graphics/fbbootlogd/src/display.rs | 49 +++++++++++------------------- graphics/fbbootlogd/src/main.rs | 18 ++++++++++- 2 files changed, 34 insertions(+), 33 deletions(-) diff --git a/graphics/fbbootlogd/src/display.rs b/graphics/fbbootlogd/src/display.rs index 8ef8c1a558..4de0db6859 100644 --- a/graphics/fbbootlogd/src/display.rs +++ b/graphics/fbbootlogd/src/display.rs @@ -1,8 +1,7 @@ use std::io; use graphics_ipc::v1::{Damage, V1GraphicsHandle}; -use inputd::{ConsumerHandle, ConsumerHandleEvent}; -use orbclient::Event; +use inputd::ConsumerHandle; fn display_fd_map(display_handle: V1GraphicsHandle) -> io::Result { let display_map = display_handle.map_display()?; @@ -43,38 +42,24 @@ impl Display { Ok(Self { input_handle, map }) } - pub fn handle_input_events(&mut self) { - let mut events = [Event::new(); 16]; - loop { - match self - .input_handle - .read_events(&mut events) - .expect("fbbootlogd: error while reading events") - { - ConsumerHandleEvent::Events(&[]) => break, - ConsumerHandleEvent::Events(_) => {} - ConsumerHandleEvent::Handoff => { - eprintln!("fbbootlogd: handoff requested"); + pub fn handle_handoff(&mut self) { + eprintln!("fbbootlogd: handoff requested"); + let new_display_handle = match self.input_handle.open_display() { + Ok(display) => V1GraphicsHandle::from_file(display).unwrap(), + Err(err) => { + println!("fbbootlogd: No display present yet: {err}"); + return; + } + }; - let new_display_handle = match self.input_handle.open_display() { - Ok(display) => V1GraphicsHandle::from_file(display).unwrap(), - Err(err) => { - println!("fbbootlogd: No display present yet: {err}"); - continue; - } - }; + match display_fd_map(new_display_handle) { + Ok(ok) => { + self.map = Some(ok); - match display_fd_map(new_display_handle) { - Ok(ok) => { - self.map = Some(ok); - - eprintln!("fbbootlogd: handoff finished"); - } - Err(err) => { - eprintln!("fbbootlogd: failed to open display: {}", err); - } - } - } + eprintln!("fbbootlogd: handoff finished"); + } + Err(err) => { + eprintln!("fbbootlogd: failed to open display: {}", err); } } } diff --git a/graphics/fbbootlogd/src/main.rs b/graphics/fbbootlogd/src/main.rs index 6be03245cf..d06faf9170 100644 --- a/graphics/fbbootlogd/src/main.rs +++ b/graphics/fbbootlogd/src/main.rs @@ -10,7 +10,9 @@ use std::os::fd::AsRawFd; use event::EventQueue; +use inputd::ConsumerHandleEvent; use libredox::errno::EAGAIN; +use orbclient::Event; use redox_scheme::{RequestKind, SignalBehavior, Socket}; use crate::scheme::FbbootlogScheme; @@ -88,7 +90,21 @@ fn inner(daemon: redox_daemon::Daemon) -> ! { } } Source::Input => { - scheme.display.handle_input_events(); + let mut events = [Event::new(); 16]; + loop { + match scheme + .display + .input_handle + .read_events(&mut events) + .expect("fbbootlogd: error while reading events") + { + ConsumerHandleEvent::Events(&[]) => break, + ConsumerHandleEvent::Events(_) => {} + ConsumerHandleEvent::Handoff => { + scheme.display.handle_handoff(); + } + } + } } } }