diff options
author | Aurélien Brooke <aurelien@bahiasoft.fr> | 2022-12-18 10:49:43 +0100 |
---|---|---|
committer | Aurélien Brooke <aurelien@bahiasoft.fr> | 2022-12-19 08:50:15 +0100 |
commit | b15f62e3234a85d7220fc1533b6a224522dd4735 (patch) | |
tree | 396ac5fea8548e2b68e5371f49d035b09128d984 /src/render/frontend | |
parent | 43a7aad707ece710fce1ace0c2c24aee23ddfa2d (diff) |
Fix incorrect usages of std::make_move_iterator
In several places, std::make_move_iterator was used to move from a const
vector, which is not possible and fell back to copy.
Use the existing Qt3DCore::moveAtEnd utility to ensure a move operation
is actually happening.
* When readability permits, pass directly a return value as second
parameter;
* Otherwise, std::move from a mutable vector.
Change-Id: I56c8925bbdeab95257d0a7fa89cffcda53fd6451
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/frontend')
-rw-r--r-- | src/render/frontend/qrenderaspect.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/render/frontend/qrenderaspect.cpp b/src/render/frontend/qrenderaspect.cpp index 1626128c9..b8508cef1 100644 --- a/src/render/frontend/qrenderaspect.cpp +++ b/src/render/frontend/qrenderaspect.cpp @@ -148,6 +148,7 @@ #include <Qt3DCore/private/qaspectmanager_p.h> #include <Qt3DCore/private/qeventfilterservice_p.h> #include <Qt3DCore/private/calcboundingvolumejob_p.h> +#include <Qt3DCore/private/vector_helper_p.h> #include <QThread> #include <QOpenGLContext> @@ -667,11 +668,9 @@ std::vector<Qt3DCore::QAspectJobPtr> QRenderAspect::jobsToExecute(qint64 time) jobs.push_back(job); } - const std::vector<QAspectJobPtr> geometryJobs = d->createGeometryRendererJobs(); - jobs.insert(jobs.end(), std::make_move_iterator(geometryJobs.begin()), std::make_move_iterator(geometryJobs.end())); + Qt3DCore::moveAtEnd(jobs, d->createGeometryRendererJobs()); - const std::vector<QAspectJobPtr> preRenderingJobs = d->createPreRendererJobs(); - jobs.insert(jobs.end(), std::make_move_iterator(preRenderingJobs.begin()), std::make_move_iterator(preRenderingJobs.end())); + Qt3DCore::moveAtEnd(jobs, d->createPreRendererJobs()); // Don't spawn any rendering jobs, if the renderer decides to skip this frame // Note: this only affects rendering jobs (jobs that load buffers, @@ -723,8 +722,7 @@ std::vector<Qt3DCore::QAspectJobPtr> QRenderAspect::jobsToExecute(qint64 time) if (layersDirty) jobs.push_back(d->m_updateEntityLayersJob); - const std::vector<QAspectJobPtr> renderBinJobs = d->m_renderer->renderBinJobs(); - jobs.insert(jobs.end(), std::make_move_iterator(renderBinJobs.begin()), std::make_move_iterator(renderBinJobs.end())); + Qt3DCore::moveAtEnd(jobs, d->m_renderer->renderBinJobs()); } return jobs; |