diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h index f77e94827b..d7dcb69c85 100644 --- a/libs/ardour/ardour/rc_configuration_vars.h +++ b/libs/ardour/ardour/rc_configuration_vars.h @@ -232,6 +232,7 @@ CONFIG_VARIABLE (bool, use_plugin_own_gui, "use-plugin-own-gui", true) CONFIG_VARIABLE (bool, use_windows_vst, "use-windows-vst", true) CONFIG_VARIABLE (bool, use_lxvst, "use-lxvst", true) CONFIG_VARIABLE (bool, discover_vst_on_start, "discover-vst-on-start", false) +CONFIG_VARIABLE (bool, verbose_plugin_scan, "verbose-plugin-scan", true) CONFIG_VARIABLE (int, vst_scan_timeout, "vst-scan-timeout", 600) /* deciseconds, per plugin, <= 0 no timeout */ CONFIG_VARIABLE (bool, discover_audio_units, "discover-audio-units", false) diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc index 02b194cce6..ac4b57648e 100644 --- a/libs/ardour/plugin_manager.cc +++ b/libs/ardour/plugin_manager.cc @@ -696,7 +696,11 @@ PluginManager::windows_vst_discover_from_path (string path, bool cache_only) vector::iterator x; int ret = 0; - DEBUG_TRACE (DEBUG::PluginManager, string_compose ("detecting Windows VST plugins along %1\n", path)); + DEBUG_TRACE (DEBUG::PluginManager, string_compose ("Discovering Windows VST plugins along %1\n", path)); + + if (Config->verbose_plugin_scan()) { + info << string_compose (_("--- Windows VST plugins Scan: %1"), path) << endmsg; + } find_files_matching_filter (plugin_objects, Config->get_plugin_path_vst(), windows_vst_filter, 0, false, true, true); @@ -705,6 +709,10 @@ PluginManager::windows_vst_discover_from_path (string path, bool cache_only) windows_vst_discover (*x, cache_only || cancelled()); } + if (Config->verbose_plugin_scan()) { + info << _("--- Windows VST plugins Scan Done") << endmsg; + } + return ret; } @@ -713,12 +721,22 @@ PluginManager::windows_vst_discover (string path, bool cache_only) { DEBUG_TRACE (DEBUG::PluginManager, string_compose ("windows_vst_discover '%1'\n", path)); + if (Config->verbose_plugin_scan()) { + info << string_compose (_(" * %1 %2"), path, (cache_only ? _(" (cache only)") : "")) << endmsg; + } + _cancel_timeout = false; vector * finfos = vstfx_get_info_fst (const_cast (path.c_str()), cache_only ? VST_SCAN_CACHE_ONLY : VST_SCAN_USE_APP); + // TODO get extended error messae from vstfx_get_info_fst() e.g blacklisted, 32/64bit compat, + // .err file scanner output etc. + if (finfos->empty()) { DEBUG_TRACE (DEBUG::PluginManager, string_compose ("Cannot get Windows VST information from '%1'\n", path)); + if (Config->verbose_plugin_scan()) { + info << _(" -> Cannot get Windows VST information, plugin ignored.") << endmsg; + } return -1; } @@ -728,7 +746,7 @@ PluginManager::windows_vst_discover (string path, bool cache_only) char buf[32]; if (!finfo->canProcessReplacing) { - warning << string_compose (_("VST plugin %1 does not support processReplacing, and so cannot be used in %2 at this time"), + warning << string_compose (_("VST plugin %1 does not support processReplacing, and cannot be used in %2 at this time"), finfo->name, PROGRAM_NAME) << endl; continue; @@ -762,8 +780,8 @@ PluginManager::windows_vst_discover (string path, bool cache_only) if (!_windows_vst_plugin_info->empty()) { for (PluginInfoList::iterator i =_windows_vst_plugin_info->begin(); i != _windows_vst_plugin_info->end(); ++i) { - if ((info->type == (*i)->type)&&(info->unique_id == (*i)->unique_id)) { - warning << "Ignoring duplicate Windows VST plugin " << info->name << "\n"; + if ((info->type == (*i)->type) && (info->unique_id == (*i)->unique_id)) { + warning << string_compose (_("Ignoring duplicate Windows VST plugin \"%1\""), info->name) << endmsg; duplicate = true; break; } @@ -774,6 +792,9 @@ PluginManager::windows_vst_discover (string path, bool cache_only) DEBUG_TRACE (DEBUG::PluginManager, string_compose ("Windows VST plugin ID '%1'\n", info->unique_id)); _windows_vst_plugin_info->push_back (info); discovered++; + if (Config->verbose_plugin_scan()) { + info << string_compose (_(" -> OK. (VST Plugin \"%1\" added)."), info->name) << endmsg; + } } }