summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2020-05-05 14:07:25 +0200
committerPaul Lemire <paul.lemire@kdab.com>2020-06-04 11:13:16 +0200
commit0c9c4e163458f99ac350aef4979754cbe147dac3 (patch)
treef6acbf7b96f2ca146a2f2fefc666e3df817fa30d /src
parent83ee10ff799fa5892b14a677036fb445ae16b10b (diff)
QResourcesManager: switch to std::vector
Given QVector is potentially slower for this use case and the fact that QVector might become QList in Qt6, we're better of using the std. Change-Id: If2c403439ddb856b60f8bfd5ae7c6ec1cb2c892a Reviewed-by: Mike Krus <mike.krus@kdab.com> (cherry picked from commit 04bdb35a6c5f5fe417c06392e6a0861d80ec9dba)
Diffstat (limited to 'src')
-rw-r--r--src/core/resources/qresourcemanager_p.h6
-rw-r--r--src/input/backend/inputhandler.cpp2
-rw-r--r--src/plugins/renderers/opengl/jobs/materialparametergathererjob.cpp2
-rw-r--r--src/plugins/renderers/opengl/jobs/materialparametergathererjob_p.h7
-rw-r--r--src/plugins/renderers/opengl/renderer/renderer.cpp26
-rw-r--r--src/plugins/renderers/opengl/renderer/renderviewbuilder.cpp15
-rw-r--r--src/plugins/renderers/rhi/renderer/renderer.cpp20
-rw-r--r--src/plugins/renderers/rhi/renderer/renderviewbuilder.cpp32
-rw-r--r--src/render/jobs/filterentitybycomponentjob_p.h2
-rw-r--r--src/render/jobs/filterlayerentityjob.cpp4
-rw-r--r--src/render/jobs/filterproximitydistancejob.cpp2
-rw-r--r--src/render/jobs/lightgatherer.cpp2
-rw-r--r--src/render/jobs/updateentitylayersjob.cpp2
-rw-r--r--src/render/jobs/updatemeshtrianglelistjob.cpp2
-rw-r--r--src/render/jobs/updateshaderdatatransformjob.cpp2
-rw-r--r--src/render/jobs/updateworldboundingvolumejob.cpp2
16 files changed, 66 insertions, 62 deletions
diff --git a/src/core/resources/qresourcemanager_p.h b/src/core/resources/qresourcemanager_p.h
index 6e479d5ef..88bce2e1c 100644
--- a/src/core/resources/qresourcemanager_p.h
+++ b/src/core/resources/qresourcemanager_p.h
@@ -247,7 +247,7 @@ public:
void releaseResource(const Handle &handle)
{
- m_activeHandles.removeOne(handle);
+ m_activeHandles.erase(std::remove(m_activeHandles.begin(), m_activeHandles.end(), handle), m_activeHandles.end());
typename Handle::Data *d = handle.data_ptr();
d->nextFree = freeList;
freeList = d;
@@ -272,7 +272,7 @@ public:
}
int count() const { return m_activeHandles.size(); }
- QVector<Handle> activeHandles() const { return m_activeHandles; }
+ const std::vector<Handle> &activeHandles() const { return m_activeHandles; }
private:
Q_DISABLE_COPY(ArrayAllocatingPolicy)
@@ -290,7 +290,7 @@ private:
};
Bucket *firstBucket = 0;
- QVector<Handle > m_activeHandles;
+ std::vector<Handle> m_activeHandles;
typename Handle::Data *freeList = 0;
int allocCounter = 1;
diff --git a/src/input/backend/inputhandler.cpp b/src/input/backend/inputhandler.cpp
index 9484909ab..adaaebc88 100644
--- a/src/input/backend/inputhandler.cpp
+++ b/src/input/backend/inputhandler.cpp
@@ -264,7 +264,7 @@ QVector<Qt3DCore::QAspectJobPtr> InputHandler::mouseJobs()
#endif
) {
// Send the events to the mouse handlers that have for sourceDevice controller
- const QVector<HMouseHandler> activeMouseHandlers = m_mouseInputManager->activeHandles();
+ const std::vector<HMouseHandler> &activeMouseHandlers = m_mouseInputManager->activeHandles();
for (const HMouseHandler &mouseHandlerHandle : activeMouseHandlers) {
MouseHandler *mouseHandler = m_mouseInputManager->data(mouseHandlerHandle);
diff --git a/src/plugins/renderers/opengl/jobs/materialparametergathererjob.cpp b/src/plugins/renderers/opengl/jobs/materialparametergathererjob.cpp
index 66f62eda4..932baf685 100644
--- a/src/plugins/renderers/opengl/jobs/materialparametergathererjob.cpp
+++ b/src/plugins/renderers/opengl/jobs/materialparametergathererjob.cpp
@@ -74,7 +74,7 @@ public:
bool MaterialParameterGathererJobPrivate::isRequired() const
{
- return !q_ptr->m_handles.isEmpty();
+ return !q_ptr->m_handles.empty();
}
void MaterialParameterGathererJobPrivate::postFrame(Qt3DCore::QAspectManager *manager)
diff --git a/src/plugins/renderers/opengl/jobs/materialparametergathererjob_p.h b/src/plugins/renderers/opengl/jobs/materialparametergathererjob_p.h
index 91454f8c1..f1ad5e735 100644
--- a/src/plugins/renderers/opengl/jobs/materialparametergathererjob_p.h
+++ b/src/plugins/renderers/opengl/jobs/materialparametergathererjob_p.h
@@ -81,8 +81,9 @@ public:
inline void setNodeManagers(NodeManagers *manager) Q_DECL_NOTHROW { m_manager = manager; }
inline void setTechniqueFilter(TechniqueFilter *techniqueFilter) Q_DECL_NOTHROW { m_techniqueFilter = techniqueFilter; }
inline void setRenderPassFilter(RenderPassFilter *renderPassFilter) Q_DECL_NOTHROW { m_renderPassFilter = renderPassFilter; }
- inline const QHash<Qt3DCore::QNodeId, QVector<RenderPassParameterData>> &materialToPassAndParameter() Q_DECL_NOTHROW { return m_parameters; }
- inline void setHandles(const QVector<HMaterial> &handles) Q_DECL_NOTHROW { m_handles = handles; }
+ inline const MaterialParameterGathererData &materialToPassAndParameter() Q_DECL_NOTHROW { return m_parameters; }
+ inline void setHandles(std::vector<HMaterial> &&handles) Q_DECL_NOTHROW { m_handles = std::move(handles); }
+ inline void setHandles(const std::vector<HMaterial> &handles) Q_DECL_NOTHROW { m_handles = handles; }
inline TechniqueFilter *techniqueFilter() const Q_DECL_NOTHROW { return m_techniqueFilter; }
inline RenderPassFilter *renderPassFilter() const Q_DECL_NOTHROW { return m_renderPassFilter; }
@@ -96,7 +97,7 @@ private:
// Material id to array of RenderPasse with parameters
MaterialParameterGathererData m_parameters;
- QVector<HMaterial> m_handles;
+ std::vector<HMaterial> m_handles;
Q_DECLARE_PRIVATE(MaterialParameterGathererJob)
};
diff --git a/src/plugins/renderers/opengl/renderer/renderer.cpp b/src/plugins/renderers/opengl/renderer/renderer.cpp
index d38b12384..a5d624c34 100644
--- a/src/plugins/renderers/opengl/renderer/renderer.cpp
+++ b/src/plugins/renderers/opengl/renderer/renderer.cpp
@@ -598,14 +598,14 @@ void Renderer::releaseGraphicsResources()
if (context->thread() == QThread::currentThread() && context->makeCurrent(offscreenSurface)) {
// Clean up the graphics context and any resources
- const QVector<HGLTexture> activeTexturesHandles = m_glResourceManagers->glTextureManager()->activeHandles();
+ const std::vector<HGLTexture> &activeTexturesHandles = m_glResourceManagers->glTextureManager()->activeHandles();
for (const HGLTexture &textureHandle : activeTexturesHandles) {
GLTexture *tex = m_glResourceManagers->glTextureManager()->data(textureHandle);
tex->destroy();
}
// Do the same thing with buffers
- const QVector<HGLBuffer> activeBuffers = m_glResourceManagers->glBufferManager()->activeHandles();
+ const std::vector<HGLBuffer> &activeBuffers = m_glResourceManagers->glBufferManager()->activeHandles();
for (const HGLBuffer &bufferHandle : activeBuffers) {
GLBuffer *buffer = m_glResourceManagers->glBufferManager()->data(bufferHandle);
buffer->destroy(m_submissionContext.data());
@@ -616,7 +616,7 @@ void Renderer::releaseGraphicsResources()
qDeleteAll(shaders);
// Do the same thing with VAOs
- const QVector<HVao> activeVaos = m_glResourceManagers->vaoManager()->activeHandles();
+ const std::vector<HVao> &activeVaos = m_glResourceManagers->vaoManager()->activeHandles();
for (const HVao &vaoHandle : activeVaos) {
OpenGLVertexArrayObject *vao = m_glResourceManagers->vaoManager()->data(vaoHandle);
vao->destroy();
@@ -1020,7 +1020,7 @@ void Renderer::prepareCommandsSubmission(const QVector<RenderView *> &renderView
// Executed in a job
void Renderer::lookForAbandonedVaos()
{
- const QVector<HVao> activeVaos = m_glResourceManagers->vaoManager()->activeHandles();
+ const std::vector<HVao> &activeVaos = m_glResourceManagers->vaoManager()->activeHandles();
for (HVao handle : activeVaos) {
OpenGLVertexArrayObject *vao = m_glResourceManagers->vaoManager()->data(handle);
@@ -1037,7 +1037,7 @@ void Renderer::lookForAbandonedVaos()
// Executed in a job
void Renderer::lookForDirtyBuffers()
{
- const QVector<HBuffer> activeBufferHandles = m_nodesManager->bufferManager()->activeHandles();
+ const std::vector<HBuffer> &activeBufferHandles = m_nodesManager->bufferManager()->activeHandles();
for (const HBuffer &handle: activeBufferHandles) {
Buffer *buffer = m_nodesManager->bufferManager()->data(handle);
if (buffer->isDirty())
@@ -1049,7 +1049,7 @@ void Renderer::lookForDirtyBuffers()
void Renderer::lookForDownloadableBuffers()
{
m_downloadableBuffers.clear();
- const QVector<HBuffer> activeBufferHandles = m_nodesManager->bufferManager()->activeHandles();
+ const std::vector<HBuffer> &activeBufferHandles = m_nodesManager->bufferManager()->activeHandles();
for (const HBuffer &handle : activeBufferHandles) {
Buffer *buffer = m_nodesManager->bufferManager()->data(handle);
if (buffer->access() & QBuffer::Read)
@@ -1065,7 +1065,7 @@ void Renderer::lookForDirtyTextures()
// image has been updated to then notify textures referencing the image
// that they need to be updated
TextureImageManager *imageManager = m_nodesManager->textureImageManager();
- const QVector<HTextureImage> activeTextureImageHandles = imageManager->activeHandles();
+ const std::vector<HTextureImage> &activeTextureImageHandles = imageManager->activeHandles();
Qt3DCore::QNodeIdVector dirtyImageIds;
for (const HTextureImage &handle: activeTextureImageHandles) {
TextureImage *image = imageManager->data(handle);
@@ -1076,7 +1076,7 @@ void Renderer::lookForDirtyTextures()
}
TextureManager *textureManager = m_nodesManager->textureManager();
- const QVector<HTexture> activeTextureHandles = textureManager->activeHandles();
+ const std::vector<HTexture> &activeTextureHandles = textureManager->activeHandles();
for (const HTexture &handle: activeTextureHandles) {
Texture *texture = textureManager->data(handle);
const QNodeIdVector imageIds = texture->textureImageIds();
@@ -1103,8 +1103,8 @@ void Renderer::lookForDirtyTextures()
void Renderer::reloadDirtyShaders()
{
Q_ASSERT(isRunning());
- const QVector<HTechnique> activeTechniques = m_nodesManager->techniqueManager()->activeHandles();
- const QVector<HShaderBuilder> activeBuilders = m_nodesManager->shaderBuilderManager()->activeHandles();
+ const std::vector<HTechnique> &activeTechniques = m_nodesManager->techniqueManager()->activeHandles();
+ const std::vector<HShaderBuilder> &activeBuilders = m_nodesManager->shaderBuilderManager()->activeHandles();
for (const HTechnique &techniqueHandle : activeTechniques) {
Technique *technique = m_nodesManager->techniqueManager()->data(techniqueHandle);
// If api of the renderer matches the one from the technique
@@ -1159,7 +1159,7 @@ void Renderer::sendShaderChangesToFrontend(Qt3DCore::QAspectManager *manager)
Q_ASSERT(isRunning());
// Sync Shader
- const QVector<HShader> activeShaders = m_nodesManager->shaderManager()->activeHandles();
+ const std::vector<HShader> &activeShaders = m_nodesManager->shaderManager()->activeHandles();
for (const HShader &handle :activeShaders) {
Shader *s = m_nodesManager->shaderManager()->data(handle);
if (s->requiresFrontendSync()) {
@@ -1247,7 +1247,7 @@ void Renderer::sendDisablesToFrontend(Qt3DCore::QAspectManager *manager)
}
// Compute Commands
- const QVector<HComputeCommand> activeCommands = m_nodesManager->computeJobManager()->activeHandles();
+ const std::vector<HComputeCommand> &activeCommands = m_nodesManager->computeJobManager()->activeHandles();
for (const HComputeCommand &handle :activeCommands) {
ComputeCommand *c = m_nodesManager->computeJobManager()->data(handle);
if (c->hasReachedFrameCount()) {
@@ -1348,7 +1348,7 @@ void Renderer::updateGLResources()
QNodeIdVector updatedTexturesForFrame;
if (m_submissionContext != nullptr) {
GLTextureManager *glTextureManager = m_glResourceManagers->glTextureManager();
- const QVector<HGLTexture> glTextureHandles = glTextureManager->activeHandles();
+ const std::vector<HGLTexture> &glTextureHandles = glTextureManager->activeHandles();
// Upload texture data
for (const HGLTexture &glTextureHandle : glTextureHandles) {
GLTexture *glTexture = glTextureManager->data(glTextureHandle);
diff --git a/src/plugins/renderers/opengl/renderer/renderviewbuilder.cpp b/src/plugins/renderers/opengl/renderer/renderviewbuilder.cpp
index 613148d50..6ba1ac361 100644
--- a/src/plugins/renderers/opengl/renderer/renderviewbuilder.cpp
+++ b/src/plugins/renderers/opengl/renderer/renderviewbuilder.cpp
@@ -609,15 +609,18 @@ void RenderViewBuilder::prepareJobs()
const bool materialCacheNeedsRebuild = m_rebuildFlags.testFlag(RebuildFlag::MaterialCacheRebuild);
if (materialCacheNeedsRebuild) {
// Since Material gathering is an heavy task, we split it
- const QVector<HMaterial> materialHandles = m_renderer->nodeManagers()->materialManager()->activeHandles();
- if (materialHandles.count()) {
- const int elementsPerJob = qMax(materialHandles.size() / m_optimalParallelJobCount, 1);
+ const std::vector<HMaterial> &materialHandles = m_renderer->nodeManagers()->materialManager()->activeHandles();
+ const size_t handlesCount = materialHandles.size();
+ if (handlesCount) {
m_materialGathererJobs.reserve(m_optimalParallelJobCount);
- int elementCount = 0;
- while (elementCount < materialHandles.size()) {
+ const size_t elementsPerJob = std::max(handlesCount / m_optimalParallelJobCount, size_t(1));
+ size_t elementCount = 0;
+ while (elementCount < handlesCount) {
auto materialGatherer = MaterialParameterGathererJobPtr::create();
materialGatherer->setNodeManagers(m_renderer->nodeManagers());
- materialGatherer->setHandles(materialHandles.mid(elementCount, elementsPerJob));
+ // TO DO: Candidate for std::span if C++20
+ materialGatherer->setHandles({materialHandles.begin() + elementCount,
+ materialHandles.begin() + std::min(elementCount + elementsPerJob, handlesCount)});
m_materialGathererJobs.push_back(materialGatherer);
elementCount += elementsPerJob;
diff --git a/src/plugins/renderers/rhi/renderer/renderer.cpp b/src/plugins/renderers/rhi/renderer/renderer.cpp
index ee9a26a98..bd457dd79 100644
--- a/src/plugins/renderers/rhi/renderer/renderer.cpp
+++ b/src/plugins/renderers/rhi/renderer/renderer.cpp
@@ -1271,7 +1271,7 @@ Renderer::prepareCommandsSubmission(const QVector<RenderView *> &renderViews)
// Executed in a job
void Renderer::lookForDirtyBuffers()
{
- const QVector<HBuffer> activeBufferHandles = m_nodesManager->bufferManager()->activeHandles();
+ const std::vector<HBuffer> &activeBufferHandles = m_nodesManager->bufferManager()->activeHandles();
for (const HBuffer &handle : activeBufferHandles) {
Buffer *buffer = m_nodesManager->bufferManager()->data(handle);
if (buffer->isDirty())
@@ -1283,7 +1283,7 @@ void Renderer::lookForDirtyBuffers()
void Renderer::lookForDownloadableBuffers()
{
m_downloadableBuffers.clear();
- const QVector<HBuffer> activeBufferHandles = m_nodesManager->bufferManager()->activeHandles();
+ const std::vector<HBuffer> &activeBufferHandles = m_nodesManager->bufferManager()->activeHandles();
for (const HBuffer &handle : activeBufferHandles) {
Buffer *buffer = m_nodesManager->bufferManager()->data(handle);
if (buffer->access() & QBuffer::Read)
@@ -1299,7 +1299,7 @@ void Renderer::lookForDirtyTextures()
// image has been updated to then notify textures referencing the image
// that they need to be updated
TextureImageManager *imageManager = m_nodesManager->textureImageManager();
- const QVector<HTextureImage> activeTextureImageHandles = imageManager->activeHandles();
+ const std::vector<HTextureImage> &activeTextureImageHandles = imageManager->activeHandles();
Qt3DCore::QNodeIdVector dirtyImageIds;
for (const HTextureImage &handle : activeTextureImageHandles) {
TextureImage *image = imageManager->data(handle);
@@ -1310,7 +1310,7 @@ void Renderer::lookForDirtyTextures()
}
TextureManager *textureManager = m_nodesManager->textureManager();
- const QVector<HTexture> activeTextureHandles = textureManager->activeHandles();
+ const std::vector<HTexture> &activeTextureHandles = textureManager->activeHandles();
for (const HTexture &handle : activeTextureHandles) {
Texture *texture = textureManager->data(handle);
const QNodeIdVector imageIds = texture->textureImageIds();
@@ -1337,9 +1337,9 @@ void Renderer::lookForDirtyTextures()
void Renderer::reloadDirtyShaders()
{
Q_ASSERT(isRunning());
- const QVector<HTechnique> activeTechniques =
+ const std::vector<HTechnique> &activeTechniques =
m_nodesManager->techniqueManager()->activeHandles();
- const QVector<HShaderBuilder> activeBuilders =
+ const std::vector<HShaderBuilder> &activeBuilders =
m_nodesManager->shaderBuilderManager()->activeHandles();
for (const HTechnique &techniqueHandle : activeTechniques) {
Technique *technique = m_nodesManager->techniqueManager()->data(techniqueHandle);
@@ -1394,7 +1394,7 @@ void Renderer::sendShaderChangesToFrontend(Qt3DCore::QAspectManager *manager)
Q_ASSERT(isRunning());
// Sync Shader
- const QVector<HShader> activeShaders = m_nodesManager->shaderManager()->activeHandles();
+ const std::vector<HShader> &activeShaders = m_nodesManager->shaderManager()->activeHandles();
for (const HShader &handle : activeShaders) {
Shader *s = m_nodesManager->shaderManager()->data(handle);
if (s->requiresFrontendSync()) {
@@ -1469,7 +1469,7 @@ void Renderer::sendDisablesToFrontend(Qt3DCore::QAspectManager *manager)
}
// Compute Commands
- const QVector<HComputeCommand> activeCommands =
+ const std::vector<HComputeCommand> &activeCommands =
m_nodesManager->computeJobManager()->activeHandles();
for (const HComputeCommand &handle : activeCommands) {
ComputeCommand *c = m_nodesManager->computeJobManager()->data(handle);
@@ -1549,7 +1549,7 @@ void Renderer::updateResources()
// RHITexture
if (m_submissionContext != nullptr) {
RHITextureManager *rhiTextureManager = m_RHIResourceManagers->rhiTextureManager();
- const QVector<HRHITexture> glTextureHandles = rhiTextureManager->activeHandles();
+ const std::vector<HRHITexture> &glTextureHandles = rhiTextureManager->activeHandles();
// Upload texture data
for (const HRHITexture &glTextureHandle : glTextureHandles) {
RHI_UNIMPLEMENTED;
@@ -2486,7 +2486,7 @@ void Renderer::cleanGraphicsResources()
// Remove unused GraphicsPipeline
RHIGraphicsPipelineManager *pipelineManager =
m_RHIResourceManagers->rhiGraphicsPipelineManager();
- const QVector<HRHIGraphicsPipeline> graphicsPipelinesHandles = pipelineManager->activeHandles();
+ const std::vector<HRHIGraphicsPipeline> &graphicsPipelinesHandles = pipelineManager->activeHandles();
for (HRHIGraphicsPipeline pipelineHandle : graphicsPipelinesHandles) {
RHIGraphicsPipeline *pipeline = pipelineManager->data(pipelineHandle);
pipeline->decreaseScore();
diff --git a/src/plugins/renderers/rhi/renderer/renderviewbuilder.cpp b/src/plugins/renderers/rhi/renderer/renderviewbuilder.cpp
index 6455d2e10..387c5ff8d 100644
--- a/src/plugins/renderers/rhi/renderer/renderviewbuilder.cpp
+++ b/src/plugins/renderers/rhi/renderer/renderviewbuilder.cpp
@@ -609,23 +609,23 @@ void RenderViewBuilder::prepareJobs()
if (m_materialGathererCacheNeedsToBeRebuilt) {
// Since Material gathering is an heavy task, we split it
- const QVector<HMaterial> materialHandles =
+ const std::vector<HMaterial> &materialHandles =
m_renderer->nodeManagers()->materialManager()->activeHandles();
- const int elementsPerJob =
- materialHandles.size() / RenderViewBuilder::m_optimalParallelJobCount;
- const int lastRemaingElements =
- materialHandles.size() % RenderViewBuilder::m_optimalParallelJobCount;
- m_materialGathererJobs.reserve(RenderViewBuilder::m_optimalParallelJobCount);
- for (auto i = 0; i < RenderViewBuilder::m_optimalParallelJobCount; ++i) {
- auto materialGatherer = MaterialParameterGathererJobPtr::create();
- materialGatherer->setNodeManagers(m_renderer->nodeManagers());
- if (i == RenderViewBuilder::m_optimalParallelJobCount - 1)
- materialGatherer->setHandles(materialHandles.mid(
- i * elementsPerJob, elementsPerJob + lastRemaingElements));
- else
- materialGatherer->setHandles(
- materialHandles.mid(i * elementsPerJob, elementsPerJob));
- m_materialGathererJobs.push_back(materialGatherer);
+ const size_t handlesCount = materialHandles.size();
+ if (handlesCount) {
+ m_materialGathererJobs.reserve(m_optimalParallelJobCount);
+ const size_t elementsPerJob = std::max(handlesCount / m_optimalParallelJobCount, size_t(1));
+ size_t elementCount = 0;
+ while (elementCount < handlesCount) {
+ auto materialGatherer = MaterialParameterGathererJobPtr::create();
+ materialGatherer->setNodeManagers(m_renderer->nodeManagers());
+ // TO DO: Candidate for std::span if C++20
+ materialGatherer->setHandles({materialHandles.begin() + elementCount,
+ materialHandles.begin() + std::min(elementCount + elementsPerJob, handlesCount)});
+ m_materialGathererJobs.push_back(materialGatherer);
+
+ elementCount += elementsPerJob;
+ }
}
m_syncMaterialGathererJob = SynchronizerJobPtr::create(
SyncMaterialParameterGatherer(m_materialGathererJobs, m_renderer, m_leafNode),
diff --git a/src/render/jobs/filterentitybycomponentjob_p.h b/src/render/jobs/filterentitybycomponentjob_p.h
index 58c3e310c..40bb75f37 100644
--- a/src/render/jobs/filterentitybycomponentjob_p.h
+++ b/src/render/jobs/filterentitybycomponentjob_p.h
@@ -83,7 +83,7 @@ public:
void run() override
{
m_filteredEntities.clear();
- const QVector<HEntity> handles = m_manager->activeHandles();
+ const std::vector<HEntity> &handles = m_manager->activeHandles();
m_filteredEntities.reserve(handles.size());
for (const HEntity &handle : handles) {
Entity *e = m_manager->data(handle);
diff --git a/src/render/jobs/filterlayerentityjob.cpp b/src/render/jobs/filterlayerentityjob.cpp
index 032004422..ae3cced59 100644
--- a/src/render/jobs/filterlayerentityjob.cpp
+++ b/src/render/jobs/filterlayerentityjob.cpp
@@ -152,7 +152,7 @@ void FilterLayerEntityJob::filterDiscardAllMatchingLayers(Entity *entity,
void FilterLayerEntityJob::filterLayerAndEntity()
{
EntityManager *entityManager = m_manager->renderNodesManager();
- const QVector<HEntity> handles = entityManager->activeHandles();
+ const std::vector<HEntity> &handles = entityManager->activeHandles();
QVector<Entity *> entitiesToFilter;
entitiesToFilter.reserve(handles.size());
@@ -215,7 +215,7 @@ void FilterLayerEntityJob::filterLayerAndEntity()
void FilterLayerEntityJob::selectAllEntities()
{
EntityManager *entityManager = m_manager->renderNodesManager();
- const QVector<HEntity> handles = entityManager->activeHandles();
+ const std::vector<HEntity> &handles = entityManager->activeHandles();
m_filteredEntities.reserve(handles.size());
for (const HEntity &handle : handles) {
diff --git a/src/render/jobs/filterproximitydistancejob.cpp b/src/render/jobs/filterproximitydistancejob.cpp
index 02b712fc2..56c3baa62 100644
--- a/src/render/jobs/filterproximitydistancejob.cpp
+++ b/src/render/jobs/filterproximitydistancejob.cpp
@@ -92,7 +92,7 @@ void FilterProximityDistanceJob::run()
void FilterProximityDistanceJob::selectAllEntities()
{
EntityManager *entityManager = m_manager->renderNodesManager();
- const QVector<HEntity> handles = entityManager->activeHandles();
+ const std::vector<HEntity> &handles = entityManager->activeHandles();
m_filteredEntities.reserve(handles.size());
for (const HEntity &handle : handles) {
diff --git a/src/render/jobs/lightgatherer.cpp b/src/render/jobs/lightgatherer.cpp
index b878b0a78..b3500806d 100644
--- a/src/render/jobs/lightgatherer.cpp
+++ b/src/render/jobs/lightgatherer.cpp
@@ -62,7 +62,7 @@ void LightGatherer::run()
m_lights.clear();
m_environmentLight = nullptr;
- const QVector<HEntity> handles = m_manager->activeHandles();
+ const std::vector<HEntity> &handles = m_manager->activeHandles();
int envLightCount = 0;
for (const HEntity &handle : handles) {
diff --git a/src/render/jobs/updateentitylayersjob.cpp b/src/render/jobs/updateentitylayersjob.cpp
index b8c50c179..62b3b1c78 100644
--- a/src/render/jobs/updateentitylayersjob.cpp
+++ b/src/render/jobs/updateentitylayersjob.cpp
@@ -61,7 +61,7 @@ void UpdateEntityLayersJob::run()
Q_ASSERT(m_manager);
EntityManager *entityManager = m_manager->renderNodesManager();
- const QVector<HEntity> handles = entityManager->activeHandles();
+ const std::vector<HEntity> &handles = entityManager->activeHandles();
// Clear list of recursive layerIds
for (const HEntity &handle : handles) {
diff --git a/src/render/jobs/updatemeshtrianglelistjob.cpp b/src/render/jobs/updatemeshtrianglelistjob.cpp
index 4837dcad6..77292a84f 100644
--- a/src/render/jobs/updatemeshtrianglelistjob.cpp
+++ b/src/render/jobs/updatemeshtrianglelistjob.cpp
@@ -79,7 +79,7 @@ void UpdateMeshTriangleListJob::run()
BufferManager *bufferManager = m_manager->bufferManager();
AttributeManager *attributeManager = m_manager->attributeManager();
- const QVector<HGeometryRenderer> handles = geomRenderermanager->activeHandles();
+ const std::vector<HGeometryRenderer> &handles = geomRenderermanager->activeHandles();
for (const HGeometryRenderer &handle : handles) {
// Look if for the GeometryRender/Geometry the attributes and or buffers are dirty
diff --git a/src/render/jobs/updateshaderdatatransformjob.cpp b/src/render/jobs/updateshaderdatatransformjob.cpp
index 11fe91932..f5cf3175b 100644
--- a/src/render/jobs/updateshaderdatatransformjob.cpp
+++ b/src/render/jobs/updateshaderdatatransformjob.cpp
@@ -81,7 +81,7 @@ NodeManagers *UpdateShaderDataTransformJob::managers() const
void UpdateShaderDataTransformJob::run()
{
EntityManager *manager = m_manager->renderNodesManager();
- const QVector<HEntity> handles = manager->activeHandles();
+ const std::vector<HEntity> &handles = manager->activeHandles();
for (const HEntity &handle : handles) {
Entity *node = manager->data(handle);
diff --git a/src/render/jobs/updateworldboundingvolumejob.cpp b/src/render/jobs/updateworldboundingvolumejob.cpp
index 65a3ec75d..ae1df3fd9 100644
--- a/src/render/jobs/updateworldboundingvolumejob.cpp
+++ b/src/render/jobs/updateworldboundingvolumejob.cpp
@@ -57,7 +57,7 @@ UpdateWorldBoundingVolumeJob::UpdateWorldBoundingVolumeJob()
void UpdateWorldBoundingVolumeJob::run()
{
- const QVector<HEntity> handles = m_manager->activeHandles();
+ const std::vector<HEntity> &handles = m_manager->activeHandles();
for (const HEntity &handle : handles) {
Entity *node = m_manager->data(handle);