History

Merge branch 'master' into 21114-part3

humbletim committed 9 years ago

Commit 87d62ad2 parents 758c07c a69cf7615 files · +151 −121Browse files

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

Unified · Split

libraries/script-engine/src/ScriptEngine.cpp+9−13
@@ -583,16 +583,6 @@ void ScriptEngine::init() { · 582 unmodified lines
583583
584584 auto entityScriptingInterface = DependencyManager::get<EntityScriptingInterface>();
585585 entityScriptingInterface->init();
586− connect(entityScriptingInterface.data(), &EntityScriptingInterface::deletingEntity, this, [this](const EntityItemID& entityID) {
587− if (_entityScripts.contains(entityID)) {
588− if (isEntityScriptRunning(entityID) && !isStopping()) {
589− qCWarning(scriptengine) << "deletingEntity while entity script is still running" << entityID;
590− }
591− _entityScripts.remove(entityID);
592− emit entityScriptDetailsUpdated();
593− }
594− });
595−
596586
597587 // register various meta-types
598588 registerMetaTypes(this);
@@ -2291,7 +2281,7 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co · 1692 unmodified lines
22912281 processDeferredEntityLoads(entityScript, entityID);
22922282 }
22932283
2294−void ScriptEngine::unloadEntityScript(const EntityItemID& entityID) {
2284+void ScriptEngine::unloadEntityScript(const EntityItemID& entityID, bool shouldRemoveFromMap) {
22952285 if (QThread::currentThread() != thread()) {
22962286 #ifdef THREAD_DEBUGGING
22972287 qCDebug(scriptengine) << "*** WARNING *** ScriptEngine::unloadEntityScript() called on wrong thread [" << QThread::currentThread() << "], invoking on correct thread [" << thread() << "] "
@@ -2299,7 +2289,8 @@ void ScriptEngine::unloadEntityScript(const EntityItemID& entityID) { · 1 unmodified line
22992289 #endif
23002290
23012291 QMetaObject::invokeMethod(this, "unloadEntityScript",
2302− Q_ARG(const EntityItemID&, entityID));
2292+ Q_ARG(const EntityItemID&, entityID),
2293+ Q_ARG(bool, shouldRemoveFromMap));
23032294 return;
23042295 }
23052296 #ifdef THREAD_DEBUGGING
@@ -2317,7 +2308,11 @@ void ScriptEngine::unloadEntityScript(const EntityItemID& entityID) { · 11 unmodified lines
23172308 qCDebug(scriptengine) << "unload called while !running" << entityID << oldDetails.status;
23182309 }
23192310 #endif
2320− if (oldDetails.status != EntityScriptStatus::UNLOADED) {
2311+ if (shouldRemoveFromMap) {
2312+ // this was a deleted entity, we've been asked to remove it from the map
2313+ _entityScripts.remove(entityID);
2314+ emit entityScriptDetailsUpdated();
2315+ } else if (oldDetails.status != EntityScriptStatus::UNLOADED) {
23212316 EntityScriptDetails newDetails;
23222317 newDetails.status = EntityScriptStatus::UNLOADED;
23232318 newDetails.lastModified = QDateTime::currentMSecsSinceEpoch();
@@ -2325,6 +2320,7 @@ void ScriptEngine::unloadEntityScript(const EntityItemID& entityID) { · 1 unmodified line
23252320 newDetails.scriptText = oldDetails.scriptText;
23262321 setEntityScriptDetails(entityID, newDetails);
23272322 }
2323+
23282324 stopAllTimersForEntityScript(entityID);
23292325 {
23302326 // FIXME: shouldn't have to do this here, but currently something seems to be firing unloads moments after firing initial load requests