From 77aa96e09ac853d7e4d1d85ed319837edb331670 Mon Sep 17 00:00:00 2001 From: Ferdinand Schober Date: Fri, 26 Apr 2024 23:59:00 +0200 Subject: [PATCH] defer creation of input capture / emulation (#117) --- src/server.rs | 4 ---- src/server/capture_task.rs | 4 ++-- src/server/emulation_task.rs | 4 ++-- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/server.rs b/src/server.rs index bf926f5..18bc163 100644 --- a/src/server.rs +++ b/src/server.rs @@ -5,7 +5,6 @@ use std::{ }; use tokio::signal; -use crate::{capture, emulate}; use crate::{ client::{ClientHandle, ClientManager}, config::Config, @@ -78,7 +77,6 @@ impl Server { return anyhow::Ok(()); } }; - let (emulate, capture) = tokio::join!(emulate::create(), capture::create()); let (timer_tx, timer_rx) = tokio::sync::mpsc::channel(1); let (frontend_notify_tx, frontend_notify_rx) = tokio::sync::mpsc::channel(1); @@ -89,7 +87,6 @@ impl Server { // input capture let (mut capture_task, capture_channel) = capture_task::new( - capture, self.clone(), sender_tx.clone(), timer_tx.clone(), @@ -98,7 +95,6 @@ impl Server { // input emulation let (mut emulation_task, emulate_channel) = emulation_task::new( - emulate, self.clone(), receiver_rx, sender_tx.clone(), diff --git a/src/server/capture_task.rs b/src/server/capture_task.rs index ab32fc5..d68dd1a 100644 --- a/src/server/capture_task.rs +++ b/src/server/capture_task.rs @@ -5,7 +5,7 @@ use std::{collections::HashSet, net::SocketAddr}; use tokio::{sync::mpsc::Sender, task::JoinHandle}; use crate::{ - capture::InputCapture, + capture::{self, InputCapture}, client::{ClientEvent, ClientHandle}, event::{Event, KeyboardEvent}, scancode, @@ -25,7 +25,6 @@ pub enum CaptureEvent { } pub fn new( - mut capture: Box, server: Server, sender_tx: Sender<(Event, SocketAddr)>, timer_tx: Sender<()>, @@ -33,6 +32,7 @@ pub fn new( ) -> (JoinHandle>, Sender) { let (tx, mut rx) = tokio::sync::mpsc::channel(32); let task = tokio::task::spawn_local(async move { + let mut capture = capture::create().await; let mut pressed_keys = HashSet::new(); loop { tokio::select! { diff --git a/src/server/emulation_task.rs b/src/server/emulation_task.rs index fbf1b81..af69bf8 100644 --- a/src/server/emulation_task.rs +++ b/src/server/emulation_task.rs @@ -8,7 +8,7 @@ use tokio::{ use crate::{ client::{ClientEvent, ClientHandle}, - emulate::InputEmulation, + emulate::{self, InputEmulation}, event::{Event, KeyboardEvent}, scancode, server::State, @@ -27,7 +27,6 @@ pub enum EmulationEvent { } pub fn new( - mut emulate: Box, server: Server, mut udp_rx: Receiver>, sender_tx: Sender<(Event, SocketAddr)>, @@ -36,6 +35,7 @@ pub fn new( ) -> (JoinHandle>, Sender) { let (tx, mut rx) = tokio::sync::mpsc::channel(32); let emulate_task = tokio::task::spawn_local(async move { + let mut emulate = emulate::create().await; let mut last_ignored = None; loop {