code review

This commit is contained in:
Seth Alves 2017-09-15 10:08:35 -07:00
parent cf2979dc78
commit 8a49edbecb
16 changed files with 54 additions and 51 deletions

View file

@ -88,7 +88,7 @@ private:
void encodeFrameOfZeros(QByteArray& encodedZeros);
void computeLoudness(const QByteArray* decodedBuffer, QSharedPointer<ScriptableAvatar>);
QSharedPointer<ScriptEngine> _scriptEngine;
ScriptEnginePointer _scriptEngine;
EntityEditPacketSender _entityEditSender;
EntityTreeHeadlessViewer _entityViewer;

View file

@ -72,7 +72,7 @@ private:
bool _shuttingDown { false };
static int _entitiesScriptEngineCount;
QSharedPointer<ScriptEngine> _entitiesScriptEngine;
ScriptEnginePointer _entitiesScriptEngine;
EntityEditPacketSender _entityEditSender;
EntityTreeHeadlessViewer _entityViewer;

View file

@ -963,7 +963,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
DependencyManager::get<AddressManager>().data(), &AddressManager::storeCurrentAddress);
auto scriptEngines = DependencyManager::get<ScriptEngines>().data();
scriptEngines->registerScriptInitializer([this](QSharedPointer<ScriptEngine> engine){
scriptEngines->registerScriptInitializer([this](ScriptEnginePointer engine){
registerScriptEngineWithApplicationServices(engine);
});
@ -5930,7 +5930,7 @@ int Application::processOctreeStats(ReceivedMessage& message, SharedNodePointer
void Application::packetSent(quint64 length) {
}
void Application::registerScriptEngineWithApplicationServices(QSharedPointer<ScriptEngine> scriptEngine) {
void Application::registerScriptEngineWithApplicationServices(ScriptEnginePointer scriptEngine) {
scriptEngine->setEmitScriptUpdatesFunction([this]() {
SharedNodePointer entityServerNode = DependencyManager::get<NodeList>()->soloNodeOfType(NodeType::EntityServer);
@ -5944,7 +5944,7 @@ void Application::registerScriptEngineWithApplicationServices(QSharedPointer<Scr
entityScriptingInterface->setEntityTree(getEntities()->getTree());
// give the script engine to the RecordingScriptingInterface for its callbacks
DependencyManager::get<RecordingScriptingInterface>()->setScriptEngine(QSharedPointer<ScriptEngine>(scriptEngine));
DependencyManager::get<RecordingScriptingInterface>()->setScriptEngine(scriptEngine);
if (property(hifi::properties::TEST).isValid()) {
scriptEngine->registerGlobalObject("Test", TestScriptingInterface::getInstance());

View file

@ -218,7 +218,7 @@ public:
NodeToOctreeSceneStats* getOcteeSceneStats() { return &_octreeServerSceneStats; }
virtual controller::ScriptingInterface* getControllerScriptingInterface() { return _controllerScriptingInterface; }
virtual void registerScriptEngineWithApplicationServices(QSharedPointer<ScriptEngine> scriptEngine) override;
virtual void registerScriptEngineWithApplicationServices(ScriptEnginePointer scriptEngine) override;
virtual void copyCurrentViewFrustum(ViewFrustum& viewOut) const override { copyDisplayViewFrustum(viewOut); }
virtual QThread* getMainThread() override { return thread(); }

View file

@ -262,7 +262,7 @@ void MyAvatar::setDominantHand(const QString& hand) {
}
}
void MyAvatar::registerMetaTypes(QSharedPointer<BaseScriptEngine> engine) {
void MyAvatar::registerMetaTypes(ScriptEnginePointer engine) {
QScriptValue value = engine->newQObject(this, QScriptEngine::QtOwnership, QScriptEngine::ExcludeDeleteLater | QScriptEngine::ExcludeChildObjects);
engine->globalObject().setProperty("MyAvatar", value);

View file

@ -19,7 +19,7 @@
#include <SettingHandle.h>
#include <Rig.h>
#include <Sound.h>
#include <BaseScriptEngine.h>
#include <ScriptEngine.h>
#include <controllers/Pose.h>
#include <controllers/Actions.h>
@ -170,7 +170,7 @@ public:
~MyAvatar();
void instantiableAvatar() override {};
void registerMetaTypes(QSharedPointer<BaseScriptEngine> engine);
void registerMetaTypes(ScriptEnginePointer engine);
virtual void simulateAttachments(float deltaTime) override;

View file

@ -61,7 +61,7 @@ void _writeLines(const QString& filename, const QList<QString>& lines) {
QTextStream(&file) << json;
}
JSConsole::JSConsole(QWidget* parent, const QSharedPointer<ScriptEngine>& scriptEngine) :
JSConsole::JSConsole(QWidget* parent, const ScriptEnginePointer& scriptEngine) :
QWidget(parent),
_ui(new Ui::Console),
_currentCommandInHistory(NO_CURRENT_HISTORY_COMMAND),
@ -97,7 +97,7 @@ JSConsole::~JSConsole() {
delete _ui;
}
void JSConsole::setScriptEngine(const QSharedPointer<ScriptEngine>& scriptEngine) {
void JSConsole::setScriptEngine(const ScriptEnginePointer& scriptEngine) {
if (_scriptEngine == scriptEngine && scriptEngine != NULL) {
return;
}

View file

@ -30,10 +30,10 @@ const int CONSOLE_HEIGHT = 200;
class JSConsole : public QWidget {
Q_OBJECT
public:
JSConsole(QWidget* parent, const QSharedPointer<ScriptEngine>& scriptEngine = QSharedPointer<ScriptEngine>());
JSConsole(QWidget* parent, const ScriptEnginePointer& scriptEngine = ScriptEnginePointer());
~JSConsole();
void setScriptEngine(const QSharedPointer<ScriptEngine>& scriptEngine = QSharedPointer<ScriptEngine>());
void setScriptEngine(const ScriptEnginePointer& scriptEngine = ScriptEnginePointer());
void clear();
public slots:
@ -66,7 +66,7 @@ private:
QString _savedHistoryFilename;
QList<QString> _commandHistory;
QString _rootCommand;
QSharedPointer<ScriptEngine> _scriptEngine;
ScriptEnginePointer _scriptEngine;
static const QString _consoleFileName;
};

View file

@ -29,7 +29,7 @@ public:
private:
std::unique_ptr<JSConsole> _console;
QSharedPointer<ScriptEngine> _engine;
ScriptEnginePointer _engine;
};
#endif

View file

@ -181,7 +181,7 @@ private:
QVector<EntityItemID> _currentEntitiesInside;
bool _wantScripts;
QSharedPointer<ScriptEngine> _entitiesScriptEngine;
ScriptEnginePointer _entitiesScriptEngine;
void playEntityCollisionSound(const EntityItemPointer& entity, const Collision& collision);

View file

@ -12,13 +12,13 @@
#ifndef hifi_AbstractScriptingServicesInterface_h
#define hifi_AbstractScriptingServicesInterface_h
class ScriptEngine;
#include <BaseScriptEngine.h>
/// Interface provided by Application to other objects that need access to scripting services of the application
class AbstractScriptingServicesInterface {
public:
/// Registers application specific services with a script engine.
virtual void registerScriptEngineWithApplicationServices(QSharedPointer<ScriptEngine> scriptEngine) = 0;
virtual void registerScriptEngineWithApplicationServices(ScriptEnginePointer scriptEngine) = 0;
};

View file

@ -153,11 +153,11 @@ QString ScriptEngine::logException(const QScriptValue& exception) {
return message;
}
QSharedPointer<ScriptEngine> scriptEngineFactory(ScriptEngine::Context context,
ScriptEnginePointer scriptEngineFactory(ScriptEngine::Context context,
const QString& scriptContents,
const QString& fileNameString) {
ScriptEngine* engine = new ScriptEngine(context, scriptContents, fileNameString);
QSharedPointer<ScriptEngine> engineSP = QSharedPointer<ScriptEngine>(engine);
ScriptEnginePointer engineSP = ScriptEnginePointer(engine);
DependencyManager::get<ScriptEngines>()->addScriptEngine(qSharedPointerCast<ScriptEngine>(engineSP));
return engineSP;
}
@ -537,7 +537,7 @@ static void scriptableResourceFromScriptValue(const QScriptValue& value, Scripta
resource = static_cast<ScriptableResourceRawPtr>(value.toQObject());
}
static QScriptValue createScriptableResourcePrototype(QSharedPointer<ScriptEngine> engine) {
static QScriptValue createScriptableResourcePrototype(ScriptEnginePointer engine) {
auto prototype = engine->newObject();
// Expose enum State to JS/QML via properties

View file

@ -244,7 +244,7 @@ signals:
void errorLoadingScript(const QString& scriptFilename);
void update(float deltaTime);
void scriptEnding();
void finished(const QString& fileNameString, QSharedPointer<ScriptEngine>);
void finished(const QString& fileNameString, ScriptEnginePointer);
void cleanupMenuItem(const QString& menuItemString);
void printedMessage(const QString& message, const QString& scriptName);
void errorMessage(const QString& message, const QString& scriptName);
@ -334,8 +334,8 @@ protected:
QSharedPointer<ScriptEngines> _scriptEngines;
};
QSharedPointer<ScriptEngine> scriptEngineFactory(ScriptEngine::Context context,
const QString& scriptContents,
const QString& fileNameString);
ScriptEnginePointer scriptEngineFactory(ScriptEngine::Context context,
const QString& scriptContents,
const QString& fileNameString);
#endif // hifi_ScriptEngine_h

View file

@ -137,14 +137,14 @@ void ScriptEngines::registerScriptInitializer(ScriptInitializer initializer) {
_scriptInitializers.push_back(initializer);
}
void ScriptEngines::addScriptEngine(QSharedPointer<ScriptEngine> engine) {
void ScriptEngines::addScriptEngine(ScriptEnginePointer engine) {
if (!_isStopped) {
QMutexLocker locker(&_allScriptsMutex);
_allKnownScriptEngines.insert(engine);
}
}
void ScriptEngines::removeScriptEngine(QSharedPointer<ScriptEngine> engine) {
void ScriptEngines::removeScriptEngine(ScriptEnginePointer engine) {
// If we're not already in the middle of stopping all scripts, then we should remove ourselves
// from the list of running scripts. We don't do this if we're in the process of stopping all scripts
// because that method removes scripts from its list as it iterates them
@ -159,9 +159,9 @@ void ScriptEngines::shutdownScripting() {
QMutexLocker locker(&_allScriptsMutex);
qCDebug(scriptengine) << "Stopping all scripts.... currently known scripts:" << _allKnownScriptEngines.size();
QMutableSetIterator<QSharedPointer<ScriptEngine>> i(_allKnownScriptEngines);
QMutableSetIterator<ScriptEnginePointer> i(_allKnownScriptEngines);
while (i.hasNext()) {
QSharedPointer<ScriptEngine> scriptEngine = i.next();
ScriptEnginePointer scriptEngine = i.next();
QString scriptName = scriptEngine->getFilename();
// NOTE: typically all script engines are running. But there's at least one known exception to this, the
@ -364,9 +364,9 @@ void ScriptEngines::stopAllScripts(bool restart) {
_isReloading = true;
}
for (QHash<QUrl, QSharedPointer<ScriptEngine>>::const_iterator it = _scriptEnginesHash.constBegin();
for (QHash<QUrl, ScriptEnginePointer>::const_iterator it = _scriptEnginesHash.constBegin();
it != _scriptEnginesHash.constEnd(); it++) {
QSharedPointer<ScriptEngine> scriptEngine = it.value();
ScriptEnginePointer scriptEngine = it.value();
// skip already stopped scripts
if (scriptEngine->isFinished() || scriptEngine->isStopping()) {
continue;
@ -412,12 +412,12 @@ bool ScriptEngines::stopScript(const QString& rawScriptURL, bool restart) {
QReadLocker lock(&_scriptEnginesHashLock);
if (_scriptEnginesHash.contains(scriptURL)) {
QSharedPointer<ScriptEngine> scriptEngine = _scriptEnginesHash[scriptURL];
ScriptEnginePointer scriptEngine = _scriptEnginesHash[scriptURL];
if (restart) {
auto scriptCache = DependencyManager::get<ScriptCache>();
scriptCache->deleteScript(scriptURL);
connect(scriptEngine.data(), &ScriptEngine::finished,
this, [this](QString scriptName, QSharedPointer<ScriptEngine> engine) {
this, [this](QString scriptName, ScriptEnginePointer engine) {
reloadScript(scriptName);
});
}
@ -445,11 +445,11 @@ void ScriptEngines::reloadAllScripts() {
stopAllScripts(true);
}
QSharedPointer<ScriptEngine> ScriptEngines::loadScript(const QUrl& scriptFilename, bool isUserLoaded, bool loadScriptFromEditor,
ScriptEnginePointer ScriptEngines::loadScript(const QUrl& scriptFilename, bool isUserLoaded, bool loadScriptFromEditor,
bool activateMainWindow, bool reload) {
if (thread() != QThread::currentThread()) {
QSharedPointer<ScriptEngine> result { nullptr };
BLOCKING_INVOKE_METHOD(this, "loadScript", Q_RETURN_ARG(QSharedPointer<ScriptEngine>, result),
ScriptEnginePointer result { nullptr };
BLOCKING_INVOKE_METHOD(this, "loadScript", Q_RETURN_ARG(ScriptEnginePointer, result),
Q_ARG(QUrl, scriptFilename),
Q_ARG(bool, isUserLoaded),
Q_ARG(bool, loadScriptFromEditor),
@ -475,7 +475,7 @@ QSharedPointer<ScriptEngine> ScriptEngines::loadScript(const QUrl& scriptFilenam
return scriptEngine;
}
scriptEngine = QSharedPointer<ScriptEngine>(new ScriptEngine(_context, NO_SCRIPT, "about:" + scriptFilename.fileName()));
scriptEngine = ScriptEnginePointer(new ScriptEngine(_context, NO_SCRIPT, "about:" + scriptFilename.fileName()));
addScriptEngine(scriptEngine);
scriptEngine->setUserLoaded(isUserLoaded);
@ -493,8 +493,8 @@ QSharedPointer<ScriptEngine> ScriptEngines::loadScript(const QUrl& scriptFilenam
return scriptEngine;
}
QSharedPointer<ScriptEngine> ScriptEngines::getScriptEngine(const QUrl& rawScriptURL) {
QSharedPointer<ScriptEngine> result;
ScriptEnginePointer ScriptEngines::getScriptEngine(const QUrl& rawScriptURL) {
ScriptEnginePointer result;
{
QReadLocker lock(&_scriptEnginesHashLock);
const QUrl scriptURL = normalizeScriptURL(rawScriptURL);
@ -510,7 +510,7 @@ QSharedPointer<ScriptEngine> ScriptEngines::getScriptEngine(const QUrl& rawScrip
void ScriptEngines::onScriptEngineLoaded(const QString& rawScriptURL) {
UserActivityLogger::getInstance().loadedScript(rawScriptURL);
QSharedPointer<BaseScriptEngine> baseScriptEngine = qobject_cast<ScriptEngine*>(sender())->sharedFromThis();
QSharedPointer<ScriptEngine> scriptEngine = qSharedPointerCast<ScriptEngine>(baseScriptEngine);
ScriptEnginePointer scriptEngine = qSharedPointerCast<ScriptEngine>(baseScriptEngine);
launchScriptEngine(scriptEngine);
@ -526,7 +526,7 @@ void ScriptEngines::onScriptEngineLoaded(const QString& rawScriptURL) {
emit scriptCountChanged();
}
void ScriptEngines::launchScriptEngine(QSharedPointer<ScriptEngine> scriptEngine) {
void ScriptEngines::launchScriptEngine(ScriptEnginePointer scriptEngine) {
connect(scriptEngine.data(), &ScriptEngine::finished, this, &ScriptEngines::onScriptFinished, Qt::DirectConnection);
connect(scriptEngine.data(), &ScriptEngine::loadScript, [&](const QString& scriptName, bool userLoaded) {
loadScript(scriptName, userLoaded);
@ -552,7 +552,7 @@ void ScriptEngines::launchScriptEngine(QSharedPointer<ScriptEngine> scriptEngine
}
}
void ScriptEngines::onScriptFinished(const QString& rawScriptURL, QSharedPointer<ScriptEngine> engine) {
void ScriptEngines::onScriptFinished(const QString& rawScriptURL, ScriptEnginePointer engine) {
bool removed = false;
{
QWriteLocker lock(&_scriptEnginesHashLock);

View file

@ -33,7 +33,7 @@ class ScriptEngines : public QObject, public Dependency {
Q_PROPERTY(ScriptsModelFilter* scriptsModelFilter READ scriptsModelFilter CONSTANT)
public:
using ScriptInitializer = std::function<void(QSharedPointer<ScriptEngine>)>;
using ScriptInitializer = std::function<void(ScriptEnginePointer)>;
ScriptEngines(ScriptEngine::Context context);
void registerScriptInitializer(ScriptInitializer initializer);
@ -45,7 +45,7 @@ public:
void loadDefaultScripts();
void setScriptsLocation(const QString& scriptsLocation);
QStringList getRunningScripts();
QSharedPointer<ScriptEngine> getScriptEngine(const QUrl& scriptHash);
ScriptEnginePointer getScriptEngine(const QUrl& scriptHash);
ScriptsModel* scriptsModel() { return &_scriptsModel; };
ScriptsModelFilter* scriptsModelFilter() { return &_scriptsModelFilter; };
@ -53,7 +53,7 @@ public:
QString getDefaultScriptsLocation() const;
Q_INVOKABLE void loadOneScript(const QString& scriptFilename);
Q_INVOKABLE QSharedPointer<ScriptEngine> loadScript(const QUrl& scriptFilename = QString(),
Q_INVOKABLE ScriptEnginePointer loadScript(const QUrl& scriptFilename = QString(),
bool isUserLoaded = true, bool loadScriptFromEditor = false, bool activateMainWindow = false, bool reload = false);
Q_INVOKABLE bool stopScript(const QString& scriptHash, bool restart = false);
@ -72,7 +72,7 @@ public:
void shutdownScripting();
bool isStopped() const { return _isStopped; }
void addScriptEngine(QSharedPointer<ScriptEngine>);
void addScriptEngine(ScriptEnginePointer);
signals:
void scriptCountChanged();
@ -94,21 +94,21 @@ public slots:
void onClearDebugWindow();
protected slots:
void onScriptFinished(const QString& fileNameString, QSharedPointer<ScriptEngine> engine);
void onScriptFinished(const QString& fileNameString, ScriptEnginePointer engine);
protected:
friend class ScriptEngine;
void reloadScript(const QString& scriptName) { loadScript(scriptName, true, false, false, true); }
void removeScriptEngine(QSharedPointer<ScriptEngine>);
void removeScriptEngine(ScriptEnginePointer);
void onScriptEngineLoaded(const QString& scriptFilename);
void onScriptEngineError(const QString& scriptFilename);
void launchScriptEngine(QSharedPointer<ScriptEngine>);
void launchScriptEngine(ScriptEnginePointer);
ScriptEngine::Context _context;
QReadWriteLock _scriptEnginesHashLock;
QHash<QUrl, QSharedPointer<ScriptEngine>> _scriptEnginesHash;
QSet<QSharedPointer<ScriptEngine>> _allKnownScriptEngines;
QHash<QUrl, ScriptEnginePointer> _scriptEnginesHash;
QSet<ScriptEnginePointer> _allKnownScriptEngines;
QMutex _allScriptsMutex;
std::list<ScriptInitializer> _scriptInitializers;
mutable Setting::Handle<QString> _scriptsLocationHandle;

View file

@ -16,6 +16,9 @@
#include <QtCore/QDebug>
#include <QtScript/QScriptEngine>
class ScriptEngine;
using ScriptEnginePointer = QSharedPointer<ScriptEngine>;
// common base class for extending QScriptEngine itself
class BaseScriptEngine : public QScriptEngine, public QEnableSharedFromThis<BaseScriptEngine> {
Q_OBJECT