diff options
author | Andras Becsi <andras.becsi@digia.com> | 2014-11-20 15:42:04 +0100 |
---|---|---|
committer | Andras Becsi <andras.becsi@digia.com> | 2014-11-20 16:09:57 +0100 |
commit | d3bc22c25f0443ce19efd5524d2342c1c94e3e91 (patch) | |
tree | a80eee808cde751e6b188875532622ee54cdb3b7 /src/webengine/api/qquickwebenginesettings.cpp | |
parent | 84cf77bdf980b2e88938e94ace32865528dcc5fc (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.cpp | 23 |
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() |