From 790e3252488f9e65c9cf2e1cefe8c98765a0fa20 Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Mon, 18 Apr 2016 14:31:16 -0700 Subject: [PATCH 1/4] Clear entities and avatars on exit --- interface/src/Application.cpp | 5 ++++- interface/src/avatar/AvatarManager.cpp | 11 +++++++++++ interface/src/avatar/AvatarManager.h | 1 + 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index dbb30a4582..5120bf13e9 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -1233,6 +1233,9 @@ void Application::cleanupBeforeQuit() { } Application::~Application() { + _entityClipboard->eraseAllOctreeElements(); + _entityClipboard.reset(); + EntityTreePointer tree = getEntities()->getTree(); tree->setSimulation(nullptr); @@ -1242,7 +1245,7 @@ Application::~Application() { _physicsEngine->setCharacterController(nullptr); // remove avatars from physics engine - DependencyManager::get()->clearOtherAvatars(); + DependencyManager::get()->clearAllAvatars(); VectorOfMotionStates motionStates; DependencyManager::get()->getObjectsToRemoveFromPhysics(motionStates); _physicsEngine->removeObjects(motionStates); diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index 9f3a0eb254..c1bf3b7f0b 100644 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -250,6 +250,17 @@ void AvatarManager::clearOtherAvatars() { _myAvatar->clearLookAtTargetAvatar(); } +void AvatarManager::clearAllAvatars() { + clearOtherAvatars(); + + QWriteLocker (locker&_hashLock); + + _myAvatar->die(); + _myAvatar.reset(); + + _avatarHash.clear(); +} + void AvatarManager::setLocalLights(const QVector& localLights) { if (QThread::currentThread() != thread()) { QMetaObject::invokeMethod(this, "setLocalLights", Q_ARG(const QVector&, localLights)); diff --git a/interface/src/avatar/AvatarManager.h b/interface/src/avatar/AvatarManager.h index 57fc1022ea..576a17f080 100644 --- a/interface/src/avatar/AvatarManager.h +++ b/interface/src/avatar/AvatarManager.h @@ -45,6 +45,7 @@ public: void updateOtherAvatars(float deltaTime); void clearOtherAvatars(); + void clearAllAvatar(); bool shouldShowReceiveStats() const { return _shouldShowReceiveStats; } From c87eec41823415750fc495df0e35865a2326ac4d Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Mon, 18 Apr 2016 14:45:33 -0700 Subject: [PATCH 2/4] Fix typo in AvatarManager::clearAllAvatars --- interface/src/avatar/AvatarManager.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/avatar/AvatarManager.h b/interface/src/avatar/AvatarManager.h index 576a17f080..bedd089c93 100644 --- a/interface/src/avatar/AvatarManager.h +++ b/interface/src/avatar/AvatarManager.h @@ -45,7 +45,7 @@ public: void updateOtherAvatars(float deltaTime); void clearOtherAvatars(); - void clearAllAvatar(); + void clearAllAvatars(); bool shouldShowReceiveStats() const { return _shouldShowReceiveStats; } From c9dc642d76f00e04c42fe292abf816f62ae7e488 Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Mon, 18 Apr 2016 14:48:24 -0700 Subject: [PATCH 3/4] Fix type in AvatarManager::clearAllAvatars --- interface/src/avatar/AvatarManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index c1bf3b7f0b..b8f121bcd9 100644 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -253,7 +253,7 @@ void AvatarManager::clearOtherAvatars() { void AvatarManager::clearAllAvatars() { clearOtherAvatars(); - QWriteLocker (locker&_hashLock); + QWriteLocker locker(&_hashLock); _myAvatar->die(); _myAvatar.reset(); From 146ea066db1b31b6e95704a55bbbb830d16e01a3 Mon Sep 17 00:00:00 2001 From: Zach Pomerantz Date: Mon, 18 Apr 2016 14:53:04 -0700 Subject: [PATCH 4/4] Update AvatarManager.cpp --- interface/src/avatar/AvatarManager.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/interface/src/avatar/AvatarManager.cpp b/interface/src/avatar/AvatarManager.cpp index b8f121bcd9..efd1bede47 100644 --- a/interface/src/avatar/AvatarManager.cpp +++ b/interface/src/avatar/AvatarManager.cpp @@ -77,7 +77,6 @@ AvatarManager::AvatarManager(QObject* parent) : } AvatarManager::~AvatarManager() { - _myAvatar->die(); } void AvatarManager::init() {