From 3d0903af411243033f54f9932c81c6301a8cdaf9 Mon Sep 17 00:00:00 2001 From: Gergely Nagy Date: Tue, 21 Feb 2017 12:58:57 +0100 Subject: [PATCH] Improved timer handling Instead of calculating time deltas every time we want to check a timeout, calculate the projected end ahead of time. Signed-off-by: Gergely Nagy --- src/Kaleidoscope-MouseKeys.cpp | 22 ++++++++++------------ src/Kaleidoscope-MouseKeys.h | 4 ++-- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/Kaleidoscope-MouseKeys.cpp b/src/Kaleidoscope-MouseKeys.cpp index 17d80f02..9538e299 100644 --- a/src/Kaleidoscope-MouseKeys.cpp +++ b/src/Kaleidoscope-MouseKeys.cpp @@ -12,8 +12,8 @@ uint16_t MouseKeys_::speedDelay = 0; uint8_t MouseKeys_::accelSpeed = 1; uint16_t MouseKeys_::accelDelay = 50; -uint32_t MouseKeys_::accelStartTime; -uint32_t MouseKeys_::startTime; +uint32_t MouseKeys_::accelEndTime; +uint32_t MouseKeys_::endTime; void MouseKeys_::loopHook(bool postClear) { if (postClear) { @@ -23,19 +23,19 @@ void MouseKeys_::loopHook(bool postClear) { if (mouseMoveIntent == 0) { MouseWrapper.accelStep = 0; - startTime = 0; - accelStartTime = 0; + endTime = 0; + accelEndTime = 0; return; } - if ((millis() - startTime) < speedDelay) - return; + if (millis() < endTime) + return; - startTime = millis(); + endTime = millis() + speedDelay; int8_t moveX = 0, moveY = 0; - if ((millis() - accelStartTime) >= (accelDelay * MouseWrapper.accelStep)) { + if (millis() >= accelEndTime) { if (MouseWrapper.accelStep < 255 - accelSpeed) MouseWrapper.accelStep += accelSpeed; } @@ -67,10 +67,8 @@ Key MouseKeys_::eventHandlerHook(Key mappedKey, byte row, byte col, uint8_t keyS } } else if (!(mappedKey.keyCode & KEY_MOUSE_WARP)) { if (key_toggled_on(keyState)) { - if (!startTime) - startTime = millis(); - if (!accelStartTime) - accelStartTime = millis(); + endTime = millis() + speedDelay; + accelEndTime = millis() + accelDelay; } if (key_is_pressed(keyState)) mouseMoveIntent |= mappedKey.keyCode; diff --git a/src/Kaleidoscope-MouseKeys.h b/src/Kaleidoscope-MouseKeys.h index f303d077..e94d5ea9 100644 --- a/src/Kaleidoscope-MouseKeys.h +++ b/src/Kaleidoscope-MouseKeys.h @@ -16,8 +16,8 @@ class MouseKeys_ : public KaleidoscopePlugin { private: static uint8_t mouseMoveIntent; - static uint32_t startTime; - static uint32_t accelStartTime; + static uint32_t endTime; + static uint32_t accelEndTime; static void loopHook(bool postClear); static Key eventHandlerHook(Key mappedKey, byte row, byte col, uint8_t keyState);