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