cache: fixed signalling issue where changing default input didn't update the cache

This commit is contained in:
itsmattkc
2020-04-21 23:48:26 +10:00
parent 81ad7b5054
commit 38fcad6a3f
9 changed files with 79 additions and 51 deletions
+1 -1
View File
@@ -77,7 +77,7 @@ void OpenGLProxy::FrameToValue(FramePtr frame, StreamPtr stream, NodeValueTable*
ImageStreamPtr video_stream = std::static_pointer_cast<ImageStream>(stream);
// Set up OCIO context
QString colorspace_match = QStringLiteral("%1:%2").arg(video_stream->footage()->project()->ocio_config(), video_stream->colorspace());
QString colorspace_match = QStringLiteral("%1:%2").arg(video_stream->footage()->project()->color_manager()->GetConfigFilename(), video_stream->colorspace());
OpenGLTextureCache::ReferencePtr footage_tex_ref = nullptr;
+1 -1
View File
@@ -190,7 +190,7 @@ void VideoRenderWorker::HashNodeRecursively(QCryptographicHash *hash, const Node
ImageStreamPtr image_stream = std::static_pointer_cast<ImageStream>(stream);
// Current color config and space
hash->addData(image_stream->footage()->project()->ocio_config().toUtf8());
hash->addData(image_stream->footage()->project()->color_manager()->GetConfigFilename().toUtf8());
hash->addData(image_stream->colorspace().toUtf8());
// Alpha associated setting
+50 -6
View File
@@ -42,24 +42,62 @@ OCIO::ConstConfigRcPtr ColorManager::GetConfig() const
return config_;
}
const QString &ColorManager::GetConfigFilename() const
{
return config_filename_;
}
void ColorManager::SetConfig(const QString &filename)
{
if (filename != config_filename_) {
SetConfigInternal(filename);
emit ConfigChanged();
}
}
void ColorManager::SetConfigInternal(const QString &filename)
{
config_filename_ = filename;
OCIO::ConstConfigRcPtr cfg;
if (filename.isEmpty()) {
if (config_filename_.isEmpty()) {
cfg = OCIO::Config::CreateFromEnv();
} else {
cfg = OCIO::Config::CreateFromFile(filename.toUtf8());
}
SetConfig(cfg);
config_ = cfg;
}
void ColorManager::SetConfig(OCIO::ConstConfigRcPtr config)
void ColorManager::SetDefaultInputColorSpaceInternal(const QString &s)
{
config_ = config;
default_input_color_space_ = s;
}
emit ConfigChanged();
void ColorManager::SetConfigAndDefaultInput(const QString &filename, const QString &s)
{
bool config_changed = false;
bool default_input_changed = false;
if (filename != config_filename_) {
SetConfigInternal(filename);
config_changed = true;
}
if (default_input_color_space_ != s) {
SetDefaultInputColorSpaceInternal(s);
default_input_changed = true;
}
if (config_changed) {
emit ConfigChanged();
}
if (default_input_changed) {
emit DefaultInputColorSpaceChanged();
}
}
void ColorManager::DisassociateAlpha(FramePtr f)
@@ -138,7 +176,11 @@ const QString &ColorManager::GetDefaultInputColorSpace() const
void ColorManager::SetDefaultInputColorSpace(const QString &s)
{
default_input_color_space_ = s;
if (default_input_color_space_ != s) {
SetDefaultInputColorSpaceInternal(s);
emit DefaultInputColorSpaceChanged();
}
}
const QString &ColorManager::GetReferenceColorSpace() const
@@ -149,6 +191,8 @@ const QString &ColorManager::GetReferenceColorSpace() const
void ColorManager::SetReferenceColorSpace(const QString &s)
{
reference_space_ = s;
emit ConfigChanged();
}
QStringList ColorManager::ListAvailableInputColorspaces(OCIO::ConstConfigRcPtr config)
+11 -1
View File
@@ -36,9 +36,11 @@ public:
OCIO::ConstConfigRcPtr GetConfig() const;
const QString& GetConfigFilename() const;
void SetConfig(const QString& filename);
void SetConfig(OCIO::ConstConfigRcPtr config);
void SetConfigAndDefaultInput(const QString& filename, const QString& s);
static void DisassociateAlpha(FramePtr f);
@@ -80,7 +82,13 @@ public:
signals:
void ConfigChanged();
void DefaultInputColorSpaceChanged();
private:
void SetConfigInternal(const QString& filename);
void SetDefaultInputColorSpaceInternal(const QString& s);
OCIO::ConstConfigRcPtr config_;
enum AlphaAction {
@@ -94,6 +102,8 @@ private:
template<typename T>
static void AssociateAlphaInternal(AlphaAction action, T* data, int pix_count);
QString config_filename_;
QString default_input_color_space_;
QString reference_space_;