solve some bugs

This commit is contained in:
2026-01-05 18:01:13 +08:00
parent 6b64abb1fa
commit 8ed5660faf
17 changed files with 203 additions and 79 deletions
+9 -1
View File
@@ -124,7 +124,15 @@ const std::string &olive::plugin::OliveClipInstance::getFieldOrder() const
}
bool olive::plugin::OliveClipInstance::getConnected() const
{
return params_.format() == PixelFormat::INVALID;
if (name_ == kOfxImageEffectOutputClipName) {
return true;
}
#ifdef OFX_SUPPORTS_OPENGLRENDER
if (!input_textures_.isEmpty()) {
return true;
}
#endif
return !images_.isEmpty();
}
double olive::plugin::OliveClipInstance::getUnmappedFrameRate() const
{
+12 -7
View File
@@ -71,15 +71,20 @@ void AddPluginPathsFromEnv(OFX::Host::PluginCache *cache, const char *env_var)
void olive::plugin::loadPlugins(QString path)
{
std::shared_ptr<OliveHost> host = std::make_shared<OliveHost>();
Current::getInstance().setPluginHost(host);
std::shared_ptr<OliveHost> host = Current::getInstance().pluginHost();
std::shared_ptr<ImageEffect::PluginCache> imageEffectPluginCache =
std::make_shared<ImageEffect::PluginCache>(*host);
Current::getInstance().setPluginCache(imageEffectPluginCache);
Current::getInstance().pluginCache();
imageEffectPluginCache->registerInCache(
*OFX::Host::PluginCache::getPluginCache());
if (!host || !imageEffectPluginCache) {
host = std::make_shared<OliveHost>();
Current::getInstance().setPluginHost(host);
imageEffectPluginCache = std::make_shared<ImageEffect::PluginCache>(*host);
Current::getInstance().setPluginCache(imageEffectPluginCache);
imageEffectPluginCache->registerInCache(
*OFX::Host::PluginCache::getPluginCache());
}
OFX::Host::PluginCache *cache = OFX::Host::PluginCache::getPluginCache();
cache->setPluginHostPath("Olive");
+8
View File
@@ -53,6 +53,14 @@ public:
bool pluginSupported(OFX::Host::ImageEffect::ImageEffectPlugin *plugin,
std::string &reason) const override
{
if (!plugin) {
reason = "null plugin";
return false;
}
if (plugin->getContexts().empty()) {
reason = "no supported contexts (describe failed)";
return false;
}
return true;
};
+2 -1
View File
@@ -53,7 +53,8 @@ public:
{
}
OlivePluginInstance(OlivePluginInstance& instance)
: Instance(_plugin, *_descriptor, _context, _interactive)
: Instance(instance._plugin, *instance._descriptor, instance._context,
instance._interactive)
{
_clips=instance._clips;
_created=instance._created;