~artfwo/ubuntu/precise/jackd2/jackd2-fix-911342

« back to all changes in this revision

Viewing changes to macosx/coremidi/JackCoreMidiPhysicalInputPort.cpp

  • Committer: Artem Popov
  • Date: 2012-01-03 15:45:46 UTC
  • mfrom: (1.2.4 upstream)
  • Revision ID: artfwo@ubuntu.com-20120103154546-2qwp637mmowe8gtm
Copied over JackControlAPI.cpp from Debian branch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
Copyright (C) 2011 Devin Anderson
 
3
 
 
4
This program is free software; you can redistribute it and/or modify
 
5
it under the terms of the GNU General Public License as published by
 
6
the Free Software Foundation; either version 2 of the License, or
 
7
(at your option) any later version.
 
8
 
 
9
This program is distributed in the hope that it will be useful,
 
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
12
GNU General Public License for more details.
 
13
 
 
14
You should have received a copy of the GNU General Public License
 
15
along with this program; if not, write to the Free Software
 
16
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
17
 
 
18
*/
 
19
 
 
20
#include <sstream>
 
21
#include <stdexcept>
 
22
 
 
23
#include "JackCoreMidiPhysicalInputPort.h"
 
24
#include "JackCoreMidiUtil.h"
 
25
 
 
26
using Jack::JackCoreMidiPhysicalInputPort;
 
27
 
 
28
JackCoreMidiPhysicalInputPort::
 
29
JackCoreMidiPhysicalInputPort(const char *alias_name, const char *client_name,
 
30
                              const char *driver_name, int index,
 
31
                              MIDIClientRef client, MIDIPortRef internal_input,
 
32
                              double time_ratio, size_t max_bytes,
 
33
                              size_t max_messages):
 
34
    JackCoreMidiInputPort(time_ratio, max_bytes, max_messages)
 
35
{
 
36
    MIDIEndpointRef source = MIDIGetSource(index);
 
37
    if (! source) {
 
38
        // X: Is there a way to get a better error message?
 
39
        std::stringstream stream;
 
40
        stream << "The source at index '" << index << "' is not available";
 
41
        throw std::runtime_error(stream.str().c_str());
 
42
    }
 
43
    OSStatus status = MIDIPortConnectSource(internal_input, source, this);
 
44
    if (status != noErr) {
 
45
        throw std::runtime_error(GetMacOSErrorString(status));
 
46
    }
 
47
    Initialize(alias_name, client_name, driver_name, index, source);
 
48
}
 
49
 
 
50
JackCoreMidiPhysicalInputPort::~JackCoreMidiPhysicalInputPort()
 
51
{
 
52
    // Empty
 
53
}