summaryrefslogtreecommitdiffstats
path: root/src/webengine/api/qquickwebenginesettings.cpp
diff options
context:
space:
mode:
authorAndras Becsi <andras.becsi@digia.com>2014-11-20 15:42:04 +0100
committerAndras Becsi <andras.becsi@digia.com>2014-11-20 16:09:57 +0100
commitd3bc22c25f0443ce19efd5524d2342c1c94e3e91 (patch)
treea80eee808cde751e6b188875532622ee54cdb3b7 /src/webengine/api/qquickwebenginesettings.cpp
parent84cf77bdf980b2e88938e94ace32865528dcc5fc (diff)
Use Q_GLOBAL_STATIC instead of local statics for singletons
This patch prevents leaking these objects on shutdown. Change-Id: Ic4a628e0d4dc0b31716f885c1e904b6062cf3ef0 Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
Diffstat (limited to 'src/webengine/api/qquickwebenginesettings.cpp')
-rw-r--r--src/webengine/api/qquickwebenginesettings.cpp23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/webengine/api/qquickwebenginesettings.cpp b/src/webengine/api/qquickwebenginesettings.cpp
index ab0b039fc..03a812bae 100644
--- a/src/webengine/api/qquickwebenginesettings.cpp
+++ b/src/webengine/api/qquickwebenginesettings.cpp
@@ -43,6 +43,20 @@ QT_BEGIN_NAMESPACE
Q_GLOBAL_STATIC(QList<QQuickWebEngineSettingsPrivate*>, allSettings)
+class QQuickWebEngineGlobalSettings {
+ QQuickWebEngineSettings globalSettings;
+public:
+ QQuickWebEngineGlobalSettings() {
+ // globalSettings shouldn't be in that list.
+ allSettings->removeAll(globalSettings.d_func());
+ globalSettings.d_func()->coreSettings->initDefaults();
+ }
+
+ QQuickWebEngineSettings *data() { return &globalSettings; }
+};
+
+Q_GLOBAL_STATIC(QQuickWebEngineGlobalSettings, globalInstance)
+
QQuickWebEngineSettingsPrivate::QQuickWebEngineSettingsPrivate()
: coreSettings(new WebEngineSettings(this))
{
@@ -64,16 +78,9 @@ WebEngineSettings *QQuickWebEngineSettingsPrivate::fallbackSettings() const
return QQuickWebEngineSettings::globalSettings()->d_func()->coreSettings.data();
}
-
QQuickWebEngineSettings *QQuickWebEngineSettings::globalSettings()
{
- static QQuickWebEngineSettings *globals = 0;
- if (!globals) {
- globals = new QQuickWebEngineSettings;
- allSettings->removeAll(globals->d_func());
- globals->d_func()->coreSettings->initDefaults();
- }
- return globals;
+ return globalInstance()->data();
}
QQuickWebEngineSettings::~QQuickWebEngineSettings()