summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel
diff options
context:
space:
mode:
authormae <qt-info@nokia.com>2011-04-29 09:44:43 (GMT)
committermae <qt-info@nokia.com>2011-04-29 09:44:43 (GMT)
commit31ef8fa6abc2ea23c6f0a996b36494d88aafb0b5 (patch)
tree15e8c0132ac06a9614d69e909c233ef811f17aa2 /src/corelib/kernel
parentc85c1ea36cd9ebe6a9ff970d7ba0ce8d08d5b27b (diff)
downloadQt-31ef8fa6abc2ea23c6f0a996b36494d88aafb0b5.zip
Qt-31ef8fa6abc2ea23c6f0a996b36494d88aafb0b5.tar.gz
Qt-31ef8fa6abc2ea23c6f0a996b36494d88aafb0b5.tar.bz2
Reduce open and stat system calls for QSettings
The patch moves the global static QSettings object from QLibrary to QCoreApplication and reduces a few stat and open calls. Without the patch, a large Trolltech.conf was pushed out of the unused settings cache during startup, meaning Trolltech.conf was parsed more than once. Reviewed-by: Liang Qi
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp12
-rw-r--r--src/corelib/kernel/qcoreapplication_p.h2
2 files changed, 14 insertions, 0 deletions
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index be86c58..df8bc59 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -270,6 +270,8 @@ bool QCoreApplicationPrivate::is_app_closing = false;
Q_CORE_EXPORT bool qt_locale_initialized = false;
+QSettings *QCoreApplicationPrivate::trolltechConf = 0;
+
Q_CORE_EXPORT uint qGlobalPostedEventsCount()
{
QThreadData *currentThreadData = QThreadData::current();
@@ -371,6 +373,9 @@ QCoreApplicationPrivate::~QCoreApplicationPrivate()
threadData->postEventList.recursion = 0;
threadData->quitNow = false;
}
+
+ delete trolltechConf;
+ trolltechConf = 0;
}
void QCoreApplicationPrivate::createEventDispatcher()
@@ -688,6 +693,13 @@ void QCoreApplication::init()
}
#endif
+
+ /*
+ Create an instance of Trolltech.conf. This ensures that the settings will not
+ be thrown out of QSetting's cache for unused settings.
+ */
+ d->trolltechConf = new QSettings(QSettings::UserScope, QLatin1String("Trolltech"));
+
qt_startup_hook();
}
diff --git a/src/corelib/kernel/qcoreapplication_p.h b/src/corelib/kernel/qcoreapplication_p.h
index add2a35..0557f83 100644
--- a/src/corelib/kernel/qcoreapplication_p.h
+++ b/src/corelib/kernel/qcoreapplication_p.h
@@ -55,6 +55,7 @@
#include "QtCore/qcoreapplication.h"
#include "QtCore/qtranslator.h"
+#include "QtCore/qsettings.h"
#include "private/qobject_p.h"
#ifdef Q_OS_SYMBIAN
@@ -139,6 +140,7 @@ public:
#if defined(QT3_SUPPORT)
static bool useQt3Support;
#endif
+ static QSettings *trolltechConf;
};
QT_END_NAMESPACE