diff options
author | David Faure <david.faure@kdab.com> | 2018-10-02 15:28:19 +0200 |
---|---|---|
committer | David Faure <david.faure@kdab.com> | 2018-10-04 01:07:00 +0000 |
commit | 80cc6bcec4b204e50d1f2c7460a0b91c7d9ea6f9 (patch) | |
tree | 10cc3b7d49dca7eb59a58ddb4421d2ac2f452e72 /src/gui | |
parent | 4f4a33196dc37a9405a8dbd20a1e63d36e000d2f (diff) |
QIcon::addFile: don't use QMimeDatabase for every PNG being loaded
Commit 710ff392d9 introduced this fallback code for the case where the
extension was empty. Let's make it happen only in that case, so that the
much more common case of "foo.png" doesn't go through
iconEngineFromSuffix twice, nor through QMimeDatabase (which has to load
and parse an XML file in order to determine preferredSuffix(),
unfortunately).
Found using heaptrack.
Change-Id: Iab6b71e1fa23916029c9e2ba25447a12d70f88a5
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/image/qicon.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp index 14a0248600..5907d69f87 100644 --- a/src/gui/image/qicon.cpp +++ b/src/gui/image/qicon.cpp @@ -1078,11 +1078,12 @@ void QIcon::addFile(const QString &fileName, const QSize &size, Mode mode, State if (!d) { QFileInfo info(fileName); - QIconEngine *engine = iconEngineFromSuffix(fileName, info.suffix()); + QString suffix = info.suffix(); #ifndef QT_NO_MIMETYPE - if (!engine) - engine = iconEngineFromSuffix(fileName, QMimeDatabase().mimeTypeForFile(info).preferredSuffix()); + if (suffix.isEmpty()) + suffix = QMimeDatabase().mimeTypeForFile(info).preferredSuffix(); // determination from contents #endif // !QT_NO_MIMETYPE + QIconEngine *engine = iconEngineFromSuffix(fileName, suffix); d = new QIconPrivate(engine ? engine : new QPixmapIconEngine); } |