summaryrefslogtreecommitdiffstats
path: root/src/core/qchangearbiter.cpp
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2014-10-12 19:22:54 +0100
committerSean Harmer <sean.harmer@kdab.com>2014-10-12 21:48:11 +0200
commite8b8fff1c26737dbc55ea1b37385027d21d69498 (patch)
treecf29b89296c46d98444b168a2db86bcc14a0bfab /src/core/qchangearbiter.cpp
parenta58cda746a6e2f292f23fb28e8b8b7d45c28c429 (diff)
Clean up the TLS in the QChangeArbiter
Change-Id: I38f19f17eb88d725752fe71979b9a220bb8de9be Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/core/qchangearbiter.cpp')
-rw-r--r--src/core/qchangearbiter.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/core/qchangearbiter.cpp b/src/core/qchangearbiter.cpp
index 0e858c847..f22f5a8d8 100644
--- a/src/core/qchangearbiter.cpp
+++ b/src/core/qchangearbiter.cpp
@@ -188,6 +188,13 @@ void QChangeArbiter::appendChangeQueue(QChangeArbiter::ChangeQueue *queue)
d->m_changeQueues.append(queue);
}
+void QChangeArbiter::removeChangeQueue(QChangeArbiter::ChangeQueue *queue)
+{
+ Q_D(QChangeArbiter);
+ QMutexLocker locker(&(d->m_mutex));
+ d->m_changeQueues.removeOne(queue);
+}
+
void QChangeArbiter::appendLockingChangeQueue(QChangeArbiter::ChangeQueue *queue)
{
Q_D(QChangeArbiter);
@@ -337,6 +344,12 @@ void QChangeArbiter::destroyThreadLocalChangeQueue(void *changeArbiter)
{
// TODO: Implement me!
Q_UNUSED(changeArbiter);
+ QChangeArbiter *arbiter = static_cast<QChangeArbiter *>(changeArbiter);
+ if (arbiter->tlsChangeQueue()->hasLocalData()) {
+ ChangeQueue *localChangeQueue = arbiter->tlsChangeQueue()->localData();
+ arbiter->removeChangeQueue(localChangeQueue);
+ arbiter->tlsChangeQueue()->setLocalData(Q_NULLPTR);
+ }
}
} // namespace Qt3D