From 8f97fd64ee588674ad29a6e767e897ced1fe440a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Thu, 22 Jan 2026 19:21:13 -0700 Subject: [PATCH] usbhidd: spin instead of sleep for better throughput --- drivers/input/usbhidd/src/main.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/input/usbhidd/src/main.rs b/drivers/input/usbhidd/src/main.rs index 92456ef36d..df3d56be37 100644 --- a/drivers/input/usbhidd/src/main.rs +++ b/drivers/input/usbhidd/src/main.rs @@ -1,4 +1,4 @@ -use std::env; +use std::{env, time, thread}; use inputd::ProducerHandle; use orbclient::KeyEvent as OrbKeyEvent; @@ -281,7 +281,11 @@ fn main() { let mut last_buttons = [false, false, false]; loop { //TODO: get frequency from device - std::thread::sleep(std::time::Duration::from_millis(10)); + //TODO: use sleeps when accuracy is better: thread::sleep(time::Duration::from_millis(10)); + let mut timer = time::Instant::now(); + while timer.elapsed() < time::Duration::from_millis(1) { + thread::yield_now(); + } if let Some(endpoint) = &mut endpoint_opt { // interrupt transfer