mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 11:36:00 +00:00
StreamOut: use atomic_sp<> for event callback thread safety
Test: basic audio works Bug: 177278988 Change-Id: I987b31f470009c50412d8cee09163d093ecdd6f9
This commit is contained in:
@@ -698,7 +698,7 @@ Return<Result> StreamOut::setEventCallback(const sp<IStreamOutEventCallback>& ca
|
||||
// static
|
||||
int StreamOut::asyncEventCallback(stream_event_callback_type_t event, void* param, void* cookie) {
|
||||
StreamOut* self = reinterpret_cast<StreamOut*>(cookie);
|
||||
sp<IStreamOutEventCallback> eventCallback = self->mEventCallback;
|
||||
sp<IStreamOutEventCallback> eventCallback = self->mEventCallback.load();
|
||||
if (eventCallback.get() == nullptr) return 0;
|
||||
ALOGV("%s event %d", __func__, event);
|
||||
Return<void> result;
|
||||
|
||||
@@ -161,7 +161,7 @@ struct StreamOut : public IStreamOut {
|
||||
const sp<StreamMmap<audio_stream_out_t>> mStreamMmap;
|
||||
mediautils::atomic_sp<IStreamOutCallback> mCallback; // for non-blocking write and drain
|
||||
#if MAJOR_VERSION >= 6
|
||||
sp<IStreamOutEventCallback> mEventCallback;
|
||||
mediautils::atomic_sp<IStreamOutEventCallback> mEventCallback;
|
||||
#endif
|
||||
std::unique_ptr<CommandMQ> mCommandMQ;
|
||||
std::unique_ptr<DataMQ> mDataMQ;
|
||||
|
||||
Reference in New Issue
Block a user