summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
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;
}