From 9057a0cc85d7c185b442bd5383a0c1cc376866c6 Mon Sep 17 00:00:00 2001 From: m0_54007497 Date: Wed, 25 Feb 2026 15:32:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=AD=BB=E9=94=81=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: m0_54007497 --- .../server/src/drm_host_manager.cpp | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/services/drm_service/server/src/drm_host_manager.cpp b/services/drm_service/server/src/drm_host_manager.cpp index b5705180..1e475b17 100644 --- a/services/drm_service/server/src/drm_host_manager.cpp +++ b/services/drm_service/server/src/drm_host_manager.cpp @@ -79,24 +79,28 @@ void DrmHostManager::DrmHostDeathRecipient::OnRemoteDied(const wptr lock(drmHostMapMutex); - DRM_CHECK_AND_RETURN_LOG( - lazyLoadPluginInfoMap.count(name) > 0, "PluginCountInfo is empty, name:%{public}s", name.c_str()); - DRM_CHECK_AND_RETURN_LOG(!lazyLoadPluginCountMap.empty(), "PluginCountMap is empty."); - if (statusCallback_ != nullptr) { - statusCallback_->OnDrmPluginDied(name); - } - lazyLoadPluginCountMap[name] = NOT_LAZY_LOADDED; - lazyLoadPluginTimeoutMap[name] = NOT_LAZY_LOADDED; - - for (auto it = hdiMediaKeySystemFactoryAndPluginNameMap.begin(); - it != hdiMediaKeySystemFactoryAndPluginNameMap.end();) { - if (it->second == name) { - it = hdiMediaKeySystemFactoryAndPluginNameMap.erase(it); - } else { - ++it; + StatusCallback *statusCallback = nullptr; + { + std::lock_guard lock(drmHostMapMutex); + DRM_CHECK_AND_RETURN_LOG( + lazyLoadPluginInfoMap.count(name) > 0, "PluginCountInfo is empty, name:%{public}s", name.c_str()); + DRM_CHECK_AND_RETURN_LOG(!lazyLoadPluginCountMap.empty(), "PluginCountMap is empty."); + statusCallback = statusCallback_; + lazyLoadPluginCountMap[name] = NOT_LAZY_LOADDED; + lazyLoadPluginTimeoutMap[name] = NOT_LAZY_LOADDED; + for (auto it = hdiMediaKeySystemFactoryAndPluginNameMap.begin(); + it != hdiMediaKeySystemFactoryAndPluginNameMap.end();) { + if (it->second == name) { + it = hdiMediaKeySystemFactoryAndPluginNameMap.erase(it); + } else { + ++it; + } } } + + if (statusCallback != nullptr) { + statusCallback->OnDrmPluginDied(name); + } } DrmHostManager::DrmHostManager(StatusCallback *statusCallback) : statusCallback_(statusCallback)