implemented poor timing

This commit is contained in:
Lauchmelder 2022-04-16 14:00:43 +02:00
parent 5e7ab246fe
commit 6244999b08
2 changed files with 10 additions and 3 deletions

View file

@ -8,14 +8,14 @@ OBJS := $(patsubst src/%.c, out/%.o, $(SRCS))
ALL: $(TARGET)
$(TARGET): mkdir $(OBJS)
$(TARGET): mkdir $(OBJS)
$(CC) -o out/$@ $(filter-out $<, $^) $(LIBRARIES)
mkdir:
mkdir -p out
out/%.o: src/%.c
$(CC) $(CFLAGS) -c $< -o $@
$(CC) $(CFLAGS) -o $@ -c $<
clean:
rm -rf $(TARGET) out

View file

@ -69,11 +69,18 @@ int main(int argc, char** argv)
void* advance_counter(void* data)
{
uint16_t ticks_per_quarter = *((uint32_t*)data);
struct timespec begin, end;
while(!playing);
clock_gettime(CLOCK_REALTIME, &begin);
for(;;)
{
usleep((uint64_t)time_per_quarter / ticks_per_quarter);
clock_gettime(CLOCK_REALTIME, &end);
uint64_t diff = 1000000 * (end.tv_sec - begin.tv_sec) + (end.tv_nsec - begin.tv_nsec) / 1000;
diff -= (uint64_t)time_per_quarter / ticks_per_quarter;
diff *= (diff < (uint64_t)time_per_quarter / ticks_per_quarter);
clock_gettime(CLOCK_REALTIME, &begin);
usleep((uint64_t)time_per_quarter / ticks_per_quarter - diff);
current_tick++;
}
}