diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2020-07-06 08:43:10 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2020-07-07 17:57:43 +0200 |
commit | ee6b0094a1b8f750b0be19fd6372ff85261750b0 (patch) | |
tree | 1107d6a5dd1c65bfab80569218f4d443398cd19c /src | |
parent | e5e7073c9750fe7a29d02011ffc98299bcee811c (diff) |
GLTexture: change internals to use std::vector
Change-Id: If680702aed4544395866a7b376db920561bf16cc
Reviewed-by: Mike Krus <mike.krus@kdab.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/renderers/opengl/renderer/renderer.cpp | 4 | ||||
-rw-r--r-- | src/plugins/renderers/opengl/textures/gltexture.cpp | 22 | ||||
-rw-r--r-- | src/plugins/renderers/opengl/textures/gltexture_p.h | 16 | ||||
-rw-r--r-- | src/plugins/renderers/rhi/textures/texture.cpp | 2 | ||||
-rw-r--r-- | src/plugins/renderers/rhi/textures/texture_p.h | 2 | ||||
-rw-r--r-- | src/render/texture/texture_p.h | 4 |
6 files changed, 21 insertions, 29 deletions
diff --git a/src/plugins/renderers/opengl/renderer/renderer.cpp b/src/plugins/renderers/opengl/renderer/renderer.cpp index e6ebadf90..51681d16e 100644 --- a/src/plugins/renderers/opengl/renderer/renderer.cpp +++ b/src/plugins/renderers/opengl/renderer/renderer.cpp @@ -1342,7 +1342,7 @@ void Renderer::updateTexture(Texture *texture) // Will make the texture requestUpload if (dirtyFlags.testFlag(Texture::DirtyImageGenerators)) { const QNodeIdVector textureImageIds = texture->textureImageIds(); - QVector<GLTexture::Image> images; + std::vector<GLTexture::Image> images; images.reserve(textureImageIds.size()); // TODO: Move this into GLTexture directly for (const QNodeId textureImageId : textureImageIds) { @@ -1354,7 +1354,7 @@ void Renderer::updateTexture(Texture *texture) images.push_back(glImg); } } - glTexture->setImages(images); + glTexture->setImages(std::move(images)); } // Will make the texture requestUpload diff --git a/src/plugins/renderers/opengl/textures/gltexture.cpp b/src/plugins/renderers/opengl/textures/gltexture.cpp index a44ef6877..f0cd34de1 100644 --- a/src/plugins/renderers/opengl/textures/gltexture.cpp +++ b/src/plugins/renderers/opengl/textures/gltexture.cpp @@ -55,6 +55,7 @@ #include <Qt3DRender/private/qabstracttexture_p.h> #include <Qt3DRender/private/qtextureimagedata_p.h> #include <renderbuffer_p.h> +#include <Qt3DCore/private/vector_helper_p.h> #if !QT_CONFIG(opengles2) #include <QOpenGLFunctions_3_1> @@ -404,19 +405,10 @@ void GLTexture::setProperties(const TextureProperties &props) } } -void GLTexture::setImages(const QVector<Image> &images) +void GLTexture::setImages(const std::vector<Image> &images) { // check if something has changed at all - bool same = (images.size() == m_images.size()); - if (same) { - for (int i = 0; i < images.size(); i++) { - if (images[i] != m_images[i]) { - same = false; - break; - } - } - } - + const bool same = (images == m_images); if (!same) { m_images = images; @@ -440,9 +432,9 @@ void GLTexture::setSharedTextureId(int textureId) } } -void GLTexture::addTextureDataUpdates(const QVector<QTextureDataUpdate> &updates) +void GLTexture::addTextureDataUpdates(const std::vector<QTextureDataUpdate> &updates) { - m_pendingTextureDataUpdates += updates; + Qt3DCore::append(m_pendingTextureDataUpdates, updates); requestUpload(); } @@ -560,7 +552,7 @@ void GLTexture::uploadGLTextureData() } // Upload all QTexImageData references by the TextureImages - for (int i = 0; i < std::min(m_images.size(), m_imageData.size()); i++) { + for (size_t i = 0; i < std::min(m_images.size(), m_imageData.size()); i++) { const QTextureImageDataPtr &imgData = m_imageData.at(i); // Here the bytes in the QTextureImageData contain data for a single // layer, face or mip level, unlike the QTextureGenerator case where @@ -575,7 +567,7 @@ void GLTexture::uploadGLTextureData() m_imageData.clear(); // Update data from TextureUpdates - const QVector<QTextureDataUpdate> textureDataUpdates = std::move(m_pendingTextureDataUpdates); + const std::vector<QTextureDataUpdate> textureDataUpdates = std::move(m_pendingTextureDataUpdates); for (const QTextureDataUpdate &update : textureDataUpdates) { const QTextureImageDataPtr imgData = update.data(); diff --git a/src/plugins/renderers/opengl/textures/gltexture_p.h b/src/plugins/renderers/opengl/textures/gltexture_p.h index da85ff386..7a6564831 100644 --- a/src/plugins/renderers/opengl/textures/gltexture_p.h +++ b/src/plugins/renderers/opengl/textures/gltexture_p.h @@ -134,7 +134,7 @@ public: inline TextureParameters parameters() const { return m_parameters; } inline QTextureGeneratorPtr textureGenerator() const { return m_dataFunctor; } inline int sharedTextureId() const { return m_sharedTextureId; } - inline QVector<Image> images() const { return m_images; } + inline const std::vector<Image> &images() const { return m_images; } inline QSize size() const { return QSize(m_properties.width, m_properties.height); } inline QOpenGLTexture *getGLTexture() const { return m_gl; } @@ -176,7 +176,7 @@ public: } bool hasTextureData() const { return !m_textureData.isNull(); } - bool hasImagesData() const { return !m_imageData.isEmpty(); } + bool hasImagesData() const { return !m_imageData.empty(); } QFlags<DirtyFlag> dirtyFlags() const { return m_dirtyFlags; } @@ -203,12 +203,12 @@ public: void setParameters(const TextureParameters ¶ms); void setProperties(const TextureProperties &props); - void setImages(const QVector<Image> &images); + void setImages(const std::vector<Image> &images); void setGenerator(const QTextureGeneratorPtr &generator); void setSharedTextureId(int textureId); - void addTextureDataUpdates(const QVector<QTextureDataUpdate> &updates); + void addTextureDataUpdates(const std::vector<QTextureDataUpdate> &updates); - QVector<QTextureDataUpdate> textureDataUpdates() const { return m_pendingTextureDataUpdates; } + const std::vector<QTextureDataUpdate> &textureDataUpdates() const { return m_pendingTextureDataUpdates; } QTextureGeneratorPtr dataGenerator() const { return m_dataFunctor; } private: @@ -251,12 +251,12 @@ private: QTextureGeneratorPtr m_dataFunctor; QTextureGenerator *m_pendingDataFunctor; - QVector<Image> m_images; + std::vector<Image> m_images; // cache actual image data generated by the functors QTextureDataPtr m_textureData; - QVector<QTextureImageDataPtr> m_imageData; - QVector<QTextureDataUpdate> m_pendingTextureDataUpdates; + std::vector<QTextureImageDataPtr> m_imageData; + std::vector<QTextureDataUpdate> m_pendingTextureDataUpdates; int m_sharedTextureId; bool m_externalRendering; diff --git a/src/plugins/renderers/rhi/textures/texture.cpp b/src/plugins/renderers/rhi/textures/texture.cpp index 2270d1ba6..d598aaf55 100644 --- a/src/plugins/renderers/rhi/textures/texture.cpp +++ b/src/plugins/renderers/rhi/textures/texture.cpp @@ -617,7 +617,7 @@ void RHITexture::setSharedTextureId(int textureId) } } -void RHITexture::addTextureDataUpdates(const QVector<QTextureDataUpdate> &updates) +void RHITexture::addTextureDataUpdates(const std::vector<QTextureDataUpdate> &updates) { Qt3DCore::append(m_pendingTextureDataUpdates, updates); requestUpload(); diff --git a/src/plugins/renderers/rhi/textures/texture_p.h b/src/plugins/renderers/rhi/textures/texture_p.h index e2378e42b..acdcd2455 100644 --- a/src/plugins/renderers/rhi/textures/texture_p.h +++ b/src/plugins/renderers/rhi/textures/texture_p.h @@ -194,7 +194,7 @@ public: void setImages(const std::vector<Image> &images); void setGenerator(const QTextureGeneratorPtr &generator); void setSharedTextureId(int textureId); - void addTextureDataUpdates(const QVector<QTextureDataUpdate> &updates); + void addTextureDataUpdates(const std::vector<QTextureDataUpdate> &updates); const std::vector<QTextureDataUpdate> &textureDataUpdates() const { return m_pendingTextureDataUpdates; } QTextureGeneratorPtr dataGenerator() const { return m_dataFunctor; } diff --git a/src/render/texture/texture_p.h b/src/render/texture/texture_p.h index 379b4439c..a19ad8581 100644 --- a/src/render/texture/texture_p.h +++ b/src/render/texture/texture_p.h @@ -159,7 +159,7 @@ public: void cleanup(); void addTextureDataUpdate(const QTextureDataUpdate &update); - QVector<QTextureDataUpdate> takePendingTextureDataUpdates() { return std::move(m_pendingTextureDataUpdates); } + std::vector<QTextureDataUpdate> &&takePendingTextureDataUpdates() { return std::move(m_pendingTextureDataUpdates); } void syncFromFrontEnd(const Qt3DCore::QNode *frontEnd, bool firstTime) override; @@ -181,7 +181,7 @@ private: Qt3DCore::QNodeIdVector m_textureImageIds; QMutex m_flagsMutex; - QVector<QTextureDataUpdate> m_pendingTextureDataUpdates; + std::vector<QTextureDataUpdate> m_pendingTextureDataUpdates; }; class Q_AUTOTEST_EXPORT TextureFunctor : public Qt3DCore::QBackendNodeMapper |