diff --git a/frameworks/native/hdiadapter_new/sink/remote_offload_audio_render_sink.cpp b/frameworks/native/hdiadapter_new/sink/remote_offload_audio_render_sink.cpp index daf723be947cb2f9a19bf9a75dc51e83c50d0475..f2869788a48987da08f2eee6a3d9d2ee1e3a06fd 100644 --- a/frameworks/native/hdiadapter_new/sink/remote_offload_audio_render_sink.cpp +++ b/frameworks/native/hdiadapter_new/sink/remote_offload_audio_render_sink.cpp @@ -326,6 +326,7 @@ std::string RemoteOffloadAudioRenderSink::GetAudioParameter(const AudioParamKey int32_t RemoteOffloadAudioRenderSink::SetVolume(float left, float right) { + std::lock_guard lock(sinkMutex_); std::lock_guard lock(switchDeviceMutex_); Trace trace("RemoteOffloadAudioRenderSink::SetVolume"); @@ -657,6 +658,7 @@ void RemoteOffloadAudioRenderSink::SetAudioBalanceValue(float audioBalance) int32_t RemoteOffloadAudioRenderSink::SetSinkMuteForSwitchDevice(bool mute) { + std::lock_guard lock(sinkMutex_); std::lock_guard lock(switchDeviceMutex_); AUDIO_INFO_LOG("set offload mute %{public}d", mute); @@ -763,6 +765,7 @@ int32_t RemoteOffloadAudioRenderSink::UpdateAppsUid(const std::vector & int32_t RemoteOffloadAudioRenderSink::Drain(AudioDrainType type) { Trace trace("RemoteOffloadAudioRenderSink::Drain"); + std::lock_guard lock(sinkMutex_); CHECK_AND_RETURN_RET_LOG(audioRender_ != nullptr, ERR_INVALID_HANDLE, "render is nullptr"); auto drainType = static_cast(type); int32_t ret = audioRender_->DrainBuffer(drainType); @@ -779,6 +782,8 @@ void RemoteOffloadAudioRenderSink::RegistOffloadHdiCallback(std::function lock(sinkMutex_); + CHECK_AND_RETURN_RET_LOG(audioRender_ != nullptr, ERR_INVALID_HANDLE, "render is nullptr"); int32_t ret = audioRender_->RegCallback(hdiCallback_.callback_, (int8_t)0); if (ret != SUCCESS) { AUDIO_WARNING_LOG("fail, error code: %{public}d", ret); @@ -788,6 +793,7 @@ void RemoteOffloadAudioRenderSink::RegistOffloadHdiCallback(std::function lock(sinkMutex_); CHECK_AND_RETURN_RET_LOG(audioRender_ != nullptr, ERR_INVALID_HANDLE, "render is nullptr"); CHECK_AND_RETURN_RET_LOG(!isFlushing_.load(), ERR_OPERATION_FAILED, "during flushing");