aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/backends/sndio.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Alc/backends/sndio.cpp')
-rw-r--r--Alc/backends/sndio.cpp16
1 files changed, 7 insertions, 9 deletions
diff --git a/Alc/backends/sndio.cpp b/Alc/backends/sndio.cpp
index 9ebad671..25566490 100644
--- a/Alc/backends/sndio.cpp
+++ b/Alc/backends/sndio.cpp
@@ -279,7 +279,7 @@ static void SndioPlayback_stop(SndioPlayback *self)
struct SndioCapture final : public ALCbackend {
struct sio_hdl *sndHandle{nullptr};
- ll_ringbuffer_t *ring{nullptr};
+ RingBufferPtr ring{nullptr};
std::atomic<ALenum> mKillNow{AL_TRUE};
std::thread mThread;
@@ -316,9 +316,6 @@ static void SndioCapture_Destruct(SndioCapture *self)
sio_close(self->sndHandle);
self->sndHandle = nullptr;
- ll_ringbuffer_free(self->ring);
- self->ring = nullptr;
-
ALCbackend_Destruct(STATIC_CAST(ALCbackend, self));
self->~SndioCapture();
}
@@ -339,7 +336,7 @@ static int SndioCapture_recordProc(SndioCapture *self)
{
size_t total, todo;
- auto data = ll_ringbuffer_get_write_vector(self->ring);
+ auto data = ll_ringbuffer_get_write_vector(self->ring.get());
todo = data.first.len + data.second.len;
if(todo == 0)
{
@@ -372,7 +369,7 @@ static int SndioCapture_recordProc(SndioCapture *self)
data.first.len -= got;
total += got;
}
- ll_ringbuffer_write_advance(self->ring, total / frameSize);
+ ll_ringbuffer_write_advance(self->ring.get(), total / frameSize);
}
return 0;
@@ -468,7 +465,8 @@ static ALCenum SndioCapture_open(SndioCapture *self, const ALCchar *name)
return ALC_INVALID_VALUE;
}
- self->ring = ll_ringbuffer_create(device->UpdateSize*device->NumUpdates, par.bps*par.rchan, 0);
+ self->ring.reset(ll_ringbuffer_create(device->UpdateSize*device->NumUpdates,
+ par.bps*par.rchan, false));
if(!self->ring)
{
ERR("Failed to allocate %u-byte ringbuffer\n",
@@ -516,13 +514,13 @@ static void SndioCapture_stop(SndioCapture *self)
static ALCenum SndioCapture_captureSamples(SndioCapture *self, void *buffer, ALCuint samples)
{
- ll_ringbuffer_read(self->ring, static_cast<char*>(buffer), samples);
+ ll_ringbuffer_read(self->ring.get(), static_cast<char*>(buffer), samples);
return ALC_NO_ERROR;
}
static ALCuint SndioCapture_availableSamples(SndioCapture *self)
{
- return ll_ringbuffer_read_space(self->ring);
+ return ll_ringbuffer_read_space(self->ring.get());
}