summaryrefslogtreecommitdiffstats
path: root/src/corelib
diff options
context:
space:
mode:
authorDavid Faure <faure@kde.org>2012-05-02 23:19:13 +0200
committerQt by Nokia <qt-info@nokia.com>2012-05-07 17:55:58 +0200
commit4046ec71c86f41eb45d706ab3fc2bcf21fd59d9f (patch)
treeea9020ef12d0dc41b711c1c09fb0e0834557b62a /src/corelib
parentb36666e1efb7941bcfdb59e263f13828d549ce85 (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>
Diffstat (limited to 'src/corelib')
-rw-r--r--src/corelib/mimetypes/qmimeprovider.cpp3
-rw-r--r--src/corelib/mimetypes/qmimetype.cpp5
-rw-r--r--src/corelib/mimetypes/qmimetype_p.h1
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