From: Robin Gareus Date: Thu, 16 Jul 2015 17:49:55 +0000 (+0200) Subject: prevent multiple concurrent plugin scans. X-Git-Tag: 4.2~233 X-Git-Url: https://main.carlh.net/gitweb/?p=ardour.git;a=commitdiff_plain;h=700c7b225f992dbfe31e714b321d4a8ffb482bcd prevent multiple concurrent plugin scans. --- diff --git a/libs/ardour/ardour/plugin_manager.h b/libs/ardour/ardour/plugin_manager.h index 3a6a210b5f..663bb92324 100644 --- a/libs/ardour/ardour/plugin_manager.h +++ b/libs/ardour/ardour/plugin_manager.h @@ -144,6 +144,8 @@ class LIBARDOUR_API PluginManager : public boost::noncopyable { std::string get_ladspa_category (uint32_t id); std::vector ladspa_plugin_whitelist; + Glib::Threads::Mutex _lock; + static PluginManager* _instance; // singleton PluginManager (); }; diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc index 2b84c22fe7..a9dd9e48b3 100644 --- a/libs/ardour/plugin_manager.cc +++ b/libs/ardour/plugin_manager.cc @@ -225,6 +225,12 @@ PluginManager::~PluginManager() void PluginManager::refresh (bool cache_only) { + Glib::Threads::Mutex::Lock lm (_lock, Glib::Threads::TRY_LOCK); + + if (!lm.locked()) { + return; + } + DEBUG_TRACE (DEBUG::PluginManager, "PluginManager::refresh\n"); _cancel_scan = false;