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