aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/backends/jack.c
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2016-05-28 00:43:14 -0700
committerChris Robinson <[email protected]>2016-05-28 00:43:14 -0700
commit6d4380a48c28f21d271d4eb5e668443bc8a0f50e (patch)
tree1c9c9f6a7b19185cce76f75fbb6c37bff4a9fa8f /Alc/backends/jack.c
parent800e38bac68315d372ca1f865c7c448356309f70 (diff)
Change the backend getLatency method to return the clock time too
This will also allow backends to better synchronize the tracked clock time with the device output latency, without necessarily needing to lock if the backend API can allow for it.
Diffstat (limited to 'Alc/backends/jack.c')
-rw-r--r--Alc/backends/jack.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/Alc/backends/jack.c b/Alc/backends/jack.c
index 69d1277a..cfdc62e8 100644
--- a/Alc/backends/jack.c
+++ b/Alc/backends/jack.c
@@ -148,7 +148,7 @@ static ALCboolean ALCjackPlayback_start(ALCjackPlayback *self);
static void ALCjackPlayback_stop(ALCjackPlayback *self);
static DECLARE_FORWARD2(ALCjackPlayback, ALCbackend, ALCenum, captureSamples, void*, ALCuint)
static DECLARE_FORWARD(ALCjackPlayback, ALCbackend, ALCuint, availableSamples)
-static ALint64 ALCjackPlayback_getLatency(ALCjackPlayback *self);
+static ClockLatency ALCjackPlayback_getClockLatency(ALCjackPlayback *self);
static void ALCjackPlayback_lock(ALCjackPlayback *self);
static void ALCjackPlayback_unlock(ALCjackPlayback *self);
DECLARE_DEFAULT_ALLOCATORS(ALCjackPlayback)
@@ -506,16 +506,18 @@ static void ALCjackPlayback_stop(ALCjackPlayback *self)
}
-static ALint64 ALCjackPlayback_getLatency(ALCjackPlayback *self)
+static ClockLatency ALCjackPlayback_getClockLatency(ALCjackPlayback *self)
{
ALCdevice *device = STATIC_CAST(ALCbackend, self)->mDevice;
- ALint64 latency;
+ ClockLatency ret;
ALCjackPlayback_lock(self);
- latency = ll_ringbuffer_read_space(self->Ring);
+ ret.ClockTime = GetDeviceClockTime(device);
+ ret.Latency = ll_ringbuffer_read_space(self->Ring) * DEVICE_CLOCK_RES /
+ device->Frequency;
ALCjackPlayback_unlock(self);
- return latency * 1000000000 / device->Frequency;
+ return ret;
}