summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/render/renderstates/renderstatecollection.cpp5
-rw-r--r--src/render/renderstates/renderstatecollection_p.h2
2 files changed, 7 insertions, 0 deletions
diff --git a/src/render/renderstates/renderstatecollection.cpp b/src/render/renderstates/renderstatecollection.cpp
index 17e794820..f9a7cb305 100644
--- a/src/render/renderstates/renderstatecollection.cpp
+++ b/src/render/renderstates/renderstatecollection.cpp
@@ -55,11 +55,13 @@ RenderStateCollection::~RenderStateCollection()
void RenderStateCollection::setDirty(bool dirty)
{
+ QMutexLocker lock(&m_mutex);
m_dirty = dirty;
}
QVector<RenderStateNode*> RenderStateCollection::renderStates(RenderStateManager *manager) const
{
+ QMutexLocker lock(&m_mutex);
if (m_dirty) {
m_renderStateNodes.clear();
@@ -79,11 +81,13 @@ QVector<RenderStateNode*> RenderStateCollection::renderStates(RenderStateManager
bool RenderStateCollection::hasRenderStates() const
{
+ QMutexLocker lock(&m_mutex);
return !m_renderStateIds.empty();
}
void RenderStateCollection::appendRenderState(Qt3DCore::QNodeId renderStateId)
{
+ QMutexLocker lock(&m_mutex);
if (!m_renderStateIds.contains(renderStateId)) {
m_renderStateIds.append(renderStateId);
m_dirty = true;
@@ -92,6 +96,7 @@ void RenderStateCollection::appendRenderState(Qt3DCore::QNodeId renderStateId)
void RenderStateCollection::removeRenderState(Qt3DCore::QNodeId renderStateId)
{
+ QMutexLocker lock(&m_mutex);
if (m_renderStateIds.removeAll(renderStateId) > 0) {
m_dirty = true;
}
diff --git a/src/render/renderstates/renderstatecollection_p.h b/src/render/renderstates/renderstatecollection_p.h
index b86f499fe..751d41250 100644
--- a/src/render/renderstates/renderstatecollection_p.h
+++ b/src/render/renderstates/renderstatecollection_p.h
@@ -49,6 +49,7 @@
//
#include <Qt3DRender/private/renderstatenode_p.h>
+#include <QtCore/qmutex.h>
QT_BEGIN_NAMESPACE
@@ -82,6 +83,7 @@ private:
mutable QVector<Qt3DCore::QNodeId> m_renderStateIds;
mutable QVector<RenderStateNode*> m_renderStateNodes;
mutable bool m_dirty;
+ mutable QMutex m_mutex;
};
} // namespace Render