change time_monotonic_ms() from time_t to int64_t

time_monotonic_ms values did wrap every ~24 days, leading to problems
in code that did not cope with that. Instead of fixing all places where
relative comparisons with time_monotonic_ms() are made, just use a
bigger datatype. Convert all users to the new type.
This commit is contained in:
Stefan Seyfried
2017-09-23 21:35:01 +02:00
committed by Jacek Jendrzej
parent ea30b22119
commit 99c8168d2c
8 changed files with 28 additions and 24 deletions

View File

@@ -31,6 +31,7 @@
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <inttypes.h>
#include <glfb.h>
extern GLFramebuffer *glfb;
@@ -115,18 +116,18 @@ void CFbAccelGLFB::blit2FB(void *fbbuff, uint32_t width, uint32_t height, uint32
void CFbAccelGLFB::run()
{
printf(LOGTAG "run start\n");
time_t last_blit = 0;
int64_t last_blit = INT64_MAX;
blit_pending = false;
blit_thread = true;
blit_mutex.lock();
set_threadname("glfb::autoblit");
while (blit_thread) {
blit_cond.wait(&blit_mutex, blit_pending ? BLIT_INTERVAL_MIN : BLIT_INTERVAL_MAX);
time_t now = time_monotonic_ms();
int64_t now = time_monotonic_ms();
if (now - last_blit < BLIT_INTERVAL_MIN)
{
blit_pending = true;
//printf(LOGTAG "run: skipped, time %ld\n", now - last_blit);
//printf(LOGTAG "run: skipped, time %" PRId64 "\n", now - last_blit);
}
else
{