History

trying again -- frantic clicking on reload no longer appears to wedge things

Seth Alves committed 10 years ago

Commit 49769f71 parent 75329c86 files · +18 −27Browse 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+12−17
@@ -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(false);
163+ scriptEngine->stop();
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,10 +359,7 @@ QStringList ScriptEngines::getRunningScripts() { · 192 unmodified lines
359359 QList<QUrl> urls = _scriptEnginesHash.keys();
360360 QStringList result;
361361 for (auto url : urls) {
362− ScriptEngine* engine = getScriptEngineInternal(url);
363− if (engine) {
364− result.append(url.toString());
365− }
362+ result.append(url.toString());
366363 }
367364 return result;
368365 }
@@ -383,7 +380,7 @@ void ScriptEngines::stopAllScripts(bool restart) { · 14 unmodified lines
383380 // Stop and possibly restart all currently running scripts
384381 for (QHash<QUrl, ScriptEngine*>::const_iterator it = _scriptEnginesHash.constBegin();
385382 it != _scriptEnginesHash.constEnd(); it++) {
386− if (it.value()->isFinished()) {
383+ if (it.value()->isFinished() || it.value()->isStopping()) {
387384 continue;
388385 }
389386 if (restart && it.value()->isUserLoaded()) {
@@ -414,7 +411,7 @@ bool ScriptEngines::stopScript(const QString& rawScriptURL, bool restart) { · 24 unmodified lines
414411 reloadScript(scriptName);
415412 });
416413 }
417− scriptEngine->stop(false);
414+ scriptEngine->stop();
418415 stoppedScript = true;
419416 qCDebug(scriptengine) << "stopping script..." << scriptURL;
420417 }
@@ -487,21 +484,19 @@ ScriptEngine* ScriptEngines::loadScript(const QUrl& scriptFilename, bool isUserL · 66 unmodified lines
487484 return scriptEngine;
488485 }
489486
490−ScriptEngine* ScriptEngines::getScriptEngineInternal(const QUrl& rawScriptURL) {
487+ScriptEngine* ScriptEngines::getScriptEngine(const QUrl& rawScriptURL) {
491488 ScriptEngine* result = nullptr;
492− const QUrl scriptURL = normalizeScriptURL(rawScriptURL);
493− auto it = _scriptEnginesHash.find(scriptURL);
494− if (it != _scriptEnginesHash.end()) {
495− result = it.value();
489+ {
490+ QReadLocker lock(&_scriptEnginesHashLock);
491+ const QUrl scriptURL = normalizeScriptURL(rawScriptURL);
492+ auto it = _scriptEnginesHash.find(scriptURL);
493+ if (it != _scriptEnginesHash.end()) {
494+ result = it.value();
495+ }
496496 }
497497 return result;
498498 }
499499
500−ScriptEngine* ScriptEngines::getScriptEngine(const QUrl& rawScriptURL) {
501− QReadLocker lock(&_scriptEnginesHashLock);
502− return getScriptEngineInternal(rawScriptURL);
503−}
504−
505500 // FIXME - change to new version of ScriptCache loading notification
506501 void ScriptEngines::onScriptEngineLoaded(const QString& rawScriptURL) {
507502 UserActivityLogger::getInstance().loadedScript(rawScriptURL);