summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-12-30 02:58:57 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-12-30 02:58:57 +0000
commit59a61c4357b44aa54f03224ae3ba282cf46c0366 (patch)
treeb40443e66a1bee98938f90e8bec90e5c6a1bdaa9
parent77cc0f7cc84df5e242898cef0abb7d633de64d8c (diff)
fix crash caused by closing down JACK but not telling JACK_MidiPorts about it
git-svn-id: svn://localhost/ardour2/branches/3.0@6412 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--libs/ardour/audioengine.cc3
-rw-r--r--libs/midi++2/jack_midiport.cc12
2 files changed, 13 insertions, 2 deletions
diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc
index 634d62cc0b..322365fb9f 100644
--- a/libs/ardour/audioengine.cc
+++ b/libs/ardour/audioengine.cc
@@ -228,6 +228,7 @@ AudioEngine::stop (bool forever)
} else {
jack_deactivate (_priv_jack);
Stopped(); /* EMIT SIGNAL */
+ MIDI::JACK_MidiPort::JackHalted (); /* EMIT SIGNAL */
}
}
@@ -918,6 +919,7 @@ AudioEngine::halted (void *arg)
if (was_running) {
ae->Halted(); /* EMIT SIGNAL */
+ MIDI::JACK_MidiPort::JackHalted (); /* EMIT SIGNAL */
}
}
@@ -1182,6 +1184,7 @@ AudioEngine::disconnect_from_jack ()
if (_running) {
_running = false;
Stopped(); /* EMIT SIGNAL */
+ MIDI::JACK_MidiPort::JackHalted (); /* EMIT SIGNAL */
}
return 0;
diff --git a/libs/midi++2/jack_midiport.cc b/libs/midi++2/jack_midiport.cc
index 35e9ade1a3..b944a19ea6 100644
--- a/libs/midi++2/jack_midiport.cc
+++ b/libs/midi++2/jack_midiport.cc
@@ -293,7 +293,7 @@ JACK_MidiPort::get_state () const
XMLNode& root (Port::get_state ());
if (_jack_output_port) {
-
+
const char** jc = jack_port_get_connections (_jack_output_port);
string connection_string;
if (jc) {
@@ -305,10 +305,14 @@ JACK_MidiPort::get_state () const
}
free (jc);
}
-
+
if (!connection_string.empty()) {
root.add_property ("outbound", connection_string);
}
+ } else {
+ if (!_outbound_connections.empty()) {
+ root.add_property ("outbound", _outbound_connections);
+ }
}
if (_jack_input_port) {
@@ -328,6 +332,10 @@ JACK_MidiPort::get_state () const
if (!connection_string.empty()) {
root.add_property ("inbound", connection_string);
}
+ } else {
+ if (!_inbound_connections.empty()) {
+ root.add_property ("inbound", _inbound_connections);
+ }
}
return root;