summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-07-29 19:24:25 +0000
committerCarl Hetherington <carl@carlh.net>2010-07-29 19:24:25 +0000
commit21fd76ef9a0c1856e5f91c394214e244265a0f86 (patch)
tree03290309e6f02eb0b1c452b99222a0de47f4590e /libs
parentc2cf3c5bfd652db87b92b241676981a44daf3091 (diff)
Fix startup of the mackie surface code.
git-svn-id: svn://localhost/ardour2/branches/3.0@7520 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/midi++2/port.cc3
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.cc6
-rw-r--r--libs/surfaces/mackie/mackie_midi_builder.cc20
-rw-r--r--libs/surfaces/mackie/surface.cc6
-rw-r--r--libs/surfaces/mackie/surface_port.cc2
5 files changed, 21 insertions, 16 deletions
diff --git a/libs/midi++2/port.cc b/libs/midi++2/port.cc
index 65cba24eb0..673cc259aa 100644
--- a/libs/midi++2/port.cc
+++ b/libs/midi++2/port.cc
@@ -54,6 +54,7 @@ Port::Port (string const & name, Flags flags, jack_client_t* jack_client)
, input_fifo (1024)
, _flags (flags)
{
+ assert (jack_client);
init (name, flags);
}
@@ -66,6 +67,8 @@ Port::Port (const XMLNode& node, jack_client_t* jack_client)
, output_fifo (512)
, input_fifo (1024)
{
+ assert (jack_client);
+
Descriptor desc (node);
init (desc.tag, desc.flags);
diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc
index 439572ac3e..2e4f2ba214 100644
--- a/libs/surfaces/mackie/mackie_control_protocol.cc
+++ b/libs/surfaces/mackie/mackie_control_protocol.cc
@@ -277,6 +277,8 @@ MackieControlProtocol::switch_banks (int initial)
for (; it != end && it != sorted.end(); ++it, ++i)
{
boost::shared_ptr<Route> route = *it;
+
+ assert (surface().strips[i]);
Strip & strip = *surface().strips[i];
DEBUG_TRACE (DEBUG::MackieControl, string_compose ("remote id %1 connecting %2 to %3 with port %4\n",
@@ -957,7 +959,9 @@ MackieControlProtocol::notify_property_changed (const PropertyChange& what_chang
try
{
Strip & strip = route_signal->strip();
- if (!strip.is_master())
+
+ /* XXX: not sure about this check to only display stuff for strips of index < 8 */
+ if (!strip.is_master() && strip.index() < 8)
{
string line1;
string fullname = route_signal->route()->name();
diff --git a/libs/surfaces/mackie/mackie_midi_builder.cc b/libs/surfaces/mackie/mackie_midi_builder.cc
index 1a70ee7196..ff1046859f 100644
--- a/libs/surfaces/mackie/mackie_midi_builder.cc
+++ b/libs/surfaces/mackie/mackie_midi_builder.cc
@@ -114,8 +114,13 @@ MidiByteArray MackieMidiBuilder::zero_strip( SurfacePort & port, const Strip & s
}
// These must have sysex headers
- retval << strip_display_blank( port, strip, 0 );
- retval << strip_display_blank( port, strip, 1 );
+
+ /* XXX: not sure about this check to only display stuff for strips of index < 8 */
+ if (strip.index() < 8) {
+ retval << strip_display_blank( port, strip, 0 );
+ retval << strip_display_blank( port, strip, 1 );
+ }
+
return retval;
}
@@ -186,15 +191,8 @@ MidiByteArray MackieMidiBuilder::strip_display_blank( SurfacePort & port, const
MidiByteArray MackieMidiBuilder::strip_display( SurfacePort & port, const Strip & strip, unsigned int line_number, const std::string & line )
{
- if ( line_number > 1 )
- {
- throw runtime_error( "line_number must be 0 or 1" );
- }
-
- if ( strip.index() > 7 )
- {
- throw runtime_error( "strip.index() must be between 0 and 7" );
- }
+ assert (line_number <= 1);
+ assert (strip.index() < 8);
#ifdef DEBUG
cout << "MackieMidiBuilder::strip_display index: " << strip.index() << ", line " << line_number << ": " << line << endl;
diff --git a/libs/surfaces/mackie/surface.cc b/libs/surfaces/mackie/surface.cc
index e9eb5570ce..5b79cac4a6 100644
--- a/libs/surfaces/mackie/surface.cc
+++ b/libs/surfaces/mackie/surface.cc
@@ -46,9 +46,9 @@ void Surface::init_strips( uint32_t max_strips, uint32_t unit_strips )
{
if ( strips.size() < max_strips )
{
- strips.resize( max_strips );
- for ( uint32_t i = strips.size(); i < max_strips; ++i )
- {
+ uint32_t const old_size = strips.size();
+ strips.resize (max_strips);
+ for (uint32_t i = old_size; i < max_strips; ++i) {
// because I can't find itoa
ostringstream os;
os << "strip_" << i + 1;
diff --git a/libs/surfaces/mackie/surface_port.cc b/libs/surfaces/mackie/surface_port.cc
index 994fdfd50a..e5abb6aa68 100644
--- a/libs/surfaces/mackie/surface_port.cc
+++ b/libs/surfaces/mackie/surface_port.cc
@@ -124,7 +124,7 @@ MidiByteArray SurfacePort::read()
void SurfacePort::write( const MidiByteArray & mba )
{
#ifdef PORT_DEBUG
- cout << "SurfacePort::write: " << mba << endl;
+ cout << "SurfacePort::write: " << mba << " to " << output_port().name() << endl;
#endif
// check active before and after lock - to make sure