diff options
Diffstat (limited to 'src/buffer')
| -rw-r--r-- | src/buffer/clock.c | 11 | ||||
| -rw-r--r-- | src/buffer/clock.h | 1 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/buffer/clock.c b/src/buffer/clock.c index fbe7ec5..19f721c 100644 --- a/src/buffer/clock.c +++ b/src/buffer/clock.c @@ -86,7 +86,8 @@ bool camu_clock_pause(struct camu_clock *clock, u64 target) f64 tick = atomic_load(f64)(&clock->tick, AL_ATOMIC_RELAXED); - f64 current = nn_get_tick(), pause = current; + f64 current = nn_get_tick(); + f64 pause = current; if (target > 0) { pause = calc_tick_offset(pause, nn_get_timestamp(), target); } @@ -144,6 +145,14 @@ void camu_clock_resume(struct camu_clock *clock, u64 target) atomic_store(f64)(&clock->pause, RUNNING, AL_ATOMIC_RELEASE); } +// @TODO: This only works for local sink. +bool camu_clock_is_user_paused(struct camu_clock *clock) +{ + f64 tick = atomic_load(f64)(&clock->tick, AL_ATOMIC_RELAXED); + f64 pause = atomic_load(f64)(&clock->pause, AL_ATOMIC_RELAXED); + return tick != SET && pause <= 0.0; +} + f64 camu_clock_get_base_pts(struct camu_clock *clock) { return clock->base; diff --git a/src/buffer/clock.h b/src/buffer/clock.h index eb3dcaf..e1a2d9e 100644 --- a/src/buffer/clock.h +++ b/src/buffer/clock.h @@ -53,6 +53,7 @@ bool camu_clock_pause(struct camu_clock *clock, u64 target); void camu_clock_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_last_pts(struct camu_clock *clock); |