summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-04-03 19:53:58 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-04-03 19:53:58 +0000
commitc557bf28a78d296045f9ba8432944d25f50d25ec (patch)
tree17e4558be2d5dd10458124369f105d85248b087e /libs/ardour
parenta30fb19cb326fe13d72cab11543ca0bcd3084f7d (diff)
rename menu items for monitoring options, and make the one based on JACK insensitive if there are no JACK ports capable of being monitored in that way
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@3209 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/audioengine.h2
-rw-r--r--libs/ardour/audioengine.cc26
2 files changed, 24 insertions, 4 deletions
diff --git a/libs/ardour/ardour/audioengine.h b/libs/ardour/ardour/audioengine.h
index 3329a036e4..31c892a2b7 100644
--- a/libs/ardour/ardour/audioengine.h
+++ b/libs/ardour/ardour/audioengine.h
@@ -127,6 +127,8 @@ class AudioEngine : public sigc::trackable
const char ** get_ports (const std::string& port_name_pattern, const std::string& type_name_pattern, uint32_t flags);
+ bool can_request_hardware_monitoring ();
+
uint32_t n_physical_audio_outputs () const;
uint32_t n_physical_audio_inputs () const;
diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc
index d057a31cea..9521dfe730 100644
--- a/libs/ardour/audioengine.cc
+++ b/libs/ardour/audioengine.cc
@@ -813,6 +813,25 @@ AudioEngine::halted (void *arg)
}
}
+bool
+AudioEngine::can_request_hardware_monitoring ()
+{
+ const char ** ports;
+
+ if (!_jack) {
+ return 0;
+ }
+
+ if ((ports = jack_get_ports (_jack, NULL, JACK_DEFAULT_AUDIO_TYPE, JackPortCanMonitor)) == 0) {
+ return false;
+ }
+
+ free (ports);
+
+ return true;
+}
+
+
uint32_t
AudioEngine::n_physical_audio_outputs () const
{
@@ -827,10 +846,9 @@ AudioEngine::n_physical_audio_outputs () const
return 0;
}
- if (ports) {
- for (i = 0; ports[i]; ++i);
- free (ports);
- }
+ for (i = 0; ports[i]; ++i);
+ free (ports);
+
return i;
}