#include <glibmm/fileutils.h>
#include <glibmm/miscutils.h>
-#include "pbd/convert.h"
#include "pbd/error.h"
#include "ardour/async_midi_port.h"
#include "ardour/port_manager.h"
#include "ardour/profile.h"
#include "ardour/session.h"
+#include "ardour/types_convert.h"
#include "pbd/i18n.h"
PortManager::cycle_start (pframes_t nframes)
{
Port::set_global_port_buffer_offset (0);
- Port::set_cycle_framecnt (nframes);
+ Port::set_cycle_samplecnt (nframes);
_cycle_ports = ports.reader ();
for (MidiPortInfo::iterator i = midi_port_info.begin(); i != midi_port_info.end(); ++i) {
XMLNode* node = new XMLNode (X_("port"));
- node->add_property (X_("name"), i->first);
- node->add_property (X_("input"), i->second.input ? X_("yes") : X_("no"));
- node->add_property (X_("properties"), enum_2_string (i->second.properties));
+ node->set_property (X_("name"), i->first);
+ node->set_property (X_("input"), i->second.input);
+ node->set_property (X_("properties"), i->second.properties);
root->add_child_nocopy (*node);
}
}
midi_port_info.clear ();
for (XMLNodeConstIterator i = tree.root()->children().begin(); i != tree.root()->children().end(); ++i) {
- XMLProperty const* prop;
MidiPortInformation mpi;
string name;
- if ((prop = (*i)->property (X_("name"))) == 0) {
+ if (!(*i)->get_property (X_("name"), name) ||
+ !(*i)->get_property (X_("input"), mpi.input) ||
+ !(*i)->get_property (X_("properties"), mpi.properties)) {
continue;
}
- name = prop->value ();
-
- if ((prop = (*i)->property (X_("input"))) == 0) {
- continue;
- }
- mpi.input = string_is_affirmative (prop->value());
-
- if ((prop = (*i)->property (X_("properties"))) == 0) {
- continue;
- }
-
- mpi.properties = (MidiPortFlags) string_2_enum (prop->value(), mpi.properties);
-
midi_port_info.insert (make_pair (name, mpi));
}
}
* PortManager
*/
+ // rg: I don't understand what this attempts to solve
+ //
+ // Naming ports should be left to the backend:
+ // Ardour cannot associate numeric IDs with corresponding hardware.
+ // (see also 7dde6c3b)
+
for (MidiPortInfo::iterator x = midi_port_info.begin(); x != midi_port_info.end(); ++x) {
PortEngine::PortHandle ph = _backend->get_port_by_name (x->first);
continue;
}
- if (x->second.pretty_name != x->first) {
+ if (!x->second.pretty_name.empty () && x->second.pretty_name != x->first) {
/* name set in port info ... propagate */
_backend->set_port_property (ph, "http://jackaudio.org/metadata/pretty-name", x->second.pretty_name, string());
} else {