diff options
author | Robin Gareus <robin@gareus.org> | 2014-11-12 03:54:18 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2014-11-12 04:58:53 +0100 |
commit | 1bc04ae3510d12df495188514c827a9685027d54 (patch) | |
tree | a344c3dd82d3363b88fb43f1a0cc35415b3a8112 /libs/ardour/plugin_manager.cc | |
parent | aa9dda2c6abd25fa8d6488c323ff213cacc526ca (diff) |
failsafe AU scanning part one:
Don’t scan for AU plugins unless users explicitly starts a
plugin scan. Disable automatic scanning if Ardour crashes
during AU plugin discovery.
Diffstat (limited to 'libs/ardour/plugin_manager.cc')
-rw-r--r-- | libs/ardour/plugin_manager.cc | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc index 1791e2f10d..344b2ef9b6 100644 --- a/libs/ardour/plugin_manager.cc +++ b/libs/ardour/plugin_manager.cc @@ -243,7 +243,7 @@ PluginManager::refresh (bool cache_only) #ifdef AUDIOUNIT_SUPPORT BootMessage (_("Scanning AU Plugins")); - au_refresh (); + au_refresh (cache_only); #endif BootMessage (_("Plugin Scan Complete...")); @@ -604,11 +604,23 @@ PluginManager::lv2_refresh () #ifdef AUDIOUNIT_SUPPORT void -PluginManager::au_refresh () +PluginManager::au_refresh (bool cache_only) { DEBUG_TRACE (DEBUG::PluginManager, "AU: refresh\n"); + if (cache_only && !Config->get_discover_audio_units ()) { + return; + } delete _au_plugin_info; + + // disable automatic scan in case we crash + Config->set_discover_audio_units (false); + Config->save_state(); + _au_plugin_info = AUPluginInfo::discover(); + + // successful scan re-enabled automatic discovery + Config->set_discover_audio_units (true); + Config->save_state(); } #endif @@ -1050,9 +1062,9 @@ ARDOUR::PluginInfoList& PluginManager::au_plugin_info () { #ifdef AUDIOUNIT_SUPPORT - assert(_au_plugin_info); - return *_au_plugin_info; -#else - return _empty_plugin_info; + if (_au_plugin_info) { + return *_au_plugin_info; + } #endif + return _empty_plugin_info; } |