Fix crash when certain effects are open and a new project window is created

This affected VST, LADSPA, LV2, and Audio Unit effects.
This commit is contained in:
Leland Lucius 2015-05-16 22:10:09 -05:00
parent 0d89483df7
commit a7203c5d3f
3 changed files with 19 additions and 2 deletions

View File

@ -2190,6 +2190,8 @@ const PluginDescriptor *PluginManager::GetNextPlugin(PluginType type)
const PluginDescriptor *PluginManager::GetFirstPluginForEffectType(EffectType type)
{
EffectManager & em = EffectManager::Get();
for (mPluginsIter = mPlugins.begin(); mPluginsIter != mPlugins.end(); ++mPluginsIter)
{
PluginDescriptor & plug = mPluginsIter->second;
@ -2198,7 +2200,7 @@ const PluginDescriptor *PluginManager::GetFirstPluginForEffectType(EffectType ty
gPrefs->Read(plug.GetEffectFamily() + wxT("/Enable"), &familyEnabled, true);
if (plug.IsValid() && plug.IsEnabled() && plug.GetEffectType() == type && familyEnabled)
{
if (plug.IsInstantiated() && ((Effect *)plug.GetInstance())->IsHidden())
if (plug.IsInstantiated() && em.IsHidden(plug.GetID()))
{
continue;
}
@ -2212,6 +2214,8 @@ const PluginDescriptor *PluginManager::GetFirstPluginForEffectType(EffectType ty
const PluginDescriptor *PluginManager::GetNextPluginForEffectType(EffectType type)
{
EffectManager & em = EffectManager::Get();
while (++mPluginsIter != mPlugins.end())
{
PluginDescriptor & plug = mPluginsIter->second;
@ -2219,7 +2223,7 @@ const PluginDescriptor *PluginManager::GetNextPluginForEffectType(EffectType typ
gPrefs->Read(plug.GetEffectFamily() + wxT("/Enable"), &familyEnabled, true);
if (plug.IsValid() && plug.IsEnabled() && plug.GetEffectType() == type && familyEnabled)
{
if (plug.IsInstantiated() && ((Effect *)plug.GetInstance())->IsHidden())
if (plug.IsInstantiated() && em.IsHidden(plug.GetID()))
{
continue;
}

View File

@ -147,6 +147,18 @@ wxString EffectManager::GetEffectDescription(const PluginID & ID)
return wxEmptyString;
}
bool EffectManager::IsHidden(const PluginID & ID)
{
Effect *effect = GetEffect(ID);
if (effect)
{
return effect->IsHidden();
}
return false;
}
bool EffectManager::SupportsAutomation(const PluginID & ID)
{
const PluginDescriptor *plug = PluginManager::Get().GetPlugin(ID);

View File

@ -76,6 +76,7 @@ public:
wxString GetEffectName(const PluginID & ID);
wxString GetEffectIdentifier(const PluginID & ID);
wxString GetEffectDescription(const PluginID & ID);
bool IsHidden(const PluginID & ID);
/** Support for batch commands */
bool SupportsAutomation(const PluginID & ID);