merge from 2.0-ongoing by hand, minus key binding editor
[ardour.git] / libs / midi++2 / fd_midiport.cc
index 81d81c8558cffe83c0343dde69ea158582b8fbd6..17a7eff367dac1f6f9eb2175ab2b4a2ca9d3ad74 100644 (file)
@@ -34,40 +34,38 @@ using namespace PBD;
 string *FD_MidiPort::midi_dirpath = 0;
 string *FD_MidiPort::midi_filename_pattern = 0;
 
-FD_MidiPort::FD_MidiPort (PortRequest &req, 
+FD_MidiPort::FD_MidiPort (const XMLNode& node,
                          const string &dirpath,
                          const string &pattern) 
-       : Port (req)
+       : Port (node)
 {      
-       open (req);
+       Descriptor desc (node);
+
+       open (desc);
 
        if (_fd < 0) {
                switch (errno) {
                case EBUSY:
                        error << "MIDI: port device in use" << endmsg;
-                       req.status = PortRequest::Busy;
                        break;
                case ENOENT:
                        error << "MIDI: no such port device" << endmsg;
-                       req.status = PortRequest::NoSuchFile;
                        break;
                case EACCES:
                        error << "MIDI: access to port denied" << endmsg;
-                       req.status = PortRequest::NotAllowed;
                        break;
                default:
-                       req.status = PortRequest::Unknown;
+                       break;
                } 
        } else {
                _ok = true;
-               req.status = PortRequest::OK;
 
                if (midi_dirpath == 0) {
                        midi_dirpath = new string (dirpath);
                        midi_filename_pattern = new string (pattern);
                }
 
-               if (req.mode & O_NONBLOCK == 0) {
+               if (desc.mode & O_NONBLOCK == 0) {
                        /* we unconditionally set O_NONBLOCK during
                           open, but the request didn't ask for it,
                           so remove it.
@@ -80,11 +78,11 @@ FD_MidiPort::FD_MidiPort (PortRequest &req,
 }
 
 void
-FD_MidiPort::open (PortRequest &req)
+FD_MidiPort::open (const Descriptor& desc)
 
 {
-       int mode = req.mode | O_NONBLOCK;
-       _fd = ::open (req.devname, mode);
+       int mode = desc.mode | O_NONBLOCK;
+       _fd = ::open (desc.device.c_str(), mode);
 }
 
 vector<string *> *
@@ -152,7 +150,7 @@ FD_MidiPort::do_slow_write (byte *msg, unsigned int msglen)
 }
 
 int
-FD_MidiPort::read (byte* buf, size_t max, timestamp_t timestamp)
+FD_MidiPort::read (byte* buf, size_t max, timestamp_t ignored)
 {
        int nread;