aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2022-02-14 09:54:27 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-02-15 22:29:43 +0000
commit6712c0270efbf3a46436d6025a59077581641960 (patch)
tree081d79ff80d86b7b85e49dc063279d510bb5ef47
parentdb2d61340c5244d5e75034e6911ddfc1ea0ebdd4 (diff)
QQuickFontLoader: replace a QVector with QDuplicateTracker
Apart from a more fitting, minimal, API, QDuplicateTracker also transparently uses C++17 pmr::monotonic_buffer_resource to avoid, or at least reduce, memory allocations. Change-Id: I75a065e67dadf057450f821e2df75609fb616449 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit fac0991aa33c1b22802e6dc4a8eb66dd6baf4de9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/quick/util/qquickfontloader.cpp12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/quick/util/qquickfontloader.cpp b/src/quick/util/qquickfontloader.cpp
index 3242defceb..a5c40f6139 100644
--- a/src/quick/util/qquickfontloader.cpp
+++ b/src/quick/util/qquickfontloader.cpp
@@ -58,6 +58,7 @@
#endif
#include <QtCore/QCoreApplication>
+#include <QtCore/private/qduplicatetracker_p.h>
#include <QtGui/private/qfontdatabase_p.h>
@@ -172,13 +173,10 @@ public:
void reset()
{
- QVector<QQuickFontObject *> deleted;
- QHash<QUrl, QQuickFontObject*>::iterator it;
- for (it = map.begin(); it != map.end(); ++it) {
- if (!deleted.contains(it.value())) {
- deleted.append(it.value());
- delete it.value();
- }
+ QDuplicateTracker<QQuickFontObject *, 256> deleted(map.size());
+ for (QQuickFontObject *fo : std::as_const(map)) {
+ if (!deleted.hasSeen(fo))
+ delete fo;
}
map.clear();
}