From f8972400ee7c7a57400eb72e9250ab9d12bbca41 Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Sun, 2 Mar 2025 17:36:41 +0100 Subject: [PATCH] inputd: Move handoff logic to fn open --- inputd/src/main.rs | 56 ++++++++++++++++++++++++++-------------------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/inputd/src/main.rs b/inputd/src/main.rs index b642d5f8aa..44fb836074 100644 --- a/inputd/src/main.rs +++ b/inputd/src/main.rs @@ -58,7 +58,6 @@ struct InputScheme { active_vt: Option, has_new_events: bool, - maybe_perform_handoff_to: Option, } impl InputScheme { @@ -75,7 +74,6 @@ impl InputScheme { active_vt: None, has_new_events: false, - maybe_perform_handoff_to: None, } } @@ -151,7 +149,22 @@ impl Scheme for InputScheme { "handle_early" => { let display = path_parts.collect::>().join("."); if self.display.is_none() { - self.maybe_perform_handoff_to = Some(display.clone()); + self.has_new_events = true; + self.display = Some(display.clone()); + + for handle in self.handles.values_mut() { + match handle { + Handle::Consumer { + needs_handoff, + notified, + .. + } => { + *needs_handoff = true; + *notified = false; + } + _ => continue, + } + } } Handle::Display { events: EventFlags::empty(), @@ -173,7 +186,22 @@ impl Scheme for InputScheme { ) }); if needs_handoff { - self.maybe_perform_handoff_to = Some(display.clone()); + self.has_new_events = true; + self.display = Some(display.clone()); + + for handle in self.handles.values_mut() { + match handle { + Handle::Consumer { + needs_handoff, + notified, + .. + } => { + *needs_handoff = true; + *notified = false; + } + _ => continue, + } + } } Handle::Display { events: EventFlags::empty(), @@ -503,26 +531,6 @@ fn deamon(deamon: redox_daemon::Daemon) -> anyhow::Result<()> { RequestKind::MsyncMsg | RequestKind::MunmapMsg | RequestKind::MmapMsg => unreachable!(), } - if let Some(display) = scheme.maybe_perform_handoff_to.take() { - scheme.has_new_events = true; - - scheme.display = Some(display.clone()); - - for handle in scheme.handles.values_mut() { - match handle { - Handle::Consumer { - needs_handoff, - notified, - .. - } => { - *needs_handoff = true; - *notified = false; - } - _ => continue, - } - } - } - if !scheme.has_new_events { continue; }