cache: fixed signalling issue where changing default input didn't update the cache
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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_;
|
||||
|
||||
Reference in New Issue
Block a user