From 09449c001dbed45b0930fdcd8d92c989a525f533 Mon Sep 17 00:00:00 2001 From: hwwuhaobo Date: Sat, 7 Oct 2023 10:54:10 +0800 Subject: [PATCH] modify hicollie thread Signed-off-by: hwwuhaobo --- .../managersource/include/daudio_source_manager.h | 3 ++- .../managersource/src/daudio_source_manager.cpp | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/services/audiomanager/managersource/include/daudio_source_manager.h b/services/audiomanager/managersource/include/daudio_source_manager.h index cc6e4395..0f6809fa 100644 --- a/services/audiomanager/managersource/include/daudio_source_manager.h +++ b/services/audiomanager/managersource/include/daudio_source_manager.h @@ -85,7 +85,8 @@ private: IAVEngineProvider *rcvProviderPtr_ = nullptr; void *pSHandler_ = nullptr; void *pRHandler_ = nullptr; + std::atomic isHicollieRunning_ = false; }; } // DistributedHardware } // OHOS -#endif // OHOS_DAUDIO_SINK_MANAGER_H \ No newline at end of file +#endif // OHOS_DAUDIO_SINK_MANAGER_H diff --git a/services/audiomanager/managersource/src/daudio_source_manager.cpp b/services/audiomanager/managersource/src/daudio_source_manager.cpp index fdab4df7..62a9c383 100644 --- a/services/audiomanager/managersource/src/daudio_source_manager.cpp +++ b/services/audiomanager/managersource/src/daudio_source_manager.cpp @@ -58,6 +58,7 @@ DAudioSourceManager::~DAudioSourceManager() devClearThread_.join(); } + isHicollieRunning_.store(false); if (listenThread_.joinable()) { listenThread_.join(); } @@ -92,6 +93,7 @@ int32_t DAudioSourceManager::Init(const sptr &callback) DHLOGE("load av transport receiver engine provider failed."); return ERR_DH_AUDIO_FAILED; } + isHicollieRunning_.store(true); listenThread_ = std::thread(&DAudioSourceManager::ListenAudioDev, this); if (pthread_setname_np(listenThread_.native_handle(), LISTEN_THREAD) != DH_SUCCESS) { DHLOGE("Dev clear thread setname failed."); @@ -114,6 +116,7 @@ int32_t DAudioSourceManager::UnInit() } audioDevMap_.clear(); } + isHicollieRunning_.store(false); if (devClearThread_.joinable()) { devClearThread_.join(); } @@ -359,7 +362,7 @@ void DAudioSourceManager::ListenAudioDev() OHOS::HiviewDFX::Watchdog::GetInstance().RunPeriodicalTask("SourceService", taskFunc, WATCHDOG_INTERVAL_TIME, WATCHDOG_DELAY_TIME); - while (true) { + while (isHicollieRunning_.load()) { std::lock_guard lock(devMapMtx_); if (!audioDevMap_.empty()) { for (auto &iter : audioDevMap_) { @@ -455,4 +458,4 @@ IAVEngineProvider *DAudioSourceManager::getReceiverProvider() return rcvProviderPtr_; } } // DistributedHardware -} // OHOS \ No newline at end of file +} // OHOS -- Gitee