summaryrefslogtreecommitdiff
path: root/libs/ardour/plugin_manager.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2014-02-25 13:11:07 +0100
committerRobin Gareus <robin@gareus.org>2014-02-25 14:57:59 +0100
commit0708721b4f9fca3967a6f1c436717ff2aca0baec (patch)
tree6b9bb5051d10b5c1728a9643bda229bc38be9fee /libs/ardour/plugin_manager.cc
parent30de04a58ccab82d00ff87ebdd2cece6c0aa388b (diff)
scan VSTs in background, allow to cancel & timeout
Diffstat (limited to 'libs/ardour/plugin_manager.cc')
-rw-r--r--libs/ardour/plugin_manager.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc
index 070936add1..c145fd3aa4 100644
--- a/libs/ardour/plugin_manager.cc
+++ b/libs/ardour/plugin_manager.cc
@@ -187,6 +187,7 @@ PluginManager::refresh (bool cache_only)
{
DEBUG_TRACE (DEBUG::PluginManager, "PluginManager::refresh\n");
BootMessage (_("Discovering Plugins"));
+ cancel_scan = false;
ladspa_refresh ();
#ifdef LV2_SUPPORT
@@ -210,12 +211,13 @@ PluginManager::refresh (bool cache_only)
PluginListChanged (); /* EMIT SIGNAL */
PluginScanMessage(X_("closeme"), "");
+ cancel_scan = false;
}
void
PluginManager::cancel_plugin_scan ()
{
- // TODO
+ cancel_scan = true;
}
void
@@ -661,6 +663,7 @@ PluginManager::windows_vst_discover_from_path (string path, bool cache_only)
if (plugin_objects) {
for (x = plugin_objects->begin(); x != plugin_objects->end (); ++x) {
+ if (cancelled()) break;
ARDOUR::PluginScanMessage(_("VST"), **x);
windows_vst_discover (**x, cache_only);
}
@@ -800,6 +803,7 @@ PluginManager::lxvst_discover_from_path (string path, bool cache_only)
if (plugin_objects) {
for (x = plugin_objects->begin(); x != plugin_objects->end (); ++x) {
+ if (cancelled()) break;
ARDOUR::PluginScanMessage(_("LXVST"), **x);
lxvst_discover (**x, cache_only);
}