diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-10-31 13:16:51 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-10-31 13:16:51 -0400 |
commit | ea1ccb869a152d7344f498d2a062867f5bcf9d0b (patch) | |
tree | ef3b8dc9d60cd7d1da9ba439384336c1b0009ca2 /libs/backends | |
parent | b80ae88154fbc1b23c97fe60192a304280c8542c (diff) | |
parent | f2300164d7a89c5e433d3293dfed4c1ab77f0553 (diff) |
fix merge with master
Diffstat (limited to 'libs/backends')
-rw-r--r-- | libs/backends/jack/jack_audiobackend.cc | 1 | ||||
-rw-r--r-- | libs/backends/jack/jack_audiobackend.h | 2 | ||||
-rw-r--r-- | libs/backends/jack/jack_portengine.cc | 4 | ||||
-rw-r--r-- | libs/backends/jack/jack_utils.cc | 108 |
4 files changed, 66 insertions, 49 deletions
diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index 7a9b993251..86e5b9d54c 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -509,6 +509,7 @@ JACKAudioBackend::setup_jack_startup_command (bool for_latency_measurement) /* error, somehow - we will still try to start JACK * automatically but it will be without our preferred options */ + std::cerr << "get_jack_command_line_string () failed: using default settings." << std::endl; return; } diff --git a/libs/backends/jack/jack_audiobackend.h b/libs/backends/jack/jack_audiobackend.h index c59ddb5c67..2c77e6112b 100644 --- a/libs/backends/jack/jack_audiobackend.h +++ b/libs/backends/jack/jack_audiobackend.h @@ -126,7 +126,7 @@ class JACKAudioBackend : public AudioBackend { int set_port_name (PortHandle, const std::string&); std::string get_port_name (PortHandle) const; - PortHandle* get_port_by_name (const std::string&) const; + PortHandle get_port_by_name (const std::string&) const; int get_ports (const std::string& port_name_pattern, DataType type, PortFlags flags, std::vector<std::string>&) const; diff --git a/libs/backends/jack/jack_portengine.cc b/libs/backends/jack/jack_portengine.cc index 0d66f50448..1fe77fbb70 100644 --- a/libs/backends/jack/jack_portengine.cc +++ b/libs/backends/jack/jack_portengine.cc @@ -116,11 +116,11 @@ JACKAudioBackend::get_port_name (PortHandle port) const return jack_port_name ((jack_port_t*) port); } -PortEngine::PortHandle* +PortEngine::PortHandle JACKAudioBackend:: get_port_by_name (const std::string& name) const { GET_PRIVATE_JACK_POINTER_RET (_priv_jack, 0); - return (PortHandle*) jack_port_by_name (_priv_jack, name.c_str()); + return (PortHandle) jack_port_by_name (_priv_jack, name.c_str()); } void diff --git a/libs/backends/jack/jack_utils.cc b/libs/backends/jack/jack_utils.cc index 92f175d9cb..e009b05cd7 100644 --- a/libs/backends/jack/jack_utils.cc +++ b/libs/backends/jack/jack_utils.cc @@ -756,6 +756,9 @@ ARDOUR::get_jack_command_line_string (JackCommandLineOptions& options, string& c string command_line_driver_name; + string command_line_input_device_name; + string command_line_output_device_name; + if (!get_jack_command_line_audio_driver_name (options.driver, command_line_driver_name)) { return false; } @@ -763,60 +766,71 @@ ARDOUR::get_jack_command_line_string (JackCommandLineOptions& options, string& c args.push_back ("-d"); args.push_back (command_line_driver_name); - if (options.output_device.empty() && options.input_device.empty()) { - return false; - } - - string command_line_input_device_name; - string command_line_output_device_name; - - if (!get_jack_command_line_audio_device_name (options.driver, - options.input_device, command_line_input_device_name)) { - return false; - } + if (options.driver != dummy_driver_name) { + if (options.output_device.empty() && options.input_device.empty()) { + return false; + } - if (!get_jack_command_line_audio_device_name (options.driver, - options.output_device, command_line_output_device_name)) { - return false; - } - if (options.input_device.empty()) { - // playback only - if (options.output_device.empty()) { + if (!get_jack_command_line_audio_device_name (options.driver, + options.input_device, command_line_input_device_name)) { return false; } - args.push_back ("-P"); - } else if (options.output_device.empty()) { - // capture only - if (options.input_device.empty()) { + + if (!get_jack_command_line_audio_device_name (options.driver, + options.output_device, command_line_output_device_name)) { return false; } - args.push_back ("-C"); - } else if (options.input_device != options.output_device) { - // capture and playback on two devices if supported - if (get_jack_audio_driver_supports_two_devices (options.driver)) { - args.push_back ("-C"); - args.push_back (command_line_input_device_name); + + if (options.input_device.empty()) { + // playback only + if (options.output_device.empty()) { + return false; + } args.push_back ("-P"); - args.push_back (command_line_output_device_name); - } else { - return false; + } else if (options.output_device.empty()) { + // capture only + if (options.input_device.empty()) { + return false; + } + args.push_back ("-C"); + } else if (options.input_device != options.output_device) { + // capture and playback on two devices if supported + if (get_jack_audio_driver_supports_two_devices (options.driver)) { + args.push_back ("-C"); + args.push_back (command_line_input_device_name); + args.push_back ("-P"); + args.push_back (command_line_output_device_name); + } else { + return false; + } } - } - if (options.input_channels) { - args.push_back ("-i"); - args.push_back (to_string (options.input_channels, std::dec)); - } + if (options.input_channels) { + args.push_back ("-i"); + args.push_back (to_string (options.input_channels, std::dec)); + } - if (options.output_channels) { - args.push_back ("-o"); - args.push_back (to_string (options.output_channels, std::dec)); - } + if (options.output_channels) { + args.push_back ("-o"); + args.push_back (to_string (options.output_channels, std::dec)); + } + + if (get_jack_audio_driver_supports_setting_period_count (options.driver)) { + args.push_back ("-n"); + args.push_back (to_string (options.num_periods, std::dec)); + } + } else { + // jackd dummy backend + if (options.input_channels) { + args.push_back ("-C"); + args.push_back (to_string (options.input_channels, std::dec)); + } - if (get_jack_audio_driver_supports_setting_period_count (options.driver)) { - args.push_back ("-n"); - args.push_back (to_string (options.num_periods, std::dec)); + if (options.output_channels) { + args.push_back ("-P"); + args.push_back (to_string (options.output_channels, std::dec)); + } } args.push_back ("-r"); @@ -836,9 +850,11 @@ ARDOUR::get_jack_command_line_string (JackCommandLineOptions& options, string& c } } - if (options.input_device == options.output_device && options.input_device != default_device_name) { - args.push_back ("-d"); - args.push_back (command_line_input_device_name); + if (options.driver != dummy_driver_name) { + if (options.input_device == options.output_device && options.input_device != default_device_name) { + args.push_back ("-d"); + args.push_back (command_line_input_device_name); + } } if (options.driver == alsa_driver_name) { |