From e10b1462ff75965fc0bbe35ec6b6311e64cf39dd Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Tue, 9 Jun 2020 02:36:11 +1000 Subject: [PATCH] renderbackend: moved bulk of hashing code to static function so more code has access to it --- app/render/backend/renderbackend.cpp | 28 +++++++++++++++++----------- app/render/backend/renderbackend.h | 2 ++ 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/app/render/backend/renderbackend.cpp b/app/render/backend/renderbackend.cpp index 73122d889..f2b9196b7 100644 --- a/app/render/backend/renderbackend.cpp +++ b/app/render/backend/renderbackend.cpp @@ -119,17 +119,9 @@ QFuture > RenderBackend::Hash(const QList ×) QList hashes; foreach (const rational& t, times) { - QCryptographicHash hasher(QCryptographicHash::Sha1); - - // Embed video parameters into this hash - hasher.addData(reinterpret_cast(&video_params_.effective_width()), sizeof(int)); - hasher.addData(reinterpret_cast(&video_params_.effective_height()), sizeof(int)); - hasher.addData(reinterpret_cast(&video_params_.format()), sizeof(PixelFormat::Format)); - hasher.addData(reinterpret_cast(&render_mode_), sizeof(RenderMode::Mode)); - - copied_viewer_node_->texture_input()->get_connected_node()->Hash(hasher, t); - - hashes.append(hasher.result()); + hashes.append(HashNode(copied_viewer_node_->texture_input()->get_connected_node(), + video_params_, + t)); } return hashes; @@ -347,6 +339,20 @@ void RenderBackend::ProcessUpdateQueue() CopyNodeInputValue(viewer_node_->samples_input()); } +QByteArray RenderBackend::HashNode(const Node *n, const VideoParams ¶ms, const rational &time) +{ + QCryptographicHash hasher(QCryptographicHash::Sha1); + + // Embed video parameters into this hash + hasher.addData(reinterpret_cast(¶ms.effective_width()), sizeof(int)); + hasher.addData(reinterpret_cast(¶ms.effective_height()), sizeof(int)); + hasher.addData(reinterpret_cast(¶ms.format()), sizeof(PixelFormat::Format)); + + n->Hash(hasher, time); + + return hasher.result(); +} + void RenderBackend::WorkerFinished() { RenderWorker* worker = static_cast(sender()); diff --git a/app/render/backend/renderbackend.h b/app/render/backend/renderbackend.h index a56569636..49dcb0e25 100644 --- a/app/render/backend/renderbackend.h +++ b/app/render/backend/renderbackend.h @@ -64,6 +64,8 @@ public: void ProcessUpdateQueue(); + static QByteArray HashNode(const Node* n, const VideoParams& params, const rational& time); + /** * @brief Asynchronously generate a hash at a given time */