mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-04 16:00:01 +02:00
Fix Script Editor run-on-the-fly crashing
Wait for script engine to stop before restarting.
This commit is contained in:
parent
9449ad7192
commit
48fb156e28
2 changed files with 14 additions and 2 deletions
|
@ -28,7 +28,8 @@
|
|||
|
||||
ScriptEditorWidget::ScriptEditorWidget() :
|
||||
_scriptEditorWidgetUI(new Ui::ScriptEditorWidget),
|
||||
_scriptEngine(NULL)
|
||||
_scriptEngine(NULL),
|
||||
_isRestarting(false)
|
||||
{
|
||||
_scriptEditorWidgetUI->setupUi(this);
|
||||
|
||||
|
@ -52,8 +53,9 @@ ScriptEditorWidget::~ScriptEditorWidget() {
|
|||
|
||||
void ScriptEditorWidget::onScriptModified() {
|
||||
if(_scriptEditorWidgetUI->onTheFlyCheckBox->isChecked() && isRunning()) {
|
||||
_isRestarting = true;
|
||||
setRunning(false);
|
||||
setRunning(true);
|
||||
// Script is restarted once current script instance finishes.
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -62,6 +64,13 @@ void ScriptEditorWidget::onScriptEnding() {
|
|||
_scriptEngine = NULL;
|
||||
}
|
||||
|
||||
void ScriptEditorWidget::onScriptFinished(const QString& scriptPath) {
|
||||
if (_isRestarting) {
|
||||
_isRestarting = false;
|
||||
setRunning(true);
|
||||
}
|
||||
}
|
||||
|
||||
bool ScriptEditorWidget::isModified() {
|
||||
return _scriptEditorWidgetUI->scriptEdit->document()->isModified();
|
||||
}
|
||||
|
@ -93,6 +102,7 @@ bool ScriptEditorWidget::setRunning(bool run) {
|
|||
connect(_scriptEngine, &ScriptEngine::printedMessage, this, &ScriptEditorWidget::onScriptPrint);
|
||||
connect(_scriptEngine, &ScriptEngine::scriptEnding, this, &ScriptEditorWidget::onScriptEnding);
|
||||
} else {
|
||||
connect(_scriptEngine, &ScriptEngine::finished, this, &ScriptEditorWidget::onScriptFinished);
|
||||
Application::getInstance()->stopScript(_currentScript);
|
||||
_scriptEngine = NULL;
|
||||
}
|
||||
|
|
|
@ -47,11 +47,13 @@ private slots:
|
|||
void onScriptPrint(const QString& message);
|
||||
void onScriptModified();
|
||||
void onScriptEnding();
|
||||
void onScriptFinished(const QString& scriptName);
|
||||
|
||||
private:
|
||||
Ui::ScriptEditorWidget* _scriptEditorWidgetUI;
|
||||
ScriptEngine* _scriptEngine;
|
||||
QString _currentScript;
|
||||
bool _isRestarting;
|
||||
};
|
||||
|
||||
#endif // hifi_ScriptEditorWidget_h
|
||||
|
|
Loading…
Reference in a new issue