diff --git a/services/audiomanager/managersource/src/daudio_source_manager.cpp b/services/audiomanager/managersource/src/daudio_source_manager.cpp index 45325d1e72ea75186d9b4ed7466c5539089edefb..f84878aced3918ff96091cb07eef5141b006f764 100644 --- a/services/audiomanager/managersource/src/daudio_source_manager.cpp +++ b/services/audiomanager/managersource/src/daudio_source_manager.cpp @@ -129,6 +129,12 @@ int32_t DAudioSourceManager::UnInit() listenThread_.join(); } + if (handler_ != nullptr) { + while (!handler_->IsIdle()) { + DHLOGD("manager handler is running, wait for idle."); + usleep(WAIT_HANDLER_IDLE_TIME_US); + } + } ipcCallback_ = nullptr; daudioMgrCallback_ = nullptr; if (DAudioHdiHandler::GetInstance().UninitHdiHandler() != DH_SUCCESS) { @@ -136,11 +142,6 @@ int32_t DAudioSourceManager::UnInit() return ERR_DH_AUDIO_FAILED; } - CHECK_NULL_RETURN(handler_, DH_SUCCESS); - while (!handler_->IsIdle()) { - DHLOGD("manager handler is running, wait for idle."); - usleep(WAIT_HANDLER_IDLE_TIME_US); - } DHLOGD("Uninit audio source manager exit."); return DH_SUCCESS; }