Showing the changes to libraries/script-engine/src/ScriptEngines.cpp (1 of 2 files). Show all
Unified · Split
| @@ -351,6 +351,7 @@ void ScriptEngines::stopAllScripts(bool restart) { · 350 unmodified lines | ||
| 351 | 351 | reloadScript(scriptName); |
| 352 | 352 | }); |
| 353 | 353 | } |
| 354 | + it.value()->flagAsStopping(); | |
| 354 | 355 | QMetaObject::invokeMethod(it.value(), "stop"); |
| 355 | 356 | //it.value()->stop(); |
| 356 | 357 | qCDebug(scriptengine) << "stopping script..." << it.key(); |
| @@ -369,6 +370,7 @@ bool ScriptEngines::stopScript(const QString& rawScriptURL, bool restart) { · 12 unmodified lines | ||
| 369 | 370 | if (_scriptEnginesHash.contains(scriptURL)) { |
| 370 | 371 | ScriptEngine* scriptEngine = _scriptEnginesHash[scriptURL]; |
| 371 | 372 | if (restart) { |
| 373 | + scriptEngine->flagAsStopping(); | |
| 372 | 374 | auto scriptCache = DependencyManager::get<ScriptCache>(); |
| 373 | 375 | scriptCache->deleteScript(scriptURL); |
| 374 | 376 | connect(scriptEngine, &ScriptEngine::finished, this, [this](QString scriptName, ScriptEngine* engine) { |
| @@ -454,7 +456,7 @@ ScriptEngine* ScriptEngines::getScriptEngine(const QUrl& rawScriptURL) { · 79 unmodified lines | ||
| 454 | 456 | QReadLocker lock(&_scriptEnginesHashLock); |
| 455 | 457 | const QUrl scriptURL = normalizeScriptURL(rawScriptURL); |
| 456 | 458 | auto it = _scriptEnginesHash.find(scriptURL); |
| 457 | − if (it != _scriptEnginesHash.end()) { | |
| 459 | + if (it != _scriptEnginesHash.end() && !it.value()->isStopping()) { | |
| 458 | 460 | result = it.value(); |
| 459 | 461 | } |
| 460 | 462 | } |