From 99a8ecc6db9865d63278e0a59f29f607ffb1d2f8 Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Mon, 11 Jun 2018 13:52:44 -0700 Subject: [PATCH] Break simulation/entity-tree cycle --- assignment-client/src/entities/EntityTreeHeadlessViewer.cpp | 3 +++ libraries/entities/src/EntityTreeElement.h | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/assignment-client/src/entities/EntityTreeHeadlessViewer.cpp b/assignment-client/src/entities/EntityTreeHeadlessViewer.cpp index 81c42cda1e..3649cf1129 100644 --- a/assignment-client/src/entities/EntityTreeHeadlessViewer.cpp +++ b/assignment-client/src/entities/EntityTreeHeadlessViewer.cpp @@ -17,6 +17,9 @@ EntityTreeHeadlessViewer::EntityTreeHeadlessViewer() } EntityTreeHeadlessViewer::~EntityTreeHeadlessViewer() { + if (_simulation) { + _simulation->setEntityTree(nullptr); // Break shared_ptr cycle. + } } void EntityTreeHeadlessViewer::init() { diff --git a/libraries/entities/src/EntityTreeElement.h b/libraries/entities/src/EntityTreeElement.h index f9f930a9fc..023e908e2c 100644 --- a/libraries/entities/src/EntityTreeElement.h +++ b/libraries/entities/src/EntityTreeElement.h @@ -161,7 +161,7 @@ public: virtual uint16_t size() const; bool hasEntities() const { return size() > 0; } - void setTree(EntityTreePointer tree) { _myTree.swap(std::weak_ptr(tree)); } + void setTree(EntityTreePointer tree) { _myTree = std::weak_ptr(tree); } EntityTreePointer getTree() const { return _myTree.lock(); } void addEntityItem(EntityItemPointer entity);