diff options
author | Uwe Klotz <uklotz@mixxx.org> | 2020-01-18 17:36:42 +0100 |
---|---|---|
committer | Uwe Klotz <uklotz@mixxx.org> | 2020-01-18 17:38:50 +0100 |
commit | c721cca62657959d1df6f3f8c030d76830533a35 (patch) | |
tree | 7f1f6bc31837b84bc114989c22430049783970e9 /src/skin | |
parent | cec7e3eab76846c574168e16bf3102c98f755e53 (diff) |
Replace QSharedPointer with std::shared_ptr
Diffstat (limited to 'src/skin')
-rw-r--r-- | src/skin/skincontext.cpp | 16 | ||||
-rw-r--r-- | src/skin/skincontext.h | 17 | ||||
-rw-r--r-- | src/skin/svgparser.cpp | 2 |
3 files changed, 18 insertions, 17 deletions
diff --git a/src/skin/skincontext.cpp b/src/skin/skincontext.cpp index 0991be5c03..01fe0dc402 100644 --- a/src/skin/skincontext.cpp +++ b/src/skin/skincontext.cpp @@ -13,10 +13,10 @@ SkinContext::SkinContext(UserSettingsPointer pConfig, const QString& xmlPath) : m_xmlPath(xmlPath), m_pConfig(pConfig), - m_pScriptEngine(new QScriptEngine()), - m_pScriptDebugger(new QScriptEngineDebugger()), - m_pSvgCache(new QHash<QString, QDomElement>()), - m_pSingletons(new SingletonMap()) { + m_pScriptEngine(std::make_shared<QScriptEngine>()), + m_pScriptDebugger(std::make_shared<QScriptEngineDebugger>()), + m_pSvgCache(std::make_shared<QHash<QString, QDomElement>>()), + m_pSingletons(std::make_shared<SingletonMap>()) { enableDebugger(true); // the extensions are imported once and will be passed to the children // global object as properties of the parent's global object. @@ -232,15 +232,11 @@ QScriptValue SkinContext::importScriptExtension(const QString& extensionName) { return out; } -const QSharedPointer<QScriptEngine> SkinContext::getScriptEngine() const { - return m_pScriptEngine; -} - void SkinContext::enableDebugger(bool state) const { - if (CmdlineArgs::Instance().getDeveloper() && m_pConfig != NULL && + if (CmdlineArgs::Instance().getDeveloper() && m_pConfig && m_pConfig->getValueString(ConfigKey("[ScriptDebugger]", "Enabled")) == "1") { if (state) { - m_pScriptDebugger->attachTo(m_pScriptEngine.data()); + m_pScriptDebugger->attachTo(m_pScriptEngine.get()); } else { m_pScriptDebugger->detach(); } diff --git a/src/skin/skincontext.h b/src/skin/skincontext.h index 40467689e0..a1fe9a51f3 100644 --- a/src/skin/skincontext.h +++ b/src/skin/skincontext.h @@ -1,5 +1,9 @@ #pragma once +// Use std::shared_ptr instead of QSharedPointer for shared +// class members to guarantee correct move semantics! +#include <memory> + #include <QHash> #include <QString> #include <QDomNode> @@ -8,7 +12,6 @@ #include <QDir> #include <QScriptEngineDebugger> #include <QtDebug> -#include <QSharedPointer> #include <QRegExp> #include "preferences/usersettings.h" @@ -232,7 +235,9 @@ class SkinContext { const QString& filename=QString(), int lineNumber=1) const; QScriptValue importScriptExtension(const QString& extensionName); - const QSharedPointer<QScriptEngine> getScriptEngine() const; + bool hasUncaughtScriptException() const { + return m_pScriptEngine->hasUncaughtException(); + } void enableDebugger(bool state) const; QDebug logWarning(const char* file, const int line, const QDomNode& node) const; @@ -285,15 +290,15 @@ class SkinContext { UserSettingsPointer m_pConfig; QHash<QString, QString> m_variables; - QSharedPointer<QScriptEngine> m_pScriptEngine; - QSharedPointer<QScriptEngineDebugger> m_pScriptDebugger; + std::shared_ptr<QScriptEngine> m_pScriptEngine; + std::shared_ptr<QScriptEngineDebugger> m_pScriptDebugger; QScriptValue m_parentGlobal; QRegExp m_hookRx; - QSharedPointer<QHash<QString, QDomElement>> m_pSvgCache; + std::shared_ptr<QHash<QString, QDomElement>> m_pSvgCache; // The SingletonContainer map is passed to child SkinContexts, so that all // templates in the tree can share a single map. - QSharedPointer<SingletonMap> m_pSingletons; + std::shared_ptr<SingletonMap> m_pSingletons; double m_scaleFactor; }; diff --git a/src/skin/svgparser.cpp b/src/skin/svgparser.cpp index ec1fa68dad..f1235cf911 100644 --- a/src/skin/svgparser.cpp +++ b/src/skin/svgparser.cpp @@ -153,7 +153,7 @@ QScriptValue SvgParser::evaluateTemplateExpression(const QString& expression, int lineNumber) const { QScriptValue out = m_childContext.evaluateScript( expression, m_currentFile, lineNumber); - if (m_childContext.getScriptEngine()->hasUncaughtException()) { + if (m_childContext.hasUncaughtScriptException()) { // return an empty string as replacement for the in-attribute expression return QScriptValue(); } else { |