diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-05-14 12:43:17 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2015-05-15 08:00:58 +0000 |
commit | a85e93aa9e962aed6052eb129b29d15451558ee3 (patch) | |
tree | 3317a371e6318018b223d3ae6013f5159667966e | |
parent | 6cb62485394e49791d2ea35dc3a59926df271f0d (diff) |
RenderTexture: handle the unique flag and append the node id to the dna when
set to true which makes the texture unique
Change-Id: I4d7249b3021d95b31a5b93f086bc3aab54fe82da
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
-rw-r--r-- | src/render/backend/rendertexture.cpp | 14 | ||||
-rw-r--r-- | src/render/backend/rendertexture_p.h | 1 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/render/backend/rendertexture.cpp b/src/render/backend/rendertexture.cpp index 4e9d7e2c0..92a1960d9 100644 --- a/src/render/backend/rendertexture.cpp +++ b/src/render/backend/rendertexture.cpp @@ -74,6 +74,7 @@ RenderTexture::RenderTexture() , m_isDirty(false) , m_filtersAndWrapUpdated(false) , m_dataUploadRequired(false) + , m_unique(false) , m_lock(new QMutex()) , m_textureDNA(0) , m_textureManager(Q_NULLPTR) @@ -111,6 +112,7 @@ void RenderTexture::cleanup() m_isDirty = false; m_filtersAndWrapUpdated = false; m_dataUploadRequired = false; + m_unique = false; m_textureDNA = 0; m_textureImages.clear(); m_textureManager = Q_NULLPTR; @@ -141,6 +143,7 @@ void RenderTexture::updateFromPeer(QNode *peer) m_comparisonFunction = texture->comparisonFunction(); m_comparisonMode = texture->comparisonMode(); m_layers = texture->maximumLayers(); + m_unique = texture->isUnique(); } } @@ -347,6 +350,8 @@ void RenderTexture::updateDNA() if (img) m_textureDNA += img->dna(); } + if (m_unique) // Ensures uniqueness by adding unique QNode id to the dna + m_textureDNA += qHash(peerUuid()); } // RenderThread @@ -403,7 +408,7 @@ void RenderTexture::sceneChangeEvent(const QSceneChangePtr &e) } else if (propertyChange->propertyName() == QByteArrayLiteral("depth")) { setSize(m_width, m_height, propertyChange->value().toInt()); } else if (propertyChange->propertyName() == QByteArrayLiteral("mipmaps")) { - bool oldMipMaps = m_generateMipMaps; + const bool oldMipMaps = m_generateMipMaps; m_generateMipMaps = propertyChange->value().toBool(); m_isDirty |= (oldMipMaps != m_generateMipMaps); } else if (propertyChange->propertyName() == QByteArrayLiteral("minificationFilter")) { @@ -445,9 +450,14 @@ void RenderTexture::sceneChangeEvent(const QSceneChangePtr &e) m_comparisonMode = propertyChange->value().value<QAbstractTextureProvider::ComparisonMode>(); m_filtersAndWrapUpdated |= (oldComparisonMode != m_comparisonMode); } else if (propertyChange->propertyName() == QByteArrayLiteral("maximumLayers")) { - int oldLayers = m_layers; + const int oldLayers = m_layers; m_layers = propertyChange->value().toInt(); m_isDirty |= (oldLayers != m_layers); + } else if (propertyChange->propertyName() == QByteArrayLiteral("unique")) { + const bool oldUnique = m_unique; + m_unique = propertyChange->value().toBool(); + // Will force a DNA update + m_filtersAndWrapUpdated |= (oldUnique != m_unique); } } break; diff --git a/src/render/backend/rendertexture_p.h b/src/render/backend/rendertexture_p.h index d5bc1514d..052c00b36 100644 --- a/src/render/backend/rendertexture_p.h +++ b/src/render/backend/rendertexture_p.h @@ -123,6 +123,7 @@ private: bool m_filtersAndWrapUpdated; bool m_dataUploadRequired; bool m_formatWasSpecified; + bool m_unique; QMutex *m_lock; TextureDNA m_textureDNA; |