From bceab4ead90a99147be0c6a08929281713423ef6 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Thu, 6 Nov 2014 17:25:49 -0800 Subject: [PATCH] clear all octree related state when disconnecting from a domain --- interface/src/Application.cpp | 17 ++++++++++++++--- interface/src/Application.h | 1 + 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 38a0682e20..4602bf2db6 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -255,6 +255,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : connect(&domainHandler, SIGNAL(connectedToDomain(const QString&)), SLOT(connectedToDomain(const QString&))); connect(&domainHandler, SIGNAL(connectedToDomain(const QString&)), SLOT(updateWindowTitle())); connect(&domainHandler, SIGNAL(disconnectedFromDomain()), SLOT(updateWindowTitle())); + connect(&domainHandler, SIGNAL(disconnectedFromDomain()), SLOT(clearDomainOctreeDetails())); connect(&domainHandler, &DomainHandler::settingsReceived, this, &Application::domainSettingsReceived); connect(&domainHandler, &DomainHandler::hostnameChanged, Menu::getInstance(), &Menu::clearLoginDialogDisplayedFlag); @@ -3565,9 +3566,8 @@ void Application::changeDomainHostname(const QString &newDomainHostname) { } } -void Application::domainChanged(const QString& domainHostname) { - updateWindowTitle(); - +void Application::clearDomainOctreeDetails() { + qDebug() << "Clearing domain octree details..."; // reset the environment so that we don't erroneously end up with multiple _environment.resetToDefault(); @@ -3576,7 +3576,13 @@ void Application::domainChanged(const QString& domainHostname) { _voxelServerJurisdictions.clear(); _voxelServerJurisdictions.unlock(); + _entityServerJurisdictions.lockForWrite(); + _entityServerJurisdictions.clear(); + _entityServerJurisdictions.unlock(); + + _octreeSceneStatsLock.lockForWrite(); _octreeServerSceneStats.clear(); + _octreeSceneStatsLock.unlock(); // reset the model renderer _entities.clear(); @@ -3585,6 +3591,11 @@ void Application::domainChanged(const QString& domainHostname) { _voxels.killLocalVoxels(); } +void Application::domainChanged(const QString& domainHostname) { + updateWindowTitle(); + clearDomainOctreeDetails(); +} + void Application::connectedToDomain(const QString& hostname) { AccountManager& accountManager = AccountManager::getInstance(); const QUuid& domainID = NodeList::getInstance()->getDomainHandler().getUUID(); diff --git a/interface/src/Application.h b/interface/src/Application.h index d92333058f..115dd45833 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -377,6 +377,7 @@ public slots: void resetSensors(); private slots: + void clearDomainOctreeDetails(); void timer(); void idle();