+ BootMessage (_("Plugin Scan Complete..."));
+ PluginListChanged (); /* EMIT SIGNAL */
+ PluginScanMessage(X_("closeme"), "", false);
+ _cancel_scan = false;
+}
+
+void
+PluginManager::cancel_plugin_scan ()
+{
+ _cancel_scan = true;
+}
+
+void
+PluginManager::cancel_plugin_timeout ()
+{
+ _cancel_timeout = true;
+}
+
+void
+PluginManager::clear_vst_cache ()
+{
+#if 1 // clean old cache and error files. (remove this code after 4.3 or 5.0)
+#ifdef WINDOWS_VST_SUPPORT
+ {
+ vector<string> fsi_files;
+ find_files_matching_regex (fsi_files, Config->get_plugin_path_vst(), "\\" VST_EXT_INFOFILE "$", true);
+ for (vector<string>::iterator i = fsi_files.begin(); i != fsi_files.end (); ++i) {
+ ::g_unlink(i->c_str());
+ }
+ }
+ {
+ vector<string> fsi_files;
+ find_files_matching_regex (fsi_files, Config->get_plugin_path_vst(), "\\.fsi$", true);
+ for (vector<string>::iterator i = fsi_files.begin(); i != fsi_files.end (); ++i) {
+ ::g_unlink(i->c_str());
+ }
+ }
+ {
+ vector<string> fsi_files;
+ find_files_matching_regex (fsi_files, Config->get_plugin_path_vst(), "\\.err$", true);
+ for (vector<string>::iterator i = fsi_files.begin(); i != fsi_files.end (); ++i) {
+ ::g_unlink(i->c_str());
+ }
+ }
+#endif
+
+#ifdef LXVST_SUPPORT
+ {
+ vector<string> fsi_files;
+ find_files_matching_regex (fsi_files, Config->get_plugin_path_lxvst(), "\\" VST_EXT_INFOFILE "$", true);
+ for (vector<string>::iterator i = fsi_files.begin(); i != fsi_files.end (); ++i) {
+ ::g_unlink(i->c_str());
+ }
+ }
+ {
+ vector<string> fsi_files;
+ find_files_matching_regex (fsi_files, Config->get_plugin_path_lxvst(), "\\.fsi$", true);
+ for (vector<string>::iterator i = fsi_files.begin(); i != fsi_files.end (); ++i) {
+ ::g_unlink(i->c_str());
+ }
+ }
+ {
+ vector<string> fsi_files;
+ find_files_matching_regex (fsi_files, Config->get_plugin_path_lxvst(), "\\.err$", true);
+ for (vector<string>::iterator i = fsi_files.begin(); i != fsi_files.end (); ++i) {
+ ::g_unlink(i->c_str());
+ }
+ }
+#endif
+#if (defined WINDOWS_VST_SUPPORT || defined LXVST_SUPPORT)
+ {
+ string dir = Glib::build_filename (ARDOUR::user_cache_directory(), "fst_info");
+ if (Glib::file_test (dir, Glib::FILE_TEST_IS_DIR)) {
+ PBD::remove_directory (dir);
+ }
+ }
+#endif
+#endif // old cache cleanup
+
+#if (defined WINDOWS_VST_SUPPORT || defined LXVST_SUPPORT)
+ {
+ string dn = Glib::build_filename (ARDOUR::user_cache_directory(), "vst");
+ vector<string> fsi_files;
+ find_files_matching_regex (fsi_files, dn, "\\" VST_EXT_INFOFILE "$", /* user cache is flat, no recursion */ false);
+ for (vector<string>::iterator i = fsi_files.begin(); i != fsi_files.end (); ++i) {
+ ::g_unlink(i->c_str());
+ }
+ }
+#endif
+}
+
+void
+PluginManager::clear_vst_blacklist ()
+{
+#if 1 // remove old blacklist files. (remove this code after 4.3 or 5.0)
+
+#ifdef WINDOWS_VST_SUPPORT
+ {
+ vector<string> fsi_files;
+ find_files_matching_regex (fsi_files, Config->get_plugin_path_vst(), "\\" VST_EXT_BLACKLIST "$", true);
+ for (vector<string>::iterator i = fsi_files.begin(); i != fsi_files.end (); ++i) {
+ ::g_unlink(i->c_str());
+ }
+ }
+#endif
+
+#ifdef LXVST_SUPPORT
+ {
+ vector<string> fsi_files;
+ find_files_matching_regex (fsi_files, Config->get_plugin_path_lxvst(), "\\" VST_EXT_BLACKLIST "$", true);
+ for (vector<string>::iterator i = fsi_files.begin(); i != fsi_files.end (); ++i) {
+ ::g_unlink(i->c_str());
+ }
+ }
+#endif
+#if (defined WINDOWS_VST_SUPPORT || defined LXVST_SUPPORT)
+ {
+ string dir = Glib::build_filename (ARDOUR::user_cache_directory(), "fst_blacklist");
+ if (Glib::file_test (dir, Glib::FILE_TEST_IS_DIR)) {
+ PBD::remove_directory (dir);
+ }
+ }
+#endif
+
+#endif // old blacklist cleanup
+
+#if (defined WINDOWS_VST_SUPPORT || defined LXVST_SUPPORT)
+ {
+ string fn = Glib::build_filename (ARDOUR::user_cache_directory(), VST_BLACKLIST);
+ if (Glib::file_test (fn, Glib::FILE_TEST_EXISTS)) {
+ ::g_unlink (fn.c_str());
+ }
+ }
+#endif
+
+}
+
+void
+PluginManager::clear_au_cache ()
+{
+#ifdef AUDIOUNIT_SUPPORT
+ AUPluginInfo::clear_cache ();
+#endif
+}
+
+void
+PluginManager::clear_au_blacklist ()
+{
+#ifdef AUDIOUNIT_SUPPORT
+ string fn = Glib::build_filename (ARDOUR::user_cache_directory(), "au_blacklist.txt");
+ if (Glib::file_test (fn, Glib::FILE_TEST_EXISTS)) {
+ ::g_unlink(fn.c_str());
+ }
+#endif
+}
+
+void
+PluginManager::lua_refresh ()
+{
+ if (_lua_plugin_info) {
+ _lua_plugin_info->clear ();
+ } else {
+ _lua_plugin_info = new ARDOUR::PluginInfoList ();
+ }
+ ARDOUR::LuaScriptList & _scripts (LuaScripting::instance ().scripts (LuaScriptInfo::DSP));
+ for (LuaScriptList::const_iterator s = _scripts.begin(); s != _scripts.end(); ++s) {
+ LuaPluginInfoPtr lpi (new LuaPluginInfo(*s));
+ _lua_plugin_info->push_back (lpi);
+ }
+}
+
+void
+PluginManager::lua_refresh_cb ()
+{
+ Glib::Threads::Mutex::Lock lm (_lock, Glib::Threads::TRY_LOCK);
+ if (!lm.locked()) {
+ return;
+ }
+ lua_refresh ();