From 177a94b9a990a79056d090c9aaa3ef7fd5cfc5c2 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Thu, 6 Dec 2018 14:01:29 -0800 Subject: [PATCH] fix realod all scripts functionality --- libraries/script-engine/src/ScriptEngines.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libraries/script-engine/src/ScriptEngines.cpp b/libraries/script-engine/src/ScriptEngines.cpp index 399ccf1919..e198502b3d 100644 --- a/libraries/script-engine/src/ScriptEngines.cpp +++ b/libraries/script-engine/src/ScriptEngines.cpp @@ -31,6 +31,8 @@ static const QUrl DEFAULT_SCRIPTS_LOCATION { "file:///~//defaultScripts.js" }; // Using a QVariantList so this is human-readable in the settings file static Setting::Handle runningScriptsHandle(SETTINGS_KEY, { QVariant(DEFAULT_SCRIPTS_LOCATION) }); +const int RELOAD_ALL_SCRIPTS_TIMEOUT = 1000; + ScriptsModel& getScriptsModel() { static ScriptsModel scriptsModel; @@ -386,15 +388,10 @@ void ScriptEngines::stopAllScripts(bool restart) { // queue user scripts if restarting if (restart && scriptEngine->isUserLoaded()) { _isReloading = true; - bool lastScript = (it == _scriptEnginesHash.constEnd() - 1); ScriptEngine::Type type = scriptEngine->getType(); - connect(scriptEngine.data(), &ScriptEngine::finished, this, [this, type, lastScript] (QString scriptName) { + connect(scriptEngine.data(), &ScriptEngine::finished, this, [this, type] (QString scriptName) { reloadScript(scriptName, true)->setType(type); - - if (lastScript) { - _isReloading = false; - } }); } @@ -404,6 +401,9 @@ void ScriptEngines::stopAllScripts(bool restart) { if (restart) { qCDebug(scriptengine) << "stopAllScripts -- emitting scriptsReloading"; + QTimer::singleShot(RELOAD_ALL_SCRIPTS_TIMEOUT, this, [&] { + _isReloading = false; + }); emit scriptsReloading(); } }