From 30874b7a02183252f76da6360ed92f89df3787a1 Mon Sep 17 00:00:00 2001 From: Andy Hung Date: Thu, 14 Jan 2021 19:42:25 -0800 Subject: [PATCH] StreamOut: use atomic_sp<> for event callback thread safety Test: basic audio works Bug: 177278988 Change-Id: I987b31f470009c50412d8cee09163d093ecdd6f9 --- audio/core/all-versions/default/StreamOut.cpp | 2 +- .../core/all-versions/default/include/core/default/StreamOut.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/audio/core/all-versions/default/StreamOut.cpp b/audio/core/all-versions/default/StreamOut.cpp index 1fb72671bb..357fd941bd 100644 --- a/audio/core/all-versions/default/StreamOut.cpp +++ b/audio/core/all-versions/default/StreamOut.cpp @@ -698,7 +698,7 @@ Return StreamOut::setEventCallback(const sp& ca // static int StreamOut::asyncEventCallback(stream_event_callback_type_t event, void* param, void* cookie) { StreamOut* self = reinterpret_cast(cookie); - sp eventCallback = self->mEventCallback; + sp eventCallback = self->mEventCallback.load(); if (eventCallback.get() == nullptr) return 0; ALOGV("%s event %d", __func__, event); Return result; diff --git a/audio/core/all-versions/default/include/core/default/StreamOut.h b/audio/core/all-versions/default/include/core/default/StreamOut.h index c246ef3e4c..02d8e8962d 100644 --- a/audio/core/all-versions/default/include/core/default/StreamOut.h +++ b/audio/core/all-versions/default/include/core/default/StreamOut.h @@ -161,7 +161,7 @@ struct StreamOut : public IStreamOut { const sp> mStreamMmap; mediautils::atomic_sp mCallback; // for non-blocking write and drain #if MAJOR_VERSION >= 6 - sp mEventCallback; + mediautils::atomic_sp mEventCallback; #endif std::unique_ptr mCommandMQ; std::unique_ptr mDataMQ;