Skip to content

Commit

Permalink
Proposed fix for 856 Recursive VST Effect Enhancement Request
Browse files Browse the repository at this point in the history
  • Loading branch information
curlymorphic committed Dec 21, 2014
1 parent a774e5d commit 0d44dc6
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 11 deletions.
33 changes: 28 additions & 5 deletions plugins/VstEffect/VstSubPluginFeatures.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
#include "ConfigManager.h"



VstSubPluginFeatures::VstSubPluginFeatures( Plugin::PluginTypes _type ) :
SubPluginFeatures( _type )
{
Expand All @@ -52,16 +53,38 @@ void VstSubPluginFeatures::fillDescriptionWidget( QWidget * _parent,
void VstSubPluginFeatures::listSubPluginKeys( const Plugin::Descriptor * _desc,
KeyList & _kl ) const
{
QStringList dlls = QDir( ConfigManager::inst()->vstDir() ).
entryList( QStringList() << "*.dll",
QDir::Files, QDir::Name );
QStringList *dlls = new QStringList();
const QString path = QString("");
addPluginsFromDir(dlls, path );
// TODO: eval m_type
for( QStringList::ConstIterator it = dlls.begin();
it != dlls.end(); ++it )
for( QStringList::ConstIterator it = dlls->begin();
it != dlls->end(); ++it )
{
EffectKey::AttributeMap am;
am["file"] = *it;
_kl.push_back( Key( _desc, QFileInfo( *it ).baseName(), am ) );
}
delete dlls;
}

void VstSubPluginFeatures::addPluginsFromDir(QStringList* filenames, QString path) const
{
QStringList dirs = QDir ( ConfigManager::inst()->vstDir() + path ).
entryList( QStringList() << "*" ,
QDir::Dirs, QDir::Name );
for(int i = 0; i < dirs.size(); i++)
{
if(dirs.at( i )[0] != '.' )
{
addPluginsFromDir( filenames, path+QDir::separator() + dirs.at( i ) );
}
}
QStringList dlls = QDir( ConfigManager::inst()->vstDir() + path ).
entryList( QStringList() << "*.dll",
QDir::Files, QDir::Name );
for(int i = 0; i < dlls.size(); i++)
{
filenames->append(path + QDir::separator() + dlls.at( i ));
}
}

7 changes: 6 additions & 1 deletion plugins/VstEffect/VstSubPluginFeatures.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,13 @@ class VstSubPluginFeatures : public Plugin::Descriptor::SubPluginFeatures

virtual void listSubPluginKeys( const Plugin::Descriptor * _desc,
KeyList & _kl ) const;

private:
void addPluginsFromDir(QStringList* filenames, QString path) const;
} ;





#endif

7 changes: 3 additions & 4 deletions plugins/vst_base/VstPlugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -172,10 +172,9 @@ void VstPlugin::tryLoad( const QString &remoteVstPluginExecutable )


QString p = m_plugin;
if( QFileInfo( p ).dir().isRelative() )
{
p = ConfigManager::inst()->vstDir() + QDir::separator() + p;
}
p.remove(0,1);
p = ConfigManager::inst()->vstDir() + p;


sendMessage( message( IdVstLoadPlugin ).addString( QSTR_TO_STDSTR( p ) ) );

Expand Down
2 changes: 1 addition & 1 deletion src/core/RemotePlugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ bool RemotePlugin::init( const QString &pluginExecutable,
m_failed = false;
}
QString exec = ConfigManager::inst()->pluginDir() +
QDir::separator() + pluginExecutable;
pluginExecutable;

QStringList args;
// swap in and out for bidirectional communication
Expand Down

0 comments on commit 0d44dc6

Please sign in to comment.