From 4898261594af3bde107ed1619b096d84628cac15 Mon Sep 17 00:00:00 2001 From: toadster172 Date: Mon, 17 Feb 2025 17:42:51 -0600 Subject: [PATCH] ps2: Use sleep functions for read and write waits --- input/ps2d/src/controller.rs | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/input/ps2d/src/controller.rs b/input/ps2d/src/controller.rs index 9172fa5ee3..f1560faaef 100644 --- a/input/ps2d/src/controller.rs +++ b/input/ps2d/src/controller.rs @@ -1,7 +1,7 @@ use common::io::{Io, Pio, ReadOnly, WriteOnly}; use log::{debug, error, info, trace}; -use std::fmt; +use std::{fmt, thread, time::Duration}; #[cfg(target_arch = "aarch64")] #[inline(always)] @@ -133,29 +133,25 @@ impl Ps2 { } fn wait_read(&mut self) -> Result<(), Error> { - let mut timeout = 100_000; + let mut timeout = 500; while timeout > 0 { if self.status().contains(StatusFlags::OUTPUT_FULL) { return Ok(()); } - unsafe { - pause(); - } timeout -= 1; + thread::sleep(Duration::from_millis(1)); } Err(Error::ReadTimeout) } fn wait_write(&mut self) -> Result<(), Error> { - let mut timeout = 100_000; + let mut timeout = 500; while timeout > 0 { if !self.status().contains(StatusFlags::INPUT_FULL) { return Ok(()); } - unsafe { - pause(); - } timeout -= 1; + thread::sleep(Duration::from_millis(1)); } Err(Error::WriteTimeout) }