From: Eunki, Hong Date: Fri, 9 May 2025 09:32:45 +0000 (+0900) Subject: Make requested property basis resetter capacity as zero X-Git-Tag: accepted/tizen/unified/20250515.075542~1^2~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cd1272ca61e9f21abca925f2104515c98e486696;p=platform%2Fcore%2Fuifw%2Fdali-core.git Make requested property basis resetter capacity as zero Since clear & rehash is heavyer than swap(), let we call it if we use temperal copy, and use it. Change-Id: I28cfd928c55d6ca10a165c26ebf4ded824da8df8 Signed-off-by: Eunki, Hong --- diff --git a/dali/internal/update/manager/update-manager.cpp b/dali/internal/update/manager/update-manager.cpp index ea217c109..a1fe66904 100644 --- a/dali/internal/update/manager/update-manager.cpp +++ b/dali/internal/update/manager/update-manager.cpp @@ -940,7 +940,6 @@ void UpdateManager::ResetProperties(BufferIndex bufferIndex) // (Since requested property base doesn't consider the lifecycle of PropertyBase, // It might be invalid after the previous update finished) DALI_ASSERT_DEBUG(mImpl->resetRequestedPropertyBases.empty() && "Reset to base values requested during the previous update!"); - mImpl->resetRequestedPropertyBases.clear(); // Reset node properties mImpl->nodeResetters.RequestResetToBaseValues(); @@ -952,11 +951,18 @@ void UpdateManager::ResetProperties(BufferIndex bufferIndex) mImpl->propertyResetters.RequestResetToBaseValues(); // Actual reset to base values here - for(auto&& propertyBase : mImpl->resetRequestedPropertyBases) + if(!mImpl->resetRequestedPropertyBases.empty()) { - propertyBase->ResetToBaseValue(bufferIndex); + decltype(mImpl->resetRequestedPropertyBases) propertyBaseList; + + // Ensure to reset list as zero capacity (Since std::unordered_set::clear() is slow if capacity is not zero) + propertyBaseList.swap(mImpl->resetRequestedPropertyBases); + + for(auto&& propertyBase : propertyBaseList) + { + propertyBase->ResetToBaseValue(bufferIndex); + } } - mImpl->resetRequestedPropertyBases.clear(); // Clear all root nodes dirty flags for(auto& scene : mImpl->scenes)