From b8b9ae878bbad8be3e7fe71e43a6141b0f98f461 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Fri, 6 Dec 2019 13:30:57 +1100 Subject: [PATCH] generalized object render caches so they can be used for any object types --- app/render/backend/CMakeLists.txt | 7 ++++--- app/render/backend/colorprocessorcache.h | 10 ++++++++++ app/render/backend/decodercache.cpp | 21 --------------------- app/render/backend/decodercache.h | 20 ++------------------ app/render/backend/rendercache.h | 22 ++++++++++++++++++++++ 5 files changed, 38 insertions(+), 42 deletions(-) create mode 100644 app/render/backend/colorprocessorcache.h delete mode 100644 app/render/backend/decodercache.cpp create mode 100644 app/render/backend/rendercache.h diff --git a/app/render/backend/CMakeLists.txt b/app/render/backend/CMakeLists.txt index 663d5c548..4df8c6e0c 100644 --- a/app/render/backend/CMakeLists.txt +++ b/app/render/backend/CMakeLists.txt @@ -21,9 +21,6 @@ add_subdirectory(vulkan) set(OLIVE_SOURCES ${OLIVE_SOURCES} - render/backend/decodercache.h - render/backend/decodercache.cpp - render/backend/renderbackend.h render/backend/renderbackend.cpp render/backend/renderworker.h @@ -40,6 +37,10 @@ set(OLIVE_SOURCES render/backend/videorenderframecache.cpp render/backend/videorenderworker.h render/backend/videorenderworker.cpp + + render/backend/rendercache.h + render/backend/colorprocessorcache.h + render/backend/decodercache.h PARENT_SCOPE ) diff --git a/app/render/backend/colorprocessorcache.h b/app/render/backend/colorprocessorcache.h new file mode 100644 index 000000000..70512d02e --- /dev/null +++ b/app/render/backend/colorprocessorcache.h @@ -0,0 +1,10 @@ +#ifndef COLORPROCESSORCACHE_H +#define COLORPROCESSORCACHE_H + +#include "project/item/footage/stream.h" +#include "render/colorprocessor.h" +#include "rendercache.h" + +using ColorProcessorCache = RenderCache; + +#endif // COLORPROCESSORCACHE_H diff --git a/app/render/backend/decodercache.cpp b/app/render/backend/decodercache.cpp deleted file mode 100644 index 29939c289..000000000 --- a/app/render/backend/decodercache.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "decodercache.h" - -DecoderCache::DecoderCache() -{ - -} - -void DecoderCache::Clear() -{ - decoders_.clear(); -} - -void DecoderCache::AddDecoder(Stream *stream, DecoderPtr shader) -{ - decoders_.insert(stream, shader); -} - -DecoderPtr DecoderCache::GetDecoder(Stream *stream) -{ - return decoders_.value(stream); -} diff --git a/app/render/backend/decodercache.h b/app/render/backend/decodercache.h index 47011e965..6cda4c30f 100644 --- a/app/render/backend/decodercache.h +++ b/app/render/backend/decodercache.h @@ -3,24 +3,8 @@ #include "decoder/decoder.h" #include "project/item/footage/stream.h" +#include "rendercache.h" -/** - * @brief Thread-safe cache of decoders - */ -class DecoderCache -{ -public: - DecoderCache(); - - void Clear(); - - void AddDecoder(Stream* stream, DecoderPtr shader); - - DecoderPtr GetDecoder(Stream* stream); - -private: - QMap decoders_; - -}; +using DecoderCache = RenderCache; #endif // DECODERCACHE_H diff --git a/app/render/backend/rendercache.h b/app/render/backend/rendercache.h new file mode 100644 index 000000000..e38f7bf56 --- /dev/null +++ b/app/render/backend/rendercache.h @@ -0,0 +1,22 @@ +#ifndef RENDERCACHE_H +#define RENDERCACHE_H + +#include + +template +class RenderCache +{ +public: + RenderCache() = default; + + void Clear(){values_.clear();} + + void Add(K stream, V shader){values_.insert(stream, shader);} + + V Get(K stream){return values_.value(stream);} + +private: + QMap values_; +}; + +#endif // RENDERCACHE_H