X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fladspa_plugin.cc;h=ac9c227fba3d7aec3fd79142116e920daf761f3e;hb=3dc7728038860bda6eb4b0de1f4a3e14ec9e86cc;hp=61149c78a01d61c81786aeddc9c2dede3f888560;hpb=d2fa2450aa287b45d9b58c5ba3cb54544891cdb2;p=ardour.git diff --git a/libs/ardour/ladspa_plugin.cc b/libs/ardour/ladspa_plugin.cc index 61149c78a0..ac9c227fba 100644 --- a/libs/ardour/ladspa_plugin.cc +++ b/libs/ardour/ladspa_plugin.cc @@ -141,11 +141,8 @@ LadspaPlugin::init (string module_path, uint32_t index, framecnt_t rate) *_latency_control_port = 0; } - if (!LADSPA_IS_PORT_INPUT(port_descriptor (i))) { - continue; - } - _shadow_data[i] = _default_value (i); + _control_data[i] = _shadow_data[i]; } } @@ -350,8 +347,8 @@ void LadspaPlugin::add_state (XMLNode* root) const { XMLNode *child; - char buf[16]; - LocaleGuard lg (X_("C")); + char buf[32]; + LocaleGuard lg (); for (uint32_t i = 0; i < parameter_count(); ++i){ @@ -377,14 +374,14 @@ LadspaPlugin::set_state (const XMLNode& node, int version) #ifndef NO_PLUGIN_STATE XMLNodeList nodes; - XMLProperty *prop; + XMLProperty const * prop; XMLNodeConstIterator iter; XMLNode *child; const char *port; const char *data; uint32_t port_id; #endif - LocaleGuard lg (X_("C")); + LocaleGuard lg (); if (node.name() != state_node_name()) { error << _("Bad node sent to LadspaPlugin::set_state") << endmsg; @@ -427,14 +424,14 @@ LadspaPlugin::set_state_2X (const XMLNode& node, int /* version */) { #ifndef NO_PLUGIN_STATE XMLNodeList nodes; - XMLProperty *prop; + XMLProperty const * prop; XMLNodeConstIterator iter; XMLNode *child; const char *port; const char *data; uint32_t port_id; #endif - LocaleGuard lg (X_("C")); + LocaleGuard lg (); if (node.name() != state_node_name()) { error << _("Bad node sent to LadspaPlugin::set_state") << endmsg; @@ -738,6 +735,29 @@ LadspaPluginInfo::load (Session& session) } } +std::vector +LadspaPluginInfo::get_presets (bool /*user_only*/) const +{ + std::vector p; +#if (defined HAVE_LRDF && !defined NO_PLUGIN_STATE) + if (!isdigit (unique_id[0])) { + return p; + } + uint32_t id = atol (unique_id); + lrdf_uris* set_uris = lrdf_get_setting_uris(id); + + if (set_uris) { + for (uint32_t i = 0; i < (uint32_t) set_uris->count; ++i) { + if (char* label = lrdf_get_label (set_uris->items[i])) { + p.push_back (Plugin::PresetRecord (set_uris->items[i], label)); + } + } + lrdf_free_uris(set_uris); + } +#endif + return p; +} + LadspaPluginInfo::LadspaPluginInfo() { type = ARDOUR::LADSPA; @@ -956,13 +976,13 @@ LadspaPlugin::do_save_preset (string name) LADSPA_PortDescriptor LadspaPlugin::port_descriptor (uint32_t i) const { - if (i < _descriptor->PortCount) { + if (i < _descriptor->PortCount) { return _descriptor->PortDescriptors[i]; } - + warning << "LADSPA plugin port index " << i << " out of range." << endmsg; return 0; } - - + +