summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2009-10-11 22:16:20 +0000
committerCarl Hetherington <carl@carlh.net>2009-10-11 22:16:20 +0000
commitab1afe97fe235513791ecda9d2d90596a58a776d (patch)
treea619821067fc417dbe51151fac8011a1d1e588de /libs
parentd0a238bb8ecb6bb617abc92404471efd563c61c3 (diff)
Make the port matrix notice if JACK ports are registered or unregistered.
git-svn-id: svn://localhost/ardour2/branches/3.0@5765 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/audioengine.h5
-rw-r--r--libs/ardour/audioengine.cc8
2 files changed, 13 insertions, 0 deletions
diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h
index cb8baf85df..f0bd7cdb3d 100644
--- a/libs/ardour/ardour/audioengine.h
+++ b/libs/ardour/ardour/audioengine.h
@@ -203,6 +203,10 @@ class AudioEngine : public sigc::trackable
sigc::signal<void> Running;
sigc::signal<void> Stopped;
+ /* this signal is emitted if a JACK port is registered or unregistered */
+
+ sigc::signal<void> PortRegisteredOrUnregistered;
+
std::string make_port_name_relative (std::string);
std::string make_port_name_non_relative (std::string);
@@ -250,6 +254,7 @@ class AudioEngine : public sigc::trackable
static void _jack_timebase_callback (jack_transport_state_t, nframes_t, jack_position_t*, int, void*);
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 *);
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 17d5318f48..56f78482ee 100644
--- a/libs/ardour/audioengine.cc
+++ b/libs/ardour/audioengine.cc
@@ -179,6 +179,7 @@ AudioEngine::start ()
jack_set_xrun_callback (_jack, _xrun_callback, this);
jack_set_sync_callback (_jack, _jack_sync_callback, this);
jack_set_freewheel_callback (_jack, _freewheel_callback, this);
+ jack_set_port_registration_callback (_jack, _registration_callback, this);
if (session && session->config.get_jack_time_master()) {
jack_set_timebase_callback (_jack, 0, _jack_timebase_callback, this);
@@ -310,6 +311,13 @@ AudioEngine::_freewheel_callback (int onoff, void *arg)
}
void
+AudioEngine::_registration_callback (jack_port_id_t /*id*/, int /*reg*/, void* arg)
+{
+ AudioEngine* ae = static_cast<AudioEngine*> (arg);
+ ae->PortRegisteredOrUnregistered (); /* EMIT SIGNAL */
+}
+
+void
AudioEngine::split_cycle (nframes_t offset)
{
/* caller must hold process lock */