diff --git a/gtk2_ardour/engine_dialog.cc b/gtk2_ardour/engine_dialog.cc index 69580766f3..13e9ac3238 100644 --- a/gtk2_ardour/engine_dialog.cc +++ b/gtk2_ardour/engine_dialog.cc @@ -1552,7 +1552,11 @@ EngineControl::set_nperiods_popdown_strings () vector s; if (backend->can_set_period_size()) { - np = backend->available_period_sizes (get_driver()); + if (backend->use_separate_input_and_output_devices ()) { + np = backend->available_period_sizes (get_driver(), get_output_device_name ()); + } else { + np = backend->available_period_sizes (get_driver(), get_device_name ()); + } } for (vector::const_iterator x = np.begin(); x != np.end(); ++x) { diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index 1a955336c5..142fff1022 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -280,7 +280,7 @@ public: } /** Returns a vector of supported period-sizes for the given driver */ - virtual std::vector available_period_sizes (const std::string& driver) const + virtual std::vector available_period_sizes (const std::string& driver, const std::string& device) const { return std::vector (); } diff --git a/libs/ardouralsautil/ardouralsautil/deviceinfo.h b/libs/ardouralsautil/ardouralsautil/deviceinfo.h index e217a0d575..3ccdb66e8e 100644 --- a/libs/ardouralsautil/ardouralsautil/deviceinfo.h +++ b/libs/ardouralsautil/ardouralsautil/deviceinfo.h @@ -24,7 +24,7 @@ namespace ARDOUR { struct ALSADeviceInfo { unsigned int max_channels; unsigned int min_rate, max_rate; - unsigned int min_nper, min_nper; + unsigned int min_nper, max_nper; unsigned long min_size, max_size; bool valid; }; diff --git a/libs/backends/alsa/alsa_audiobackend.cc b/libs/backends/alsa/alsa_audiobackend.cc index 6c931b08cb..80b0e36e6f 100644 --- a/libs/backends/alsa/alsa_audiobackend.cc +++ b/libs/backends/alsa/alsa_audiobackend.cc @@ -267,11 +267,11 @@ AlsaAudioBackend::available_output_channel_count (const std::string& device) con } std::vector -AlsaAudioBackend::available_period_sizes (const std::string& driver) const +AlsaAudioBackend::available_period_sizes (const std::string& driver, const std::string& device) const { std::vector ps; - ALSADeviceInfo *nfo = NULL; + ALSADeviceInfo* nfo = NULL; if (device == get_standard_device_name(DeviceNone)) { return ps; } diff --git a/libs/backends/alsa/alsa_audiobackend.h b/libs/backends/alsa/alsa_audiobackend.h index 02d61c6042..f15c7a2857 100644 --- a/libs/backends/alsa/alsa_audiobackend.h +++ b/libs/backends/alsa/alsa_audiobackend.h @@ -140,7 +140,7 @@ class AlsaAudioBackend : public AudioBackend, public PortEngineSharedImpl std::vector available_sample_rates2 (const std::string&, const std::string&) const; std::vector available_buffer_sizes (const std::string& device) const; std::vector available_buffer_sizes2 (const std::string&, const std::string&) const; - std::vector available_period_sizes (const std::string& driver) const; + std::vector available_period_sizes (const std::string& driver, const std::string& device) const; uint32_t available_input_channel_count (const std::string& device) const; uint32_t available_output_channel_count (const std::string& device) const; diff --git a/libs/backends/jack/jack_audiobackend.cc b/libs/backends/jack/jack_audiobackend.cc index 37f5855cf1..89a67e4e0e 100644 --- a/libs/backends/jack/jack_audiobackend.cc +++ b/libs/backends/jack/jack_audiobackend.cc @@ -215,7 +215,7 @@ JACKAudioBackend::available_buffer_sizes (const string& device) const } std::vector -JACKAudioBackend::available_period_sizes (const std::string& driver) const +JACKAudioBackend::available_period_sizes (const std::string& driver, const std::string&) const { vector s; if (ARDOUR::get_jack_audio_driver_supports_setting_period_count (driver)) { diff --git a/libs/backends/jack/jack_audiobackend.h b/libs/backends/jack/jack_audiobackend.h index 449ad2ffc5..7dfd35572d 100644 --- a/libs/backends/jack/jack_audiobackend.h +++ b/libs/backends/jack/jack_audiobackend.h @@ -71,7 +71,7 @@ class JACKAudioBackend : public AudioBackend { std::vector available_sample_rates (const std::string& device) const; std::vector available_buffer_sizes (const std::string& device) const; - std::vector available_period_sizes (const std::string& driver) const; + std::vector available_period_sizes (const std::string& driver, const std::string& device) const; uint32_t available_input_channel_count (const std::string& device) const; uint32_t available_output_channel_count (const std::string& device) const;