generalized object render caches so they can be used for any object types

This commit is contained in:
itsmattkc
2019-12-06 13:30:57 +11:00
parent ffdd56c582
commit b8b9ae878b
5 changed files with 38 additions and 42 deletions
+4 -3
View File
@@ -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
)
+10
View File
@@ -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<Stream*, ColorProcessorPtr>;
#endif // COLORPROCESSORCACHE_H
-21
View File
@@ -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);
}
+2 -18
View File
@@ -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<Stream*, DecoderPtr> decoders_;
};
using DecoderCache = RenderCache<Stream*, DecoderPtr>;
#endif // DECODERCACHE_H
+22
View File
@@ -0,0 +1,22 @@
#ifndef RENDERCACHE_H
#define RENDERCACHE_H
#include <QMap>
template<class K, class V>
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<K, V> values_;
};
#endif // RENDERCACHE_H