diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ardour/audio_unit.h | 1 | ||||
-rw-r--r-- | libs/ardour/audio_unit.cc | 13 | ||||
-rw-r--r-- | libs/ardour/plugin_manager.cc | 6 |
3 files changed, 15 insertions, 5 deletions
diff --git a/libs/ardour/ardour/audio_unit.h b/libs/ardour/ardour/audio_unit.h index 9eb7901af3..448584251c 100644 --- a/libs/ardour/ardour/audio_unit.h +++ b/libs/ardour/ardour/audio_unit.h @@ -258,6 +258,7 @@ class LIBARDOUR_API AUPluginInfo : public PluginInfo { bool reconfigurable_io() const { return true; } + static void clear_cache (); static PluginInfoList* discover (bool scan_only); static bool au_get_crashlog (std::string &msg); static std::string stringify_descriptor (const CAComponentDescription&); diff --git a/libs/ardour/audio_unit.cc b/libs/ardour/audio_unit.cc index 1862844cd9..e28d892053 100644 --- a/libs/ardour/audio_unit.cc +++ b/libs/ardour/audio_unit.cc @@ -2698,6 +2698,8 @@ AUPluginInfo::discover (bool scan_only) if (!Glib::file_test (au_cache_path(), Glib::FILE_TEST_EXISTS)) { ARDOUR::BootMessage (_("Discovering AudioUnit plugins (could take some time ...)")); + // flush RAM cache -- after clear_cache() + cached_info.clear(); } // create crash log file au_start_crashlog (); @@ -3073,6 +3075,17 @@ AUPluginInfo::cached_io_configuration (const std::string& unique_id, } void +AUPluginInfo::clear_cache () +{ + const string& fn = au_cache_path(); + if (Glib::file_test (fn, Glib::FILE_TEST_EXISTS)) { + ::g_unlink(fn.c_str()); + } + // keep cached_info in RAM until restart or re-scan + cached_info.clear(); +} + +void AUPluginInfo::add_cached_info (const std::string& id, AUPluginCachedInfo& cinfo) { cached_info[id] = cinfo; diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc index 5f8ad720c4..d868b1d00a 100644 --- a/libs/ardour/plugin_manager.cc +++ b/libs/ardour/plugin_manager.cc @@ -437,11 +437,7 @@ void PluginManager::clear_au_cache () { #ifdef AUDIOUNIT_SUPPORT - // AUPluginInfo::au_cache_path () - string fn = Glib::build_filename (ARDOUR::user_cache_directory(), "au_cache"); - if (Glib::file_test (fn, Glib::FILE_TEST_EXISTS)) { - ::g_unlink(fn.c_str()); - } + AUPluginInfo::clear_cache (); #endif } |