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
160 scriptEngine->disconnect(this);160 scriptEngine->disconnect(this);
161 161
162 // Gracefully stop the engine's scripting thread162 // Gracefully stop the engine's scripting thread
163 scriptEngine->stop();163 scriptEngine->stop(false);
164 164
165 // We need to wait for the engine to be done running before we proceed, because we don't165 // We need to wait for the engine to be done running before we proceed, because we don't
166 // want any of the scripts final "scriptEnding()" or pending "update()" methods from accessing166 // want any of the scripts final "scriptEnding()" or pending "update()" methods from accessing
@@ -359,7 +359,10 @@ QStringList ScriptEngines::getRunningScripts() { · 192 unmodified lines
359 QList<QUrl> urls = _scriptEnginesHash.keys();359 QList<QUrl> urls = _scriptEnginesHash.keys();
360 QStringList result;360 QStringList result;
361 for (auto url : urls) {361 for (auto url : urls) {
362 result.append(url.toString());362 ScriptEngine* engine = getScriptEngineInternal(url);
363 if (engine) {
364 result.append(url.toString());
365 }
363 }366 }
364 return result;367 return result;
365}368}
@@ -388,7 +391,7 @@ void ScriptEngines::stopAllScripts(bool restart) { · 22 unmodified lines
388 reloadScript(scriptName);391 reloadScript(scriptName);
389 });392 });
390 }393 }
391 it.value()->stop();394 it.value()->stop(true);
392 qCDebug(scriptengine) << "stopping script..." << it.key();395 qCDebug(scriptengine) << "stopping script..." << it.key();
393 }396 }
394}397}
@@ -411,7 +414,7 @@ bool ScriptEngines::stopScript(const QString& rawScriptURL, bool restart) { · 16 unmodified lines
411 reloadScript(scriptName);414 reloadScript(scriptName);
412 });415 });
413 }416 }
414 scriptEngine->stop();417 scriptEngine->stop(false);
415 stoppedScript = true;418 stoppedScript = true;
416 qCDebug(scriptengine) << "stopping script..." << scriptURL;419 qCDebug(scriptengine) << "stopping script..." << scriptURL;
417 }420 }
@@ -459,7 +462,7 @@ ScriptEngine* ScriptEngines::loadScript(const QUrl& scriptFilename, bool isUserL · 41 unmodified lines
459 }462 }
460 463
461 auto scriptEngine = getScriptEngine(scriptUrl);464 auto scriptEngine = getScriptEngine(scriptUrl);
462 if (scriptEngine) {465 if (scriptEngine && !scriptEngine->isStopping()) {
463 return scriptEngine;466 return scriptEngine;
464 }467 }
465 468
@@ -484,19 +487,21 @@ ScriptEngine* ScriptEngines::loadScript(const QUrl& scriptFilename, bool isUserL · 18 unmodified lines
484 return scriptEngine;487 return scriptEngine;
485}488}
486 489
487ScriptEngine* ScriptEngines::getScriptEngine(const QUrl& rawScriptURL) {490ScriptEngine* ScriptEngines::getScriptEngineInternal(const QUrl& rawScriptURL) {
488 ScriptEngine* result = nullptr;491 ScriptEngine* result = nullptr;
489 {492 const QUrl scriptURL = normalizeScriptURL(rawScriptURL);
490 QReadLocker lock(&_scriptEnginesHashLock);493 auto it = _scriptEnginesHash.find(scriptURL);
491 const QUrl scriptURL = normalizeScriptURL(rawScriptURL);494 if (it != _scriptEnginesHash.end()) {
492 auto it = _scriptEnginesHash.find(scriptURL);495 result = it.value();
493 if (it != _scriptEnginesHash.end() && !it.value()->isStopping()) {
494 result = it.value();
495 }
496 }496 }
497 return result;497 return result;
498}498}
499 499
500ScriptEngine* ScriptEngines::getScriptEngine(const QUrl& rawScriptURL) {
501 QReadLocker lock(&_scriptEnginesHashLock);
502 return getScriptEngineInternal(rawScriptURL);
503}
504
500// FIXME - change to new version of ScriptCache loading notification505// FIXME - change to new version of ScriptCache loading notification
501void ScriptEngines::onScriptEngineLoaded(const QString& rawScriptURL) {506void ScriptEngines::onScriptEngineLoaded(const QString& rawScriptURL) {
502 UserActivityLogger::getInstance().loadedScript(rawScriptURL);507 UserActivityLogger::getInstance().loadedScript(rawScriptURL);