From 76770b9c413a03fa43e3f3acec8b4ff331a8d374 Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Mon, 1 Dec 2025 01:13:34 -0300 Subject: [PATCH] client: moved handshake earlier to avoid input traps --- client/src/app.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/app.rs b/client/src/app.rs index 39cfca3..36c3045 100644 --- a/client/src/app.rs +++ b/client/src/app.rs @@ -45,8 +45,7 @@ impl LesavkaClientApp { let (kbd_tx, _) = broadcast::channel(1024); let (mou_tx, _) = broadcast::channel(4096); - let mut agg = InputAggregator::new(dev_mode, kbd_tx.clone(), mou_tx.clone()); - agg.init()?; // grab devices immediately + let agg = InputAggregator::new(dev_mode, kbd_tx.clone(), mou_tx.clone()); Ok(Self { aggregator: Some(agg), server_addr, dev_mode, kbd_tx, mou_tx }) } @@ -69,8 +68,9 @@ impl LesavkaClientApp { .tcp_nodelay(true) .connect_lazy(); - /*────────── input aggregator task ─────────────*/ - let aggregator = self.aggregator.take().expect("InputAggregator present"); + /*────────── input aggregator task (grab after handshake) ─────────────*/ + let mut aggregator = self.aggregator.take().expect("InputAggregator present"); + aggregator.init()?; // grab devices now that handshake succeeded let agg_task = tokio::spawn(async move { let mut a = aggregator; a.run().await