diff options
author | inmarket <andrewh@inmarket.com.au> | 2015-11-05 17:08:00 +1000 |
---|---|---|
committer | inmarket <andrewh@inmarket.com.au> | 2015-11-05 17:08:00 +1000 |
commit | 383be6964ecee62844e842c08e50464fd5b56d5e (patch) | |
tree | 6cd98dc64209c7d0d9bf72cca61a4693bcf8a8d8 | |
parent | 32da19db12911d997cc04d35a1ba8b3b52deae01 (diff) | |
download | uGFX-383be6964ecee62844e842c08e50464fd5b56d5e.tar.gz uGFX-383be6964ecee62844e842c08e50464fd5b56d5e.tar.bz2 uGFX-383be6964ecee62844e842c08e50464fd5b56d5e.zip |
GTimer fix for fast tick rate systems
-rw-r--r-- | docs/releases.txt | 2 | ||||
-rw-r--r-- | src/gtimer/gtimer.c | 4 |
2 files changed, 4 insertions, 2 deletions
diff --git a/docs/releases.txt b/docs/releases.txt index 38ea8e28..98489d17 100644 --- a/docs/releases.txt +++ b/docs/releases.txt @@ -23,7 +23,7 @@ FEATURE: Replace all references to inline with a reference to GFXINLINE FEATURE: Added config option GFX_NO_INLINE to run off inlining of ugfx functions. FEATURE: Added word-wrapping support for gdispDrawStringBox() and gdispFillStringBox() FIX: Fixing issue in touchscreen calibration code - +FIX: Fix gtimer for high clock rate devices *** Release 2.3 *** FEATURE: Added more events to the slider widget diff --git a/src/gtimer/gtimer.c b/src/gtimer/gtimer.c index b666eec2..e3262ec1 100644 --- a/src/gtimer/gtimer.c +++ b/src/gtimer/gtimer.c @@ -22,6 +22,7 @@ static gfxMutex mutex; static gfxThreadHandle hThread = 0; static GTimer *pTimerHead = 0; static gfxSem waitsem; +static systemticks_t ticks2ms; static DECLARE_THREAD_STACK(waTimerThread, GTIMER_THREAD_WORKAREA_SIZE); /*===========================================================================*/ @@ -99,7 +100,7 @@ static DECLARE_THREAD_FUNCTION(GTimerThreadHandler, arg) { // Find when we next need to wake up if (!(pt->flags & GTIMER_FLG_INFINITE) && pt->when - tm < nxtTimeout) - nxtTimeout = pt->when - tm; + nxtTimeout = (pt->when - tm)/ticks2ms; pt = pt->next; } while(pt != pTimerHead); } @@ -115,6 +116,7 @@ void _gtimerInit(void) { gfxSemInit(&waitsem, 0, 1); gfxMutexInit(&mutex); + ticks2ms = gfxMillisecondsToTicks(1); } void _gtimerDeinit(void) |