mirror of
https://github.com/lubosz/overte.git
synced 2025-04-24 03:53:52 +02:00
properly unhook delete notifications
This commit is contained in:
parent
f3aa9d3b8f
commit
003e3ae507
2 changed files with 3 additions and 2 deletions
|
@ -57,16 +57,17 @@ OctreeQueryNode::~OctreeQueryNode() {
|
|||
|
||||
void OctreeQueryNode::nodeKilled() {
|
||||
_isShuttingDown = true;
|
||||
nodeBag.unhookNotifications(); // if our node is shutting down, then we no longer need octree element notifications
|
||||
if (_octreeSendThread) {
|
||||
// just tell our thread we want to shutdown, this is asynchronous, and fast, we don't need or want it to block
|
||||
// while the thread actually shuts down
|
||||
_octreeSendThread->setIsShuttingDown();
|
||||
}
|
||||
nodeBag.unhookNotifications(); // if our node is shutting down, then we no longer need octree element notifications
|
||||
}
|
||||
|
||||
void OctreeQueryNode::forceNodeShutdown() {
|
||||
_isShuttingDown = true;
|
||||
nodeBag.unhookNotifications(); // if our node is shutting down, then we no longer need octree element notifications
|
||||
if (_octreeSendThread) {
|
||||
// we really need to force our thread to shutdown, this is synchronous, we will block while the thread actually
|
||||
// shuts down because we really need it to shutdown, and it's ok if we wait for it to complete
|
||||
|
|
|
@ -27,11 +27,11 @@ OctreeElementBag::~OctreeElementBag() {
|
|||
void OctreeElementBag::unhookNotifications() {
|
||||
if (_hooked) {
|
||||
OctreeElement::removeDeleteHook(this);
|
||||
_hooked = false;
|
||||
}
|
||||
}
|
||||
|
||||
void OctreeElementBag::elementDeleted(OctreeElement* element) {
|
||||
qDebug() << "OctreeElementBag::elementDeleted()...";
|
||||
remove(element); // note: remove can safely handle nodes that aren't in it, so we don't need to check contains()
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue