History

Fixed script editor crash when script calls Script.stop(). Also made the processEraseMessage wait until it can lock to ensure particles are deleted.

barnold1953 committed 12 years ago

Commit 5013c8c1 parent 4036f924 files · +22 −10Browse files

Showing the changes to interface/src/ui/ScriptEditorWidget.cpp (1 of 4 files). Show all

Unified · Split

interface/src/ui/ScriptEditorWidget.cpp+10−0
@@ -57,6 +57,11 @@ void ScriptEditorWidget::onScriptModified() { · 56 unmodified lines
57 }57 }
58}58}
59 59
60void ScriptEditorWidget::onScriptEnding() {
61 // signals will automatically be disonnected when the _scriptEngine is deleted later
62 _scriptEngine = NULL;
63}
64
60bool ScriptEditorWidget::isModified() {65bool ScriptEditorWidget::isModified() {
61 return _scriptEditorWidgetUI->scriptEdit->document()->isModified();66 return _scriptEditorWidgetUI->scriptEdit->document()->isModified();
62}67}
@@ -69,11 +74,13 @@ bool ScriptEditorWidget::setRunning(bool run) { · 6 unmodified lines
69 if (run && !save()) {74 if (run && !save()) {
70 return false;75 return false;
71 }76 }
77
72 // Clean-up old connections.78 // Clean-up old connections.
73 if (_scriptEngine != NULL) {79 if (_scriptEngine != NULL) {
74 disconnect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged);80 disconnect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged);
75 disconnect(_scriptEngine, &ScriptEngine::errorMessage, this, &ScriptEditorWidget::onScriptError);81 disconnect(_scriptEngine, &ScriptEngine::errorMessage, this, &ScriptEditorWidget::onScriptError);
76 disconnect(_scriptEngine, &ScriptEngine::printedMessage, this, &ScriptEditorWidget::onScriptPrint);82 disconnect(_scriptEngine, &ScriptEngine::printedMessage, this, &ScriptEditorWidget::onScriptPrint);
83 disconnect(_scriptEngine, &ScriptEngine::scriptEnding, this, &ScriptEditorWidget::onScriptEnding);
77 }84 }
78 85
79 if (run) {86 if (run) {
@@ -83,6 +90,7 @@ bool ScriptEditorWidget::setRunning(bool run) { · 3 unmodified lines
83 // Make new connections.90 // Make new connections.
84 connect(_scriptEngine, &ScriptEngine::errorMessage, this, &ScriptEditorWidget::onScriptError);91 connect(_scriptEngine, &ScriptEngine::errorMessage, this, &ScriptEditorWidget::onScriptError);
85 connect(_scriptEngine, &ScriptEngine::printedMessage, this, &ScriptEditorWidget::onScriptPrint);92 connect(_scriptEngine, &ScriptEngine::printedMessage, this, &ScriptEditorWidget::onScriptPrint);
93 connect(_scriptEngine, &ScriptEngine::scriptEnding, this, &ScriptEditorWidget::onScriptEnding);
86 } else {94 } else {
87 Application::getInstance()->stopScript(_currentScript);95 Application::getInstance()->stopScript(_currentScript);
88 _scriptEngine = NULL;96 _scriptEngine = NULL;
@@ -125,6 +133,7 @@ void ScriptEditorWidget::loadFile(const QString& scriptPath) { · 36 unmodified lines
125 disconnect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged);133 disconnect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged);
126 disconnect(_scriptEngine, &ScriptEngine::errorMessage, this, &ScriptEditorWidget::onScriptError);134 disconnect(_scriptEngine, &ScriptEngine::errorMessage, this, &ScriptEditorWidget::onScriptError);
127 disconnect(_scriptEngine, &ScriptEngine::printedMessage, this, &ScriptEditorWidget::onScriptPrint);135 disconnect(_scriptEngine, &ScriptEngine::printedMessage, this, &ScriptEditorWidget::onScriptPrint);
136 disconnect(_scriptEngine, &ScriptEngine::scriptEnding, this, &ScriptEditorWidget::onScriptEnding);
128 }137 }
129 } else {138 } else {
130 QNetworkAccessManager* networkManager = new QNetworkAccessManager(this);139 QNetworkAccessManager* networkManager = new QNetworkAccessManager(this);
@@ -144,6 +153,7 @@ void ScriptEditorWidget::loadFile(const QString& scriptPath) { · 13 unmodified lines
144 connect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged);153 connect(_scriptEngine, &ScriptEngine::runningStateChanged, this, &ScriptEditorWidget::runningStateChanged);
145 connect(_scriptEngine, &ScriptEngine::errorMessage, this, &ScriptEditorWidget::onScriptError);154 connect(_scriptEngine, &ScriptEngine::errorMessage, this, &ScriptEditorWidget::onScriptError);
146 connect(_scriptEngine, &ScriptEngine::printedMessage, this, &ScriptEditorWidget::onScriptPrint);155 connect(_scriptEngine, &ScriptEngine::printedMessage, this, &ScriptEditorWidget::onScriptPrint);
156 connect(_scriptEngine, &ScriptEngine::scriptEnding, this, &ScriptEditorWidget::onScriptEnding);
147 }157 }
148}158}
149 159