Description:解决回调刷新displayinfo,导致API隔离失效的问题

Merge pull request  from dqwdgit/bugfix1
This commit is contained in:
openharmony_ci 2025-01-26 10:17:20 +00:00 committed by Gitee
commit ea9ee9c549
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F

@ -122,7 +122,7 @@ private:
void NotifyAvailableAreaChanged(DMRect rect, DisplayId displayId);
void Clear();
std::string GetDisplayInfoSrting(sptr<DisplayInfo> displayInfo);
std::atomic<bool> needUpdateDisplayFromDMS_ = false;
DisplayId defaultDisplayId_ = DISPLAY_ID_INVALID;
DisplayId primaryDisplayId_ = DISPLAY_ID_INVALID;
std::map<DisplayId, sptr<Display>> displayMap_;
@ -651,7 +651,7 @@ sptr<Display> DisplayManager::Impl::GetDisplayById(DisplayId displayId)
if (displayId != DISPLAY_ID_INVALID && lastRequestIter != displayUptateTimeMap_.end()) {
auto interval = std::chrono::duration_cast<std::chrono::microseconds>(currentTime - lastRequestIter->second)
.count();
if (interval < getDisplayIntervalUs_) {
if (interval < getDisplayIntervalUs_ && !needUpdateDisplayFromDMS_) {
auto iter = displayMap_.find(displayId);
if (iter != displayMap_.end()) {
WLOGFW("update display from cache, Id: %{public}" PRIu64" ", displayId);
@ -673,7 +673,7 @@ sptr<Display> DisplayManager::Impl::GetDisplayById(DisplayId displayId)
displayUptateTimeMap_.erase(displayId);
return nullptr;
}
needUpdateDisplayFromDMS_ = false;
displayUptateTimeMap_[displayId] = currentTime;
return displayMap_[displayId];
}
@ -2021,7 +2021,7 @@ void DisplayManager::Impl::NotifyDisplayStateChanged(DisplayId id, DisplayState
void DisplayManager::Impl::NotifyDisplayCreate(sptr<DisplayInfo> info)
{
std::lock_guard<std::recursive_mutex> lock(mutex_);
UpdateDisplayInfoLocked(info);
needUpdateDisplayFromDMS_ = true;
}
void DisplayManager::Impl::NotifyDisplayDestroy(DisplayId displayId)
@ -2034,7 +2034,7 @@ void DisplayManager::Impl::NotifyDisplayDestroy(DisplayId displayId)
void DisplayManager::Impl::NotifyDisplayChange(sptr<DisplayInfo> displayInfo)
{
std::lock_guard<std::recursive_mutex> lock(mutex_);
UpdateDisplayInfoLocked(displayInfo);
needUpdateDisplayFromDMS_ = true;
}
bool DisplayManager::Impl::UpdateDisplayInfoLocked(sptr<DisplayInfo> displayInfo)