~ubuntu-branches/ubuntu/utopic/ardour3/utopic

« back to all changes in this revision

Viewing changes to libs/surfaces/mackie/interface.cc

  • Committer: Package Import Robot
  • Author(s): Felipe Sateler
  • Date: 2013-09-21 19:05:02 UTC
  • Revision ID: package-import@ubuntu.com-20130921190502-8gsftrku6jnzhd7v
Tags: upstream-3.4~dfsg
ImportĀ upstreamĀ versionĀ 3.4~dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
        Copyright (C) 2006,2007 Paul Davis
 
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
#include <stdexcept>
 
20
 
 
21
#include "pbd/error.h"
 
22
 
 
23
#include "ardour/rc_configuration.h"
 
24
 
 
25
#include "control_protocol/control_protocol.h"
 
26
#include "mackie_control_protocol.h"
 
27
 
 
28
using namespace ARDOUR;
 
29
using namespace PBD;
 
30
using namespace std;
 
31
 
 
32
ControlProtocol*
 
33
new_mackie_protocol (ControlProtocolDescriptor*, Session* s)
 
34
{
 
35
        MackieControlProtocol* mcp = 0;
 
36
        
 
37
        try {
 
38
                mcp = new MackieControlProtocol (*s);
 
39
                /* do not set active here - wait for set_state() */
 
40
        }
 
41
        catch (exception & e) {
 
42
                error << "Error instantiating MackieControlProtocol: " << e.what() << endmsg;
 
43
                delete mcp;
 
44
                mcp = 0;
 
45
        }
 
46
        
 
47
        return mcp;
 
48
}
 
49
 
 
50
void
 
51
delete_mackie_protocol (ControlProtocolDescriptor*, ControlProtocol* cp)
 
52
{
 
53
        try
 
54
        {
 
55
                delete cp;
 
56
        }
 
57
        catch ( exception & e )
 
58
        {
 
59
                cout << "Exception caught trying to destroy MackieControlProtocol: " << e.what() << endl;
 
60
        }
 
61
}
 
62
 
 
63
/**
 
64
        This is called on startup to check whether the lib should be loaded.
 
65
 
 
66
        So anything that can be changed in the UI should not be used here to
 
67
        prevent loading of the lib.
 
68
*/
 
69
bool
 
70
probe_mackie_protocol (ControlProtocolDescriptor*)
 
71
{
 
72
        return MackieControlProtocol::probe();
 
73
}
 
74
 
 
75
static ControlProtocolDescriptor mackie_descriptor = {
 
76
        name : "Mackie",
 
77
        id : "uri://ardour.org/surfaces/mackie:0",
 
78
        ptr : 0,
 
79
        module : 0,
 
80
        mandatory : 0,
 
81
        // actually, the surface does support feedback, but all this
 
82
        // flag does is show a submenu on the UI, which is useless for the mackie
 
83
        // because feedback is always on. In any case, who'd want to use the
 
84
        // mcu without the motorised sliders doing their thing?
 
85
        supports_feedback : false,
 
86
        probe : probe_mackie_protocol,
 
87
        initialize : new_mackie_protocol,
 
88
        destroy : delete_mackie_protocol
 
89
};
 
90
        
 
91
 
 
92
extern "C" {
 
93
 
 
94
ControlProtocolDescriptor* 
 
95
protocol_descriptor () {
 
96
        return &mackie_descriptor;
 
97
}
 
98
 
 
99
}