From: Eunki Hong Date: Wed, 14 Feb 2024 02:29:48 +0000 (+0900) Subject: Cache traveler only if the node was child of root node X-Git-Tag: dali_2.3.12~9^2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-core.git;a=commitdiff_plain;h=a469d11e875a721e1b85dd0a4983dbe979b8f4ce Cache traveler only if the node was child of root node To avoid cache node infinitly, let we cache only if the node was child of root. If then, we don't worry about memory increasement. Change-Id: I8a97a84f6dc6721ca185241f76df5e968f02161a Signed-off-by: Eunki Hong --- diff --git a/dali/internal/update/manager/scene-graph-traveler.cpp b/dali/internal/update/manager/scene-graph-traveler.cpp index 048a9e3..95805f3 100644 --- a/dali/internal/update/manager/scene-graph-traveler.cpp +++ b/dali/internal/update/manager/scene-graph-traveler.cpp @@ -72,11 +72,7 @@ SceneGraph::Node* SceneGraphTraveler::FindNode(uint32_t id) auto iter = mTravledNodeMap.find(iterateNodeId); if(iter != mTravledNodeMap.end()) { - // iter->second could be nullptr if it was failed item before. - if(iter->second != nullptr) - { - isNodeUnderRootNode = true; - } + isNodeUnderRootNode = true; break; } nodeStack.push_back({iterateNodeId, iterateNode}); @@ -86,13 +82,13 @@ SceneGraph::Node* SceneGraphTraveler::FindNode(uint32_t id) } // Store current found result. - for(auto&& idPair : nodeStack) - { - mTravledNodeMap.insert({idPair.first, isNodeUnderRootNode ? idPair.second : nullptr}); - } - + // Note : We don't cache failed cases, to avoid memory increasement. if(isNodeUnderRootNode) { + for(auto&& idPair : nodeStack) + { + mTravledNodeMap.insert({idPair.first, idPair.second}); + } node = currentNode; } } diff --git a/dali/internal/update/manager/scene-graph-traveler.h b/dali/internal/update/manager/scene-graph-traveler.h index 3f45c47..10a6cdd 100644 --- a/dali/internal/update/manager/scene-graph-traveler.h +++ b/dali/internal/update/manager/scene-graph-traveler.h @@ -106,7 +106,6 @@ private: SceneGraph::Node& mRootNode; std::unordered_map mTravledNodeMap; ///< Used to store cached pointers to already searched for Nodes. - ///< If node is not under root node, it will store nullptr. bool mInvalidated : 1; ///< True if root node was destroyed. };