aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/recorder/recording_clock.h
blob: 4e302b6d5fd7e591a4b18cd91c718fd054c0a5cb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#ifndef GSR_RECORDER_RECORDING_CLOCK_H
#define GSR_RECORDER_RECORDING_CLOCK_H

#include <stdbool.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Monotonic clock that excludes the time the recording has been paused. Safe to use from multiple threads */
typedef struct gsr_recording_clock gsr_recording_clock;

gsr_recording_clock* gsr_recording_clock_create(void);
void gsr_recording_clock_destroy(gsr_recording_clock *self);

/* Sets the time the recording started to now */
void gsr_recording_clock_start(gsr_recording_clock *self);
double gsr_recording_clock_get_start_time(const gsr_recording_clock *self);
/* Returns the current time, excluding the time the recording has been paused */
double gsr_recording_clock_get_time(const gsr_recording_clock *self);

void gsr_recording_clock_set_paused(gsr_recording_clock *self, bool paused);
bool gsr_recording_clock_is_paused(const gsr_recording_clock *self);

#ifdef __cplusplus
}
#endif

#endif /* GSR_RECORDER_RECORDING_CLOCK_H */