add timer pause and resume functionality
This commit is contained in:
45
LLog.c
45
LLog.c
@@ -57,12 +57,53 @@ int create_timer(Logger* logger) {
|
||||
|
||||
void start_timer(Logger* logger, int timer_id) {
|
||||
if (logger->timers.count < (timer_id + 1)) return;
|
||||
logger->timers.items[timer_id].time.start = time(NULL);
|
||||
lTimer* timer = &logger->timers.items[timer_id];
|
||||
|
||||
timer->time.start = time(NULL);
|
||||
}
|
||||
|
||||
void stop_timer(Logger* logger, int timer_id) {
|
||||
if (logger->timers.count < (timer_id + 1)) return;
|
||||
logger->timers.items[timer_id].time.end = time(NULL);
|
||||
lTimer* timer = &logger->timers.items[timer_id];
|
||||
|
||||
// next property will never be set to 0 unless it is uninitialized
|
||||
if (timer->next != 0) {
|
||||
stop_timer(logger, timer->next);
|
||||
} else {
|
||||
timer->time.end = time(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void pause_timer(Logger* logger, int timer_id) {
|
||||
if (logger->timers.count < (timer_id + 1)) return;
|
||||
lTimer* timer = &logger->timers.items[timer_id];
|
||||
|
||||
stop_timer(logger, timer_id);
|
||||
timer->next = create_timer(logger);
|
||||
}
|
||||
|
||||
void resume_timer(Logger* logger, int timer_id) {
|
||||
if (logger->timers.count < (timer_id + 1)) return;
|
||||
lTimer* timer = &logger->timers.items[timer_id];
|
||||
|
||||
if (timer->next != 0) {
|
||||
resume_timer(logger, logger->timers.items[timer_id].next);
|
||||
} else {
|
||||
start_timer(logger, timer_id);
|
||||
}
|
||||
}
|
||||
|
||||
double get_elapsed_time(Logger* logger, int timer_id) {
|
||||
if (timer_id != 0) if (0) {}
|
||||
if (logger->timers.count < (timer_id + 1)) return 0.0f;
|
||||
lTimer* timer = &logger->timers.items[timer_id];
|
||||
double current_elapsed = difftime(timer->time.end, timer->time.start);
|
||||
|
||||
if (timer->next != 0) {
|
||||
return get_elapsed_time(logger, timer->next) + current_elapsed;
|
||||
}
|
||||
|
||||
return current_elapsed;
|
||||
}
|
||||
|
||||
lLogString* lLogString_new(const char* fmt, ...) {
|
||||
|
||||
Reference in New Issue
Block a user