summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-04-05 15:23:54 +0000
committerCarl Hetherington <carl@carlh.net>2010-04-05 15:23:54 +0000
commit6e49c73bb0ba1037346d8a7b589185d281c97211 (patch)
treef48e20f8985ae720f04d1df31af2770ea269dbaf /libs
parent7c9c3b8f6ccc4c0ebf963b05c2df400864ba46f0 (diff)
Make port matrix notice when connections are changed outside of ardour.
git-svn-id: svn://localhost/ardour2/branches/3.0@6858 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/audioengine.h7
-rw-r--r--libs/ardour/audioengine.cc8
2 files changed, 13 insertions, 2 deletions
diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h
index ac521fbd4c..e630e1a95e 100644
--- a/libs/ardour/ardour/audioengine.h
+++ b/libs/ardour/ardour/audioengine.h
@@ -230,10 +230,12 @@ _ the regular process() call to session->process() is not made.
PBD::Signal0<void> Running;
PBD::Signal0<void> Stopped;
- /* this signal is emitted if a JACK port is registered or unregistered */
-
+ /** Emitted if a JACK port is registered or unregistered */
PBD::Signal0<void> PortRegisteredOrUnregistered;
+ /** Emitted if a JACK port is connected or disconnected */
+ PBD::Signal0<void> PortConnectedOrDisconnected;
+
std::string make_port_name_relative (std::string);
std::string make_port_name_non_relative (std::string);
@@ -288,6 +290,7 @@ _ the regular process() call to session->process() is not made.
static int _jack_sync_callback (jack_transport_state_t, jack_position_t*, void *arg);
static void _freewheel_callback (int , void *arg);
static void _registration_callback (jack_port_id_t, int, void *);
+ static void _connect_callback (jack_port_id_t, jack_port_id_t, int, void *);
void jack_timebase_callback (jack_transport_state_t, nframes_t, jack_position_t*, int);
int jack_sync_callback (jack_transport_state_t, jack_position_t*);
diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc
index 6ffe0f6048..db1c4f2ef5 100644
--- a/libs/ardour/audioengine.cc
+++ b/libs/ardour/audioengine.cc
@@ -195,6 +195,7 @@ AudioEngine::start ()
jack_set_sync_callback (_priv_jack, _jack_sync_callback, this);
jack_set_freewheel_callback (_priv_jack, _freewheel_callback, this);
jack_set_port_registration_callback (_priv_jack, _registration_callback, this);
+ jack_set_port_connect_callback (_priv_jack, _connect_callback, this);
if (_session && _session->config.get_jack_time_master()) {
jack_set_timebase_callback (_priv_jack, 0, _jack_timebase_callback, this);
@@ -349,6 +350,13 @@ AudioEngine::_registration_callback (jack_port_id_t /*id*/, int /*reg*/, void* a
}
void
+AudioEngine::_connect_callback (jack_port_id_t /*id_a*/, jack_port_id_t /*id_b*/, int /*conn*/, void* arg)
+{
+ AudioEngine* ae = static_cast<AudioEngine*> (arg);
+ ae->PortConnectedOrDisconnected (); /* EMIT SIGNAL */
+}
+
+void
AudioEngine::split_cycle (nframes_t offset)
{
/* caller must hold process lock */