diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2017-01-03 09:05:43 +0100 |
---|---|---|
committer | Jani Heikkinen <jani.heikkinen@qt.io> | 2017-01-03 12:49:45 +0000 |
commit | cf1f4f00f5fb3868a44727f0b214e8e6ece47e2c (patch) | |
tree | 2d4e27e0cacd8963fd97ee5f52718752d0f7668e /src/render/geometry/buffermanager_p.h | |
parent | 8730660d83dfa5c4d83a5b86b1892029bda14216 (diff) |
BufferManager: prevent race on buffersToRelease vector
Dirty buffers to release are added in the QAspectThread::syncChanges but we
may be rendering/cleaning up resources at the same time in the render
thread. Now protecting any call that could modify the buffers with a mutex.
Task-number: QTBUG-57655
Change-Id: If98702b901bab0e092c039d4da2f0c3f3cdca7cc
Reviewed-by: Kevin Ottens <kevin.ottens@kdab.com>
Diffstat (limited to 'src/render/geometry/buffermanager_p.h')
-rw-r--r-- | src/render/geometry/buffermanager_p.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/render/geometry/buffermanager_p.h b/src/render/geometry/buffermanager_p.h index 754d65fe6..6862cd973 100644 --- a/src/render/geometry/buffermanager_p.h +++ b/src/render/geometry/buffermanager_p.h @@ -78,11 +78,12 @@ public: // Aspect Thread void addBufferToRelease(Qt3DCore::QNodeId bufferId); // Render Thread (no concurrent access) - QVector<Qt3DCore::QNodeId> &buffersToRelease(); + QVector<Qt3DCore::QNodeId> takeBuffersToRelease(); private: QVector<Qt3DCore::QNodeId> m_dirtyBuffers; QVector<Qt3DCore::QNodeId> m_buffersToRelease; + QMutex m_mutex; }; } // namespace Render |