diff options
Diffstat (limited to 'src/buffer/clock.h')
| -rw-r--r-- | src/buffer/clock.h | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/src/buffer/clock.h b/src/buffer/clock.h index e1a2d9e..3169c61 100644 --- a/src/buffer/clock.h +++ b/src/buffer/clock.h @@ -23,21 +23,30 @@ // Next/Prev: // - User input -> swap -#define CAMU_PTS_PAUSED ((f64)0xffffffffffffffff) -#define CAMU_PTS_SIGNAL_PAUSE ((f64)0x7fffffffffffffff) -#define CAMU_PTS_CONSIDER_PAUSED(pts) (pts == CAMU_PTS_PAUSED || pts == CAMU_PTS_SIGNAL_PAUSE) +// Values that PTS can never normally be. +#define CAMU_PTS_PAUSED 0x1.fffffffffffffp+1023 +#define CAMU_PTS_SIGNAL_PAUSE 0x1.fffffffffffffp+1022 +#define CAMU_PTS_UNSET 0x1.fffffffffffffp+1021 +#define CAMU_PTS_CONSIDER_PAUSED(pts) (pts == CAMU_PTS_PAUSED || pts == CAMU_PTS_SIGNAL_PAUSE || pts == CAMU_PTS_UNSET) enum { CAMU_CLOCK_PAUSED = 0 }; +enum { + CAMU_CLOCK_PAUSE_FOR_SWAP = 1, + CAMU_CLOCK_EXTERNAL_PAUSE = 1 << 1, + CAMU_CLOCK_NO_SIGNAL_PAUSE = 1 << 7 +}; + struct camu_clock { f64 base; f64 offset; atomic(f64) tick; atomic(f64) pause; - atomic(bool) external_pause; f64 paused_at; + atomic(bool) pause_for_swap; + atomic(bool) external_pause; atomic(f64) last_pts; void (*callback)(void *, u8); void *userdata; @@ -50,10 +59,10 @@ void camu_clock_offset(struct camu_clock *clock, f64 offset); void camu_clock_seek(struct camu_clock *clock, f64 base, u64 target); bool camu_clock_pause(struct camu_clock *clock, u64 target); -void camu_clock_external_pause(struct camu_clock *clock); +void camu_clock_set_pause_for_swap(struct camu_clock *clock); +void camu_clock_set_external_pause(struct camu_clock *clock); void camu_clock_resume(struct camu_clock *clock, u64 target); -bool camu_clock_is_user_paused(struct camu_clock *clock); f64 camu_clock_get_base_pts(struct camu_clock *clock); -f64 camu_clock_get_pts(struct camu_clock *clock, f64 latency, bool allow_set, bool *armed_for_pause); +f64 camu_clock_get_pts(struct camu_clock *clock, f64 latency, bool allow_set, u8 *status); f64 camu_clock_get_last_pts(struct camu_clock *clock); |