aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2015-11-05 17:08:00 +1000
committerinmarket <andrewh@inmarket.com.au>2015-11-05 17:08:00 +1000
commit383be6964ecee62844e842c08e50464fd5b56d5e (patch)
tree6cd98dc64209c7d0d9bf72cca61a4693bcf8a8d8
parent32da19db12911d997cc04d35a1ba8b3b52deae01 (diff)
downloaduGFX-383be6964ecee62844e842c08e50464fd5b56d5e.tar.gz
uGFX-383be6964ecee62844e842c08e50464fd5b56d5e.tar.bz2
uGFX-383be6964ecee62844e842c08e50464fd5b56d5e.zip
GTimer fix for fast tick rate systems
-rw-r--r--docs/releases.txt2
-rw-r--r--src/gtimer/gtimer.c4
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)