From c7c2a10f5953d5b52db16bb568de0b624c159402 Mon Sep 17 00:00:00 2001 From: trafficlunar Date: Sat, 22 Mar 2025 13:50:37 +0000 Subject: [PATCH] fix: keys and clicks not counting correctly --- src/computer.rs | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/computer.rs b/src/computer.rs index aa2b640..b52ea4a 100644 --- a/src/computer.rs +++ b/src/computer.rs @@ -1,6 +1,9 @@ use std::{ net::TcpStream, - sync::{Arc, Mutex}, + sync::{ + atomic::{AtomicU16, Ordering}, + Arc, + }, thread, time::Duration, }; @@ -14,22 +17,20 @@ use crate::websocket; pub fn start_sending(socket: &mut WebSocket>) { let mut sys = System::new(); - let key_counter = Arc::new(Mutex::new(0_u16)); - let click_counter = Arc::new(Mutex::new(0_u16)); + let key_counter = Arc::new(AtomicU16::new(0)); + let click_counter = Arc::new(AtomicU16::new(0)); let key_counter_clone = Arc::clone(&key_counter); let click_counter_clone = Arc::clone(&click_counter); thread::spawn(move || { KeybdKey::bind_all(move |_| { - let mut count = key_counter_clone.lock().unwrap(); - *count += 1; + key_counter_clone.fetch_add(1, Ordering::SeqCst); }); MouseButton::bind_all(move |event| match event { MouseButton::LeftButton | MouseButton::RightButton => { - let mut count = click_counter_clone.lock().unwrap(); - *count += 1; + click_counter_clone.fetch_add(1, Ordering::SeqCst); } _ => {} }); @@ -47,17 +48,14 @@ pub fn start_sending(socket: &mut WebSocket>) { let used_memory = sys.used_memory(); let memory_usage = ((used_memory as f64) / (total_memory as f64) * 100.0).floor() as u8; - let mut key_guard = key_counter.lock().unwrap(); - let key_presses = *key_guard; - - let mut click_guard = click_counter.lock().unwrap(); - let clicks = *click_guard; + let key_presses = key_counter.load(Ordering::SeqCst); + let clicks = click_counter.load(Ordering::SeqCst); websocket::send(socket, cpu_usage, memory_usage, key_presses, clicks); // Reset counters after sending - *key_guard = 0; - *click_guard = 0; + key_counter.store(0, Ordering::SeqCst); + click_counter.store(0, Ordering::SeqCst); thread::sleep(Duration::from_secs(60)); }