mirror of
https://gitee.com/openharmony/window_window_manager
synced 2025-03-02 20:56:07 +00:00
!12364 Description:解决回调刷新displayinfo,导致API隔离失效的问题
Merge pull request !12364 from dqwdgit/bugfix1
This commit is contained in:
commit
ea9ee9c549
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user