aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/backends/alsa.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Alc/backends/alsa.cpp')
-rw-r--r--Alc/backends/alsa.cpp18
1 files changed, 7 insertions, 11 deletions
diff --git a/Alc/backends/alsa.cpp b/Alc/backends/alsa.cpp
index 606877a8..228cafe0 100644
--- a/Alc/backends/alsa.cpp
+++ b/Alc/backends/alsa.cpp
@@ -929,7 +929,7 @@ struct ALCcaptureAlsa final : public ALCbackend {
al::vector<char> Buffer;
bool DoCapture{false};
- ll_ringbuffer_t *Ring{nullptr};
+ RingBufferPtr Ring{nullptr};
snd_pcm_sframes_t mLastAvail{0};
};
@@ -963,9 +963,6 @@ void ALCcaptureAlsa_Destruct(ALCcaptureAlsa *self)
snd_pcm_close(self->PcmHandle);
self->PcmHandle = nullptr;
- ll_ringbuffer_free(self->Ring);
- self->Ring = nullptr;
-
ALCbackend_Destruct(STATIC_CAST(ALCbackend, self));
self->~ALCcaptureAlsa();
}
@@ -1068,8 +1065,8 @@ ALCenum ALCcaptureAlsa_open(ALCcaptureAlsa *self, const ALCchar *name)
if(needring)
{
- self->Ring = ll_ringbuffer_create(device->UpdateSize*device->NumUpdates,
- device->frameSizeFromFmt(), false);
+ self->Ring.reset(ll_ringbuffer_create(device->UpdateSize*device->NumUpdates,
+ device->frameSizeFromFmt(), false));
if(!self->Ring)
{
ERR("ring buffer create failed\n");
@@ -1086,7 +1083,6 @@ error:
if(hp) snd_pcm_hw_params_free(hp);
error2:
- ll_ringbuffer_free(self->Ring);
self->Ring = nullptr;
snd_pcm_close(self->PcmHandle);
self->PcmHandle = nullptr;
@@ -1142,7 +1138,7 @@ ALCenum ALCcaptureAlsa_captureSamples(ALCcaptureAlsa *self, ALCvoid *buffer, ALC
if(self->Ring)
{
- 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;
}
@@ -1235,7 +1231,7 @@ ALCuint ALCcaptureAlsa_availableSamples(ALCcaptureAlsa *self)
while(avail > 0)
{
- auto vec = ll_ringbuffer_get_write_vector(self->Ring);
+ auto vec = ll_ringbuffer_get_write_vector(self->Ring.get());
if(vec.first.len == 0) break;
snd_pcm_sframes_t amt{std::min<snd_pcm_sframes_t>(vec.first.len, avail)};
@@ -1263,11 +1259,11 @@ ALCuint ALCcaptureAlsa_availableSamples(ALCcaptureAlsa *self)
continue;
}
- ll_ringbuffer_write_advance(self->Ring, amt);
+ ll_ringbuffer_write_advance(self->Ring.get(), amt);
avail -= amt;
}
- return ll_ringbuffer_read_space(self->Ring);
+ return ll_ringbuffer_read_space(self->Ring.get());
}
ClockLatency ALCcaptureAlsa_getClockLatency(ALCcaptureAlsa *self)