diff options
author | David Faure <faure@kde.org> | 2012-05-02 23:19:13 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-05-07 17:55:58 +0200 |
commit | 4046ec71c86f41eb45d706ab3fc2bcf21fd59d9f (patch) | |
tree | ea9020ef12d0dc41b711c1c09fb0e0834557b62a | |
parent | b36666e1efb7941bcfdb59e263f13828d549ce85 (diff) |
QMimeType performance fix: don't reload from XML files over and over.
Change-Id: Ie19c338ed6449ea1509306cbda5dc251295783ae
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
-rw-r--r-- | src/corelib/mimetypes/qmimeprovider.cpp | 3 | ||||
-rw-r--r-- | src/corelib/mimetypes/qmimetype.cpp | 5 | ||||
-rw-r--r-- | src/corelib/mimetypes/qmimetype_p.h | 1 |
3 files changed, 8 insertions, 1 deletions
diff --git a/src/corelib/mimetypes/qmimeprovider.cpp b/src/corelib/mimetypes/qmimeprovider.cpp index 0c2f25a1f9..1f7d06caa4 100644 --- a/src/corelib/mimetypes/qmimeprovider.cpp +++ b/src/corelib/mimetypes/qmimeprovider.cpp @@ -529,6 +529,9 @@ QList<QMimeType> QMimeBinaryProvider::allMimeTypes() void QMimeBinaryProvider::loadMimeTypePrivate(QMimeTypePrivate &data) { + if (data.loaded) + return; + data.loaded = true; // load comment and globPatterns const QString file = data.name + QLatin1String(".xml"); diff --git a/src/corelib/mimetypes/qmimetype.cpp b/src/corelib/mimetypes/qmimetype.cpp index 5ee70e83b1..3a3112f4fd 100644 --- a/src/corelib/mimetypes/qmimetype.cpp +++ b/src/corelib/mimetypes/qmimetype.cpp @@ -63,6 +63,7 @@ bool qt_isQMimeTypeDebuggingActivated (false); #endif QMimeTypePrivate::QMimeTypePrivate() + : loaded(false) {} QMimeTypePrivate::QMimeTypePrivate(const QMimeType &other) @@ -70,7 +71,8 @@ QMimeTypePrivate::QMimeTypePrivate(const QMimeType &other) localeComments(other.d->localeComments), genericIconName(other.d->genericIconName), iconName(other.d->iconName), - globPatterns(other.d->globPatterns) + globPatterns(other.d->globPatterns), + loaded(other.d->loaded) {} void QMimeTypePrivate::clear() @@ -80,6 +82,7 @@ void QMimeTypePrivate::clear() genericIconName.clear(); iconName.clear(); globPatterns.clear(); + loaded = false; } /*! diff --git a/src/corelib/mimetypes/qmimetype_p.h b/src/corelib/mimetypes/qmimetype_p.h index f2c7f966ff..775d5278e2 100644 --- a/src/corelib/mimetypes/qmimetype_p.h +++ b/src/corelib/mimetypes/qmimetype_p.h @@ -68,6 +68,7 @@ public: QString genericIconName; QString iconName; QStringList globPatterns; + bool loaded; }; QT_END_NAMESPACE |