summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/ardour/ardour/audio_unit.h1
-rw-r--r--libs/ardour/audio_unit.cc13
-rw-r--r--libs/ardour/plugin_manager.cc6
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
}