From 2e3072623a7522466f071ffacb838ccf5883136a Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Tue, 16 Jun 2020 02:45:06 +1000 Subject: [PATCH] renderer: use qvectors instead of qlists Should be much more efficient for large-scale projects. --- app/render/backend/renderbackend.cpp | 14 +++++++------- app/render/backend/renderbackend.h | 2 +- app/render/framehashcache.cpp | 8 ++++---- app/render/framehashcache.h | 6 +++--- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/app/render/backend/renderbackend.cpp b/app/render/backend/renderbackend.cpp index 5281a25e5..636b5808c 100644 --- a/app/render/backend/renderbackend.cpp +++ b/app/render/backend/renderbackend.cpp @@ -113,15 +113,15 @@ void RenderBackend::ClearVideoQueue() render_queue_.clear(); } -QFuture > RenderBackend::Hash(const QList ×) +QFuture > RenderBackend::Hash(const QVector ×) { - return QtConcurrent::run(&pool_, [this](const QList ×){ - QList hashes; + return QtConcurrent::run(&pool_, [this](const QVector ×){ + QVector hashes(times.size()); - foreach (const rational& t, times) { - hashes.append(HashNode(copied_viewer_node_->texture_input()->get_connected_node(), - video_params_, - t)); + for (int i=0;itexture_input()->get_connected_node(), + video_params_, + times.at(i)); } return hashes; diff --git a/app/render/backend/renderbackend.h b/app/render/backend/renderbackend.h index 49dcb0e25..90c7d3ca9 100644 --- a/app/render/backend/renderbackend.h +++ b/app/render/backend/renderbackend.h @@ -69,7 +69,7 @@ public: /** * @brief Asynchronously generate a hash at a given time */ - QFuture > Hash(const QList& times); + QFuture > Hash(const QVector ×); /** * @brief Asynchronously generate a frame at a given time diff --git a/app/render/framehashcache.cpp b/app/render/framehashcache.cpp index edd3d4772..e3169bdbe 100644 --- a/app/render/framehashcache.cpp +++ b/app/render/framehashcache.cpp @@ -139,9 +139,9 @@ QString FrameHashCache::GetFormatExtension() return QStringLiteral(".exr"); } -QList FrameHashCache::GetFrameListFromTimeRange(TimeRangeList range_list, const rational &timebase) +QVector FrameHashCache::GetFrameListFromTimeRange(TimeRangeList range_list, const rational &timebase) { - QList times; + QVector times; while (!range_list.isEmpty()) { const TimeRange& range = range_list.first(); @@ -164,14 +164,14 @@ QList FrameHashCache::GetFrameListFromTimeRange(TimeRangeList range_li return times; } -QList FrameHashCache::GetFrameListFromTimeRange(const TimeRangeList &range) +QVector FrameHashCache::GetFrameListFromTimeRange(const TimeRangeList &range) { QMutexLocker locker(lock()); return GetFrameListFromTimeRange(range, timebase_); } -QList FrameHashCache::GetInvalidatedFrames() +QVector FrameHashCache::GetInvalidatedFrames() { QMutexLocker locker(lock()); diff --git a/app/render/framehashcache.h b/app/render/framehashcache.h index a630e68c4..2f77d9de3 100644 --- a/app/render/framehashcache.h +++ b/app/render/framehashcache.h @@ -68,9 +68,9 @@ public: static QString GetFormatExtension(); - static QList GetFrameListFromTimeRange(TimeRangeList range_list, const rational& timebase); - QList GetFrameListFromTimeRange(const TimeRangeList &range); - QList GetInvalidatedFrames(); + static QVector GetFrameListFromTimeRange(TimeRangeList range_list, const rational& timebase); + QVector GetFrameListFromTimeRange(const TimeRangeList &range); + QVector GetInvalidatedFrames(); protected: virtual void LengthChangedEvent(const rational& old, const rational& newlen) override;