diff options
author | Marc Mutz <marc.mutz@qt.io> | 2022-02-14 09:54:27 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-02-15 22:29:43 +0000 |
commit | 6712c0270efbf3a46436d6025a59077581641960 (patch) | |
tree | 081d79ff80d86b7b85e49dc063279d510bb5ef47 | |
parent | db2d61340c5244d5e75034e6911ddfc1ea0ebdd4 (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.cpp | 12 |
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(); } |