History

trying to mimic previous behavior more closely

Seth Alves committed 10 years ago

Commit b0ce65e1 parent 04bd27e6 files · +29 −21Browse files

Showing the changes to libraries/script-engine/src/ScriptEngines.cpp (1 of 6 files). Show all

Unified · Split

libraries/script-engine/src/ScriptEngines.cpp+18−13
@@ -160,7 +160,7 @@ void ScriptEngines::shutdownScripting() { · 159 unmodified lines
160160 scriptEngine->disconnect(this);
161161
162162 // Gracefully stop the engine's scripting thread
163− scriptEngine->stop();
163+ scriptEngine->stop(false);
164164
165165 // We need to wait for the engine to be done running before we proceed, because we don't
166166 // want any of the scripts final "scriptEnding()" or pending "update()" methods from accessing
@@ -359,7 +359,10 @@ QStringList ScriptEngines::getRunningScripts() { · 192 unmodified lines
359359 QList<QUrl> urls = _scriptEnginesHash.keys();
360360 QStringList result;
361361 for (auto url : urls) {
362− result.append(url.toString());
362+ ScriptEngine* engine = getScriptEngineInternal(url);
363+ if (engine) {
364+ result.append(url.toString());
365+ }
363366 }
364367 return result;
365368 }
@@ -388,7 +391,7 @@ void ScriptEngines::stopAllScripts(bool restart) { · 22 unmodified lines
388391 reloadScript(scriptName);
389392 });
390393 }
391− it.value()->stop();
394+ it.value()->stop(true);
392395 qCDebug(scriptengine) << "stopping script..." << it.key();
393396 }
394397 }
@@ -411,7 +414,7 @@ bool ScriptEngines::stopScript(const QString& rawScriptURL, bool restart) { · 16 unmodified lines
411414 reloadScript(scriptName);
412415 });
413416 }
414− scriptEngine->stop();
417+ scriptEngine->stop(false);
415418 stoppedScript = true;
416419 qCDebug(scriptengine) << "stopping script..." << scriptURL;
417420 }
@@ -459,7 +462,7 @@ ScriptEngine* ScriptEngines::loadScript(const QUrl& scriptFilename, bool isUserL · 41 unmodified lines
459462 }
460463
461464 auto scriptEngine = getScriptEngine(scriptUrl);
462− if (scriptEngine) {
465+ if (scriptEngine && !scriptEngine->isStopping()) {
463466 return scriptEngine;
464467 }
465468
@@ -484,19 +487,21 @@ ScriptEngine* ScriptEngines::loadScript(const QUrl& scriptFilename, bool isUserL · 18 unmodified lines
484487 return scriptEngine;
485488 }
486489
487−ScriptEngine* ScriptEngines::getScriptEngine(const QUrl& rawScriptURL) {
490+ScriptEngine* ScriptEngines::getScriptEngineInternal(const QUrl& rawScriptURL) {
488491 ScriptEngine* result = nullptr;
489− {
490− QReadLocker lock(&_scriptEnginesHashLock);
491− const QUrl scriptURL = normalizeScriptURL(rawScriptURL);
492− auto it = _scriptEnginesHash.find(scriptURL);
493− if (it != _scriptEnginesHash.end() && !it.value()->isStopping()) {
494− result = it.value();
495− }
492+ const QUrl scriptURL = normalizeScriptURL(rawScriptURL);
493+ auto it = _scriptEnginesHash.find(scriptURL);
494+ if (it != _scriptEnginesHash.end()) {
495+ result = it.value();
496496 }
497497 return result;
498498 }
499499
500+ScriptEngine* ScriptEngines::getScriptEngine(const QUrl& rawScriptURL) {
501+ QReadLocker lock(&_scriptEnginesHashLock);
502+ return getScriptEngineInternal(rawScriptURL);
503+}
504+
500505 // FIXME - change to new version of ScriptCache loading notification
501506 void ScriptEngines::onScriptEngineLoaded(const QString& rawScriptURL) {
502507 UserActivityLogger::getInstance().loadedScript(rawScriptURL);