diff options
author | Sean Harmer <sean.harmer@kdab.com> | 2014-10-12 19:22:54 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2014-10-12 21:48:11 +0200 |
commit | e8b8fff1c26737dbc55ea1b37385027d21d69498 (patch) | |
tree | cf29b89296c46d98444b168a2db86bcc14a0bfab /src/core/qchangearbiter.cpp | |
parent | a58cda746a6e2f292f23fb28e8b8b7d45c28c429 (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.cpp | 13 |
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 |