Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 5 files). Show all
Unified · Split
| @@ -164,7 +164,9 @@ ScriptEnginePointer scriptEngineFactory(ScriptEngine::Context context, · 163 unmodified lines | ||
| 164 | 164 | const QString& fileNameString) { |
| 165 | 165 | ScriptEngine* engine = new ScriptEngine(context, scriptContents, fileNameString); |
| 166 | 166 | ScriptEnginePointer engineSP = ScriptEnginePointer(engine); |
| 167 | − DependencyManager::get<ScriptEngines>()->addScriptEngine(qSharedPointerCast<ScriptEngine>(engineSP)); | |
| 167 | + auto scriptEngines = DependencyManager::get<ScriptEngines>(); | |
| 168 | + scriptEngines->addScriptEngine(qSharedPointerCast<ScriptEngine>(engineSP)); | |
| 169 | + engine->setScriptEngines(scriptEngines); | |
| 168 | 170 | return engineSP; |
| 169 | 171 | } |
| 170 | 172 | |
| @@ -259,7 +261,7 @@ bool ScriptEngine::isDebugMode() const { · 88 unmodified lines | ||
| 259 | 261 | } |
| 260 | 262 | |
| 261 | 263 | ScriptEngine::~ScriptEngine() { |
| 262 | − auto scriptEngines = DependencyManager::get<ScriptEngines>(); | |
| 264 | + QSharedPointer<ScriptEngines> scriptEngines(_scriptEngines); | |
| 263 | 265 | if (scriptEngines) { |
| 264 | 266 | scriptEngines->removeScriptEngine(qSharedPointerCast<ScriptEngine>(sharedFromThis())); |
| 265 | 267 | } |
| @@ -1012,7 +1014,8 @@ QScriptValue ScriptEngine::evaluateInClosure(const QScriptValue& closure, const · 746 unmodified lines | ||
| 1012 | 1014 | } |
| 1013 | 1015 | |
| 1014 | 1016 | QScriptValue ScriptEngine::evaluate(const QString& sourceCode, const QString& fileName, int lineNumber) { |
| 1015 | − if (DependencyManager::get<ScriptEngines>()->isStopped()) { | |
| 1017 | + QSharedPointer<ScriptEngines> scriptEngines(_scriptEngines); | |
| 1018 | + if (!scriptEngines || scriptEngines->isStopped()) { | |
| 1016 | 1019 | return QScriptValue(); // bail early |
| 1017 | 1020 | } |
| 1018 | 1021 | |
| @@ -1062,7 +1065,8 @@ void ScriptEngine::run() { · 43 unmodified lines | ||
| 1062 | 1065 | auto name = filenameParts.size() > 0 ? filenameParts[filenameParts.size() - 1] : "unknown"; |
| 1063 | 1066 | PROFILE_SET_THREAD_NAME("Script: " + name); |
| 1064 | 1067 | |
| 1065 | − if (DependencyManager::get<ScriptEngines>()->isStopped()) { | |
| 1068 | + QSharedPointer<ScriptEngines> scriptEngines(_scriptEngines); | |
| 1069 | + if (!scriptEngines || scriptEngines->isStopped()) { | |
| 1066 | 1070 | return; // bail early - avoid setting state in init(), as evaluate() will bail too |
| 1067 | 1071 | } |
| 1068 | 1072 | |
| @@ -1319,7 +1323,7 @@ void ScriptEngine::updateMemoryCost(const qint64& deltaSize) { · 250 unmodified lines | ||
| 1319 | 1323 | |
| 1320 | 1324 | void ScriptEngine::timerFired() { |
| 1321 | 1325 | { |
| 1322 | − auto engine = DependencyManager::get<ScriptEngines>(); | |
| 1326 | + QSharedPointer<ScriptEngines> engine(_scriptEngines); | |
| 1323 | 1327 | if (!engine || engine->isStopped()) { |
| 1324 | 1328 | scriptWarningMessage("Script.timerFired() while shutting down is ignored... parent script:" + getFilename()); |
| 1325 | 1329 | return; // bail early |
| @@ -1373,7 +1377,8 @@ QObject* ScriptEngine::setupTimerWithInterval(const QScriptValue& function, int · 47 unmodified lines | ||
| 1373 | 1377 | } |
| 1374 | 1378 | |
| 1375 | 1379 | QObject* ScriptEngine::setInterval(const QScriptValue& function, int intervalMS) { |
| 1376 | − if (DependencyManager::get<ScriptEngines>()->isStopped()) { | |
| 1380 | + QSharedPointer<ScriptEngines> scriptEngines(_scriptEngines); | |
| 1381 | + if (!scriptEngines || scriptEngines->isStopped()) { | |
| 1377 | 1382 | scriptWarningMessage("Script.setInterval() while shutting down is ignored... parent script:" + getFilename()); |
| 1378 | 1383 | return NULL; // bail early |
| 1379 | 1384 | } |
| @@ -1382,7 +1387,8 @@ QObject* ScriptEngine::setInterval(const QScriptValue& function, int intervalMS) · 2 unmodified lines | ||
| 1382 | 1387 | } |
| 1383 | 1388 | |
| 1384 | 1389 | QObject* ScriptEngine::setTimeout(const QScriptValue& function, int timeoutMS) { |
| 1385 | − if (DependencyManager::get<ScriptEngines>()->isStopped()) { | |
| 1390 | + QSharedPointer<ScriptEngines> scriptEngines(_scriptEngines); | |
| 1391 | + if (!scriptEngines || scriptEngines->isStopped()) { | |
| 1386 | 1392 | scriptWarningMessage("Script.setTimeout() while shutting down is ignored... parent script:" + getFilename()); |
| 1387 | 1393 | return NULL; // bail early |
| 1388 | 1394 | } |
| @@ -1813,7 +1819,8 @@ void ScriptEngine::include(const QStringList& includeFiles, QScriptValue callbac · 424 unmodified lines | ||
| 1813 | 1819 | if (!IS_THREADSAFE_INVOCATION(thread(), __FUNCTION__)) { |
| 1814 | 1820 | return; |
| 1815 | 1821 | } |
| 1816 | − if (DependencyManager::get<ScriptEngines>()->isStopped()) { | |
| 1822 | + QSharedPointer<ScriptEngines> scriptEngines(_scriptEngines); | |
| 1823 | + if (!scriptEngines || scriptEngines->isStopped()) { | |
| 1817 | 1824 | scriptWarningMessage("Script.include() while shutting down is ignored... includeFiles:" |
| 1818 | 1825 | + includeFiles.join(",") + "parent script:" + getFilename()); |
| 1819 | 1826 | return; // bail early |
| @@ -1907,7 +1914,8 @@ void ScriptEngine::include(const QStringList& includeFiles, QScriptValue callbac · 87 unmodified lines | ||
| 1907 | 1914 | } |
| 1908 | 1915 | |
| 1909 | 1916 | void ScriptEngine::include(const QString& includeFile, QScriptValue callback) { |
| 1910 | − if (DependencyManager::get<ScriptEngines>()->isStopped()) { | |
| 1917 | + QSharedPointer<ScriptEngines> scriptEngines(_scriptEngines); | |
| 1918 | + if (!scriptEngines || scriptEngines->isStopped()) { | |
| 1911 | 1919 | scriptWarningMessage("Script.include() while shutting down is ignored... includeFile:" |
| 1912 | 1920 | + includeFile + "parent script:" + getFilename()); |
| 1913 | 1921 | return; // bail early |
| @@ -1925,7 +1933,8 @@ void ScriptEngine::load(const QString& loadFile) { · 11 unmodified lines | ||
| 1925 | 1933 | if (!IS_THREADSAFE_INVOCATION(thread(), __FUNCTION__)) { |
| 1926 | 1934 | return; |
| 1927 | 1935 | } |
| 1928 | − if (DependencyManager::get<ScriptEngines>()->isStopped()) { | |
| 1936 | + QSharedPointer<ScriptEngines> scriptEngines(_scriptEngines); | |
| 1937 | + if (!scriptEngines || scriptEngines->isStopped()) { | |
| 1929 | 1938 | scriptWarningMessage("Script.load() while shutting down is ignored... loadFile:" |
| 1930 | 1939 | + loadFile + "parent script:" + getFilename()); |
| 1931 | 1940 | return; // bail early |
| @@ -2073,10 +2082,11 @@ void ScriptEngine::loadEntityScript(const EntityItemID& entityID, const QString& · 141 unmodified lines | ||
| 2073 | 2082 | } |
| 2074 | 2083 | PROFILE_RANGE(script, __FUNCTION__); |
| 2075 | 2084 | |
| 2076 | − if (isStopping() || DependencyManager::get<ScriptEngines>()->isStopped()) { | |
| 2085 | + QSharedPointer<ScriptEngines> scriptEngines(_scriptEngines); | |
| 2086 | + if (isStopping() || !scriptEngines || scriptEngines->isStopped()) { | |
| 2077 | 2087 | qCDebug(scriptengine) << "loadEntityScript.start " << entityID.toString() |
| 2078 | 2088 | << " but isStopping==" << isStopping() |
| 2079 | − << " || engines->isStopped==" << DependencyManager::get<ScriptEngines>()->isStopped(); | |
| 2089 | + << " || engines->isStopped==" << scriptEngines->isStopped(); | |
| 2080 | 2090 | return; |
| 2081 | 2091 | } |
| 2082 | 2092 | |