From 3b9983453b95b9e1f72386dedb2310f05b1d076e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Tue, 12 Oct 2021 10:39:39 -0400 Subject: [PATCH] ringbuffer: add write lock Change-Id: Idde24be13daf0fca55ce5a2607e6b9835c18f3c5 --- src/media/audio/ringbuffer.cpp | 1 + src/media/audio/ringbuffer.h | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/media/audio/ringbuffer.cpp b/src/media/audio/ringbuffer.cpp index c1074301a1..b3859f6bb3 100644 --- a/src/media/audio/ringbuffer.cpp +++ b/src/media/audio/ringbuffer.cpp @@ -163,6 +163,7 @@ RingBuffer::hasNoReadOffsets() const void RingBuffer::put(std::shared_ptr<AudioFrame>&& data) { + std::lock_guard<std::mutex> l(writeLock_); resizer_.enqueue(resampler_.resample(std::move(data), format_)); } diff --git a/src/media/audio/ringbuffer.h b/src/media/audio/ringbuffer.h index 3b09644f9e..de6ea39914 100644 --- a/src/media/audio/ringbuffer.h +++ b/src/media/audio/ringbuffer.h @@ -72,6 +72,7 @@ public: inline void setFormat(const AudioFormat& format) { + std::lock_guard<std::mutex> l(writeLock_); format_ = format; resizer_.setFormat(format, format.sample_rate / 50); } @@ -201,6 +202,7 @@ private: mutable std::mutex lock_; mutable std::condition_variable not_empty_; + std::mutex writeLock_; ReadOffsetMap readoffsets_; -- GitLab