X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fplugin_manager.h;h=1a925432a08a1dfc5a6aa35ae439f250d2f31706;hb=5c32fc3babdd3ed7d715b6aeb24a72f3a0f550a0;hp=2464368ae7b84b31bbd47ac09f4532178961beaf;hpb=0da34e65e3470b1c2298ddf571df6356d0d42bd8;p=ardour.git diff --git a/libs/ardour/ardour/plugin_manager.h b/libs/ardour/ardour/plugin_manager.h index 2464368ae7..1a925432a0 100644 --- a/libs/ardour/ardour/plugin_manager.h +++ b/libs/ardour/ardour/plugin_manager.h @@ -30,6 +30,7 @@ #include #include +#include "ardour/libardour_visibility.h" #include "ardour/types.h" #include "ardour/plugin.h" @@ -37,9 +38,10 @@ namespace ARDOUR { class Plugin; -class PluginManager : public boost::noncopyable { +class LIBARDOUR_API PluginManager : public boost::noncopyable { public: static PluginManager& instance(); + static std::string scanner_bin_path; ~PluginManager (); @@ -48,11 +50,21 @@ class PluginManager : public boost::noncopyable { ARDOUR::PluginInfoList &ladspa_plugin_info (); ARDOUR::PluginInfoList &lv2_plugin_info (); ARDOUR::PluginInfoList &au_plugin_info (); + ARDOUR::PluginInfoList &lua_plugin_info (); - void refresh (); + void refresh (bool cache_only = false); + void cancel_plugin_scan(); + void cancel_plugin_timeout(); + void clear_vst_cache (); + void clear_vst_blacklist (); + void clear_au_cache (); + void clear_au_blacklist (); - int add_windows_vst_directory (std::string dirpath); - int add_lxvst_directory (std::string dirpath); + const std::string get_default_windows_vst_path() const { return windows_vst_path; } + const std::string get_default_lxvst_path() const { return lxvst_path; } + + bool cancelled () { return _cancel_scan; } + bool no_timeout () { return _cancel_timeout; } enum PluginStatusType { Normal = 0, @@ -67,6 +79,8 @@ class PluginManager : public boost::noncopyable { /** plugins were added to or removed from one of the PluginInfoLists */ PBD::Signal0 PluginListChanged; + /** Plugin Hidden/Favorite status changed */ + PBD::Signal0 PluginStatusesChanged; private: struct PluginStatus { @@ -99,15 +113,21 @@ class PluginManager : public boost::noncopyable { ARDOUR::PluginInfoList* _ladspa_plugin_info; ARDOUR::PluginInfoList* _lv2_plugin_info; ARDOUR::PluginInfoList* _au_plugin_info; + ARDOUR::PluginInfoList* _lua_plugin_info; std::map rdf_type; std::string windows_vst_path; std::string lxvst_path; + bool _cancel_scan; + bool _cancel_timeout; + void ladspa_refresh (); - void windows_vst_refresh (); - void lxvst_refresh (); + void lua_refresh (); + void lua_refresh_cb (); + void windows_vst_refresh (bool cache_only = false); + void lxvst_refresh (bool cache_only = false); void add_lrdf_data (const std::string &path); void add_ladspa_presets (); @@ -115,21 +135,24 @@ class PluginManager : public boost::noncopyable { void add_lxvst_presets (); void add_presets (std::string domain); - void au_refresh (); + void au_refresh (bool cache_only = false); void lv2_refresh (); - int windows_vst_discover_from_path (std::string path); - int windows_vst_discover (std::string path); - - int lxvst_discover_from_path (std::string path); - int lxvst_discover (std::string path); + int windows_vst_discover_from_path (std::string path, bool cache_only = false); + int windows_vst_discover (std::string path, bool cache_only = false); + + int lxvst_discover_from_path (std::string path, bool cache_only = false); + int lxvst_discover (std::string path, bool cache_only = false); int ladspa_discover (std::string path); std::string get_ladspa_category (uint32_t id); std::vector ladspa_plugin_whitelist; + PBD::ScopedConnection lua_refresh_connection; + Glib::Threads::Mutex _lock; + static PluginManager* _instance; // singleton PluginManager (); };