From 416889f49d7f776b3b4e0c49564a5bc336e98a2b Mon Sep 17 00:00:00 2001 From: WerWolv Date: Wed, 24 Jul 2024 19:41:12 +0200 Subject: [PATCH] impr: Optimize time it takes to find favorites in patterns --- plugins/ui/source/ui/pattern_drawer.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/plugins/ui/source/ui/pattern_drawer.cpp b/plugins/ui/source/ui/pattern_drawer.cpp index 15b788929..9dca60a6f 100644 --- a/plugins/ui/source/ui/pattern_drawer.cpp +++ b/plugins/ui/source/ui/pattern_drawer.cpp @@ -1382,6 +1382,8 @@ namespace hex::ui { for (auto &pattern : patterns) { std::vector patternPath; + + size_t startFavoriteCount = m_favorites.size(); traversePatternTree(*pattern, patternPath, [&, this](const pl::ptrn::Pattern &currPattern) { if (currPattern.hasAttribute("hex::favorite")) m_favorites.insert({ patternPath, currPattern.clone() }); @@ -1394,12 +1396,15 @@ namespace hex::ui { m_groups[groupName].push_back(currPattern.clone()); } + + task.update(); }); - if (updatedFavorites == m_favorites.size()) - task.interrupt(); task.update(); + if (startFavoriteCount == m_favorites.size()) + continue; + patternPath.clear(); traversePatternTree(*pattern, patternPath, [&, this](const pl::ptrn::Pattern &currPattern) { for (auto &[path, favoritePattern] : m_favorites) {