From 641fc56b2c26c676a95dac000ecff9d347e38250 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com>
Date: Sun, 29 Nov 2020 11:42:32 -0500
Subject: [PATCH] audio player: don't block in audio callback

Change-Id: I631d7ff419d5e2c1fa33923cc941413e498b951f
---
 src/media/audio/opensl/audio_player.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/media/audio/opensl/audio_player.cpp b/src/media/audio/opensl/audio_player.cpp
index 4946290eac..57acc75d7e 100644
--- a/src/media/audio/opensl/audio_player.cpp
+++ b/src/media/audio/opensl/audio_player.cpp
@@ -41,10 +41,13 @@ bqPlayerCallback(SLAndroidSimpleBufferQueueItf bq, void* ctx)
 {
     (static_cast<AudioPlayer*>(ctx))->processSLCallback(bq);
 }
+
 void
 AudioPlayer::processSLCallback(SLAndroidSimpleBufferQueueItf bq)
 {
-    std::lock_guard<std::mutex> lk(m_);
+    std::unique_lock<std::mutex> lk(m_, std::defer_lock);
+    if (!lk.try_lock())
+        return;
 
     // retrieve the finished device buf and put onto the free queue
     // so recorder could re-use it
-- 
GitLab