diff options
author | Robin Gareus <robin@gareus.org> | 2014-02-24 03:53:53 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2014-02-24 03:53:53 +0100 |
commit | 59cc85b8211a7f2d171eb3e35444a6532bbd1d8a (patch) | |
tree | 10d8264303ecc8367958c6972a99ff31da28c7fe /libs/ardour/plugin_manager.cc | |
parent | 22905d8a935534baecaf6cce540d103014f7095d (diff) |
plugin scan progress-display & preferences
Diffstat (limited to 'libs/ardour/plugin_manager.cc')
-rw-r--r-- | libs/ardour/plugin_manager.cc | 67 |
1 files changed, 65 insertions, 2 deletions
diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc index e6a0b40ae5..6a20191cf1 100644 --- a/libs/ardour/plugin_manager.cc +++ b/libs/ardour/plugin_manager.cc @@ -46,6 +46,7 @@ #include <cstring> #endif //LXVST_SUPPORT +#include <glib/gstdio.h> #include <glibmm/miscutils.h> #include <glibmm/pattern.h> @@ -108,6 +109,7 @@ PluginManager::PluginManager () , _ladspa_plugin_info(0) , _lv2_plugin_info(0) , _au_plugin_info(0) + , cancel_scan(false) { char* s; string lrdf_path; @@ -204,6 +206,69 @@ PluginManager::refresh () } void +PluginManager::cancel_plugin_scan () +{ + // TODO +} + +void +PluginManager::clear_vst_cache () +{ + // see also libs/ardour/vst_info_file.cc - vstfx_infofile_path() +#ifdef WINDOWS_VST_SUPPORT + { + PathScanner scanner; + vector<string *> *fsi_files; + + fsi_files = scanner (windows_vst_path, "\\.fsi$", true, true, -1, false); + if (fsi_files) { + for (vector<string *>::iterator i = fsi_files->begin(); i != fsi_files->end (); ++i) { + ::g_unlink((*i)->c_str()); + } + } + vector_delete(fsi_files); + } +#endif + +#ifdef LXVST_SUPPORT + { + PathScanner scanner; + vector<string *> *fsi_files; + fsi_files = scanner (lxvst_path, "\\.fsi$", true, true, -1, false); + if (fsi_files) { + for (vector<string *>::iterator i = fsi_files->begin(); i != fsi_files->end (); ++i) { + ::g_unlink((*i)->c_str()); + } + } + vector_delete(fsi_files); + } +#endif + +#if (defined WINDOWS_VST_SUPPORT || defined LXVST_SUPPORT) + { + string personal; + personal = Glib::build_filename (Glib::get_home_dir (), ".fst"); + + PathScanner scanner; + vector<string *> *fsi_files; + fsi_files = scanner (personal, "\\.fsi$", true, true, -1, false); + if (fsi_files) { + for (vector<string *>::iterator i = fsi_files->begin(); i != fsi_files->end (); ++i) { + ::g_unlink((*i)->c_str()); + } + } + vector_delete(fsi_files); + } +#endif +} + +void +PluginManager::clear_vst_blacklist () +{ + // TODO -> libs/ardour/vst_info_file.cc +} + +void PluginManager::ladspa_refresh () { if (_ladspa_plugin_info) { @@ -567,7 +632,6 @@ PluginManager::windows_vst_discover (string path) if (finfos->empty()) { DEBUG_TRACE (DEBUG::PluginManager, string_compose ("Cannot get Windows VST information from '%1'\n", path)); - warning << "Cannot get Windows VST information from " << path << endmsg; return -1; } @@ -706,7 +770,6 @@ PluginManager::lxvst_discover (string path) if (finfos->empty()) { DEBUG_TRACE (DEBUG::PluginManager, string_compose ("Cannot get Linux VST information from '%1'\n", path)); - warning << "Cannot get Linux VST information from " << path << endmsg; return -1; } |