client: moved handshake earlier to avoid input traps

This commit is contained in:
Brad Stein 2025-12-01 01:13:34 -03:00
parent 35196ee8f3
commit 76770b9c41

View File

@ -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