History

first cut at resetting entities script engine on domain change

Brad Hefta-Gaub committed 10 years ago

Commit 87078b11 parent 7b495523 files · +89 −5Browse files

Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 3 files). Show all

Unified · Split

libraries/script-engine/src/ScriptEngine.cpp+16−0
@@ -142,14 +142,18 @@ ScriptEngine::ScriptEngine(const QString& scriptContents, const QString& fileNam · 141 unmodified lines
142}142}
143 143
144ScriptEngine::~ScriptEngine() {144ScriptEngine::~ScriptEngine() {
145 qCDebug(scriptengine) << __FUNCTION__ << "--- BEGIN --- script:" << getFilename();
145 qCDebug(scriptengine) << "Script Engine shutting down (destructor) for script:" << getFilename();146 qCDebug(scriptengine) << "Script Engine shutting down (destructor) for script:" << getFilename();
146 147
147 auto scriptEngines = DependencyManager::get<ScriptEngines>();148 auto scriptEngines = DependencyManager::get<ScriptEngines>();
148 if (scriptEngines) {149 if (scriptEngines) {
150 qCDebug(scriptengine) << "About to remove ScriptEngine [" << getFilename() << "] from ScriptEngines!";
149 scriptEngines->removeScriptEngine(this);151 scriptEngines->removeScriptEngine(this);
152 qCDebug(scriptengine) << "AFTER remove ScriptEngine [" << getFilename() << "] from ScriptEngines!";
150 } else {153 } else {
151 qCWarning(scriptengine) << "Script destroyed after ScriptEngines!";154 qCWarning(scriptengine) << "Script destroyed after ScriptEngines!";
152 }155 }
156 qCDebug(scriptengine) << __FUNCTION__ << "--- END --- script:" << getFilename();
153}157}
154 158
155void ScriptEngine::disconnectNonEssentialSignals() {159void ScriptEngine::disconnectNonEssentialSignals() {
@@ -1197,6 +1201,8 @@ void ScriptEngine::unloadEntityScript(const EntityItemID& entityID) { · 1041 unmodified lines
1197 }1201 }
1198}1202}
1199 1203
1204#include <QScriptValueIterator>
1205
1200void ScriptEngine::unloadAllEntityScripts() {1206void ScriptEngine::unloadAllEntityScripts() {
1201 if (QThread::currentThread() != thread()) {1207 if (QThread::currentThread() != thread()) {
1202#ifdef THREAD_DEBUGGING1208#ifdef THREAD_DEBUGGING
@@ -1213,6 +1219,16 @@ void ScriptEngine::unloadAllEntityScripts() { · 10 unmodified lines
1213 callEntityScriptMethod(entityID, "unload");1219 callEntityScriptMethod(entityID, "unload");
1214 }1220 }
1215 _entityScripts.clear();1221 _entityScripts.clear();
1222
1223#ifdef DEBUG_ENGINE_STATE
1224 qDebug() << "---- CURRENT STATE OF ENGINE: --------------------------";
1225 QScriptValueIterator it(globalObject());
1226 while (it.hasNext()) {
1227 it.next();
1228 qDebug() << it.name() << ":" << it.value().toString();
1229 }
1230 qDebug() << "--------------------------------------------------------";
1231#endif // DEBUG_ENGINE_STATE
1216}1232}
1217 1233
1218void ScriptEngine::refreshFileScript(const EntityItemID& entityID) {1234void ScriptEngine::refreshFileScript(const EntityItemID& entityID) {