summaryrefslogtreecommitdiffstats
path: root/src/skin
diff options
context:
space:
mode:
authorUwe Klotz <uklotz@mixxx.org>2020-01-18 17:36:42 +0100
committerUwe Klotz <uklotz@mixxx.org>2020-01-18 17:38:50 +0100
commitc721cca62657959d1df6f3f8c030d76830533a35 (patch)
tree7f1f6bc31837b84bc114989c22430049783970e9 /src/skin
parentcec7e3eab76846c574168e16bf3102c98f755e53 (diff)
Replace QSharedPointer with std::shared_ptr
Diffstat (limited to 'src/skin')
-rw-r--r--src/skin/skincontext.cpp16
-rw-r--r--src/skin/skincontext.h17
-rw-r--r--src/skin/svgparser.cpp2
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 {