From 011ab8bcf1418c288670cf56f3a9963846cc0d42 Mon Sep 17 00:00:00 2001 From: Maschell Date: Thu, 20 Jul 2023 11:33:20 +0200 Subject: [PATCH] Make input reading more reliable --- source/InputUtils.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/source/InputUtils.cpp b/source/InputUtils.cpp index d910ba1..6eb73fb 100644 --- a/source/InputUtils.cpp +++ b/source/InputUtils.cpp @@ -1,4 +1,5 @@ #include "InputUtils.h" +#include #include #include #include @@ -97,11 +98,15 @@ InputUtils::InputData InputUtils::getControllerInput() { InputData inputData{}; VPADStatus vpadStatus{}; VPADReadError vpadError = VPAD_READ_UNINITIALIZED; - if (VPADRead(VPAD_CHAN_0, &vpadStatus, 1, &vpadError) > 0 && vpadError == VPAD_READ_SUCCESS) { - inputData.trigger = vpadStatus.trigger; - inputData.hold = vpadStatus.hold; - inputData.release = vpadStatus.release; - } + do { + if (VPADRead(VPAD_CHAN_0, &vpadStatus, 1, &vpadError) > 0 && vpadError == VPAD_READ_SUCCESS) { + inputData.trigger = vpadStatus.trigger; + inputData.hold = vpadStatus.hold; + inputData.release = vpadStatus.release; + } else { + OSSleepTicks(OSMillisecondsToTicks(1)); + } + } while (vpadError == VPAD_READ_NO_SAMPLES); KPADStatus kpadStatus{}; KPADError kpadError = KPAD_ERROR_UNINITIALIZED;