diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-09 15:17:29 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-09-09 15:17:43 -0400 |
commit | f06187735d9518623a6f1f3da573b401e77401bb (patch) | |
tree | f5d8878fe6936d65c3840a500ac141b6424dad79 /libs/backends | |
parent | a228643e402d8f1fb07da88eba960ec368e23dda (diff) |
initial work on adding access to h/w control apps when ardour starts JACK
Diffstat (limited to 'libs/backends')
-rw-r--r-- | libs/backends/jack/jack_audiobackend.cc | 59 | ||||
-rw-r--r-- | libs/backends/jack/jack_audiobackend.h | 4 |
2 files changed, 62 insertions, 1 deletions
diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index f452a78d49..f21440e046 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -17,10 +17,13 @@ */ +#include <string> +#include <list> #include <math.h> #include <boost/scoped_ptr.hpp> #include <glibmm/timer.h> +#include <glibmm/spawn.h> #include "pbd/error.h" @@ -340,7 +343,11 @@ JACKAudioBackend::set_systemic_output_latency (uint32_t l) std::string JACKAudioBackend::device_name () const { - return string(); + if (connected()) { + return "???"; + } + + return _target_device; } float @@ -947,3 +954,53 @@ JACKAudioBackend::can_change_buffer_size_when_running () const { return true; } + +string +JACKAudioBackend::control_app_name () const +{ + string appname; + + if (_target_device.empty()) { + return appname; + } + +#if defined (__linux) + /* Linux potential control apps */ + + if (_target_device == "Hammerfall DSP") { + appname = "hdspconf"; + } +#else +#if defined (__APPLE__) + /* OS X potential control apps */ +#else + /* Windows potential control apps */ +#endif +#endif + + return appname; +} + +bool +JACKAudioBackend::have_control_app () const +{ + return !control_app_name().empty(); +} + +void +JACKAudioBackend::launch_control_app () +{ + /* launch control app, don't care if it succeeds */ + + string appname = control_app_name (); + + if (appname.empty()) { + return; + } + + std::list<string> args; + args.push_back (appname); + Glib::spawn_async ("", args, Glib::SPAWN_SEARCH_PATH); +} + + diff --git a/libs/backends/jack/jack_audiobackend.h b/libs/backends/jack/jack_audiobackend.h index f47b630f49..15246a0305 100644 --- a/libs/backends/jack/jack_audiobackend.h +++ b/libs/backends/jack/jack_audiobackend.h @@ -84,6 +84,9 @@ class JACKAudioBackend : public AudioBackend { uint32_t systemic_input_latency () const; uint32_t systemic_output_latency () const; + bool have_control_app() const; + void launch_control_app (); + int start (); int stop (); int pause (); @@ -179,6 +182,7 @@ class JACKAudioBackend : public AudioBackend { mutable DriverDeviceMap all_devices; PBD::ScopedConnection disconnect_connection; + std::string control_app_name () const; }; } // namespace |