
TRIPandbaiqing
f30a787227
fix(windows): hotkey toggle 二次按键失效 - 串行化 Pressed/Released edge (#489)
根因: hotkey_bridge_loop 和 combo_hotkey_bridge_loop 把每条 Pressed/Released
边沿独立 async_runtime::spawn 成两个 task,被 tokio work-stealing 调度器
并行执行。Windows WH_KEYBOARD_LL 边沿间隔微秒级,Released task 经常先
swap(true→false),导致下一次 Pressed 看到 was_held=true → toggle 被静默吞掉。
macOS 上 CGEventTap 边沿间隔几十毫秒,race window 极窄,肉眼不可见,
所以仅 Windows 必现。ESC 走 HotkeyEvent::Cancelled 不经过 latch,
是用户唯一能逃出 stuck-latch 的路径。
修复: 用 tauri::async_runtime::block_on 顺序 await 两个 handler,
bridge 线程的 mpsc::Receiver::recv() FIFO 保证 swap 顺序正确。
bridge 在独立 OS 线程而非 tokio worker,block_on 安全。
代价: Hold 模式短按 stop 多 ≤500ms 延迟,被 request_stop_during_starting
覆盖,可接受。qa / translation bridge 不走 handle_*_edge 不受影响。
附带清理 coordinator.rs unreachable_code warning。
Refs #468
Co-authored-by: baiqing <lbx12309@icloud.com>
2026-05-18 18:54:53 +08:00
..
2026-04-30 10:44:31 +08:00
2026-05-11 16:50:20 +08:00
2026-05-18 15:29:33 +08:00
2026-05-18 18:54:53 +08:00
2026-05-06 19:07:54 +08:00
2026-04-30 14:21:35 +08:00
2026-04-30 10:44:31 +08:00
2026-05-18 15:37:24 +08:00
2026-05-18 15:37:24 +08:00
2026-04-30 10:44:31 +08:00
2026-04-30 10:44:31 +08:00
2026-04-30 10:44:31 +08:00