From 00d1391ed91a182c3f3ff9ab2d3cee2f877bc704 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 19 Feb 2021 21:47:42 +0100 Subject: [PATCH] Remember version that was used to scan VST plugins --- libs/ardour/ardour/plugin_manager.h | 3 +++ libs/ardour/ardour/rc_configuration_vars.h | 1 + libs/ardour/plugin_manager.cc | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/libs/ardour/ardour/plugin_manager.h b/libs/ardour/ardour/plugin_manager.h index a9f96279fb..63f32f1a86 100644 --- a/libs/ardour/ardour/plugin_manager.h +++ b/libs/ardour/ardour/plugin_manager.h @@ -76,6 +76,9 @@ public: const std::string get_default_windows_vst_path() const { return windows_vst_path; } const std::string get_default_lxvst_path() const { return lxvst_path; } + static uint32_t cache_version (); + bool cache_valid () const; + /* always return LXVST for any VST subtype */ static PluginType to_generic_vst (const PluginType); diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h index 7a356a11ac..e7a1f5865e 100644 --- a/libs/ardour/ardour/rc_configuration_vars.h +++ b/libs/ardour/ardour/rc_configuration_vars.h @@ -234,6 +234,7 @@ CONFIG_VARIABLE (bool, discover_audio_units, "discover-audio-units", false) CONFIG_VARIABLE (bool, ask_replace_instrument, "ask-replace-instrument", true) CONFIG_VARIABLE (bool, ask_setup_instrument, "ask-setup-instrument", true) CONFIG_VARIABLE (uint32_t, limit_n_automatables, "limit-n-automatables", 512) +CONFIG_VARIABLE (uint32_t, plugin_cache_version, "plugin-cache-version", 0) /* custom user plugin paths */ CONFIG_VARIABLE (std::string, plugin_path_vst, "plugin-path-vst", "@default@") diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc index b196474a42..d77d1a975e 100644 --- a/libs/ardour/plugin_manager.cc +++ b/libs/ardour/plugin_manager.cc @@ -324,6 +324,19 @@ PluginManager::~PluginManager() delete _vst3_plugin_info; } +bool +PluginManager::cache_valid () const +{ + return Config->get_plugin_cache_version () >= cache_version (); +} + +uint32_t +PluginManager::cache_version () +{ + /* see ARDOUR::vst3_scan_and_cache VST3Cache version = +1 */ + return 1000 * atoi (X_(PROGRAM_VERSION)) + 1; +} + struct PluginInfoPtrNameSorter { bool operator () (PluginInfoPtr const& a, PluginInfoPtr const& b) const { return PBD::downcase (a->name) < PBD::downcase (b->name); @@ -520,6 +533,11 @@ PluginManager::refresh (bool cache_only) bool conceal_vst2 = false; #endif + if (!cache_only && !cache_valid ()) { + Config->set_plugin_cache_version (cache_version ()); + Config->save_state(); + } + #ifdef AUDIOUNIT_SUPPORT if (cache_only) { BootMessage (_("Scanning AU Plugins"));