From: Robin Gareus Date: Sat, 26 Nov 2016 13:30:46 +0000 (+0100) Subject: Add API to enforce valid device selection. X-Git-Tag: 5.5~41 X-Git-Url: https://main.carlh.net/gitweb/?p=ardour.git;a=commitdiff_plain;h=335debfa2fed045dc80c43fb2ef62d89262fc8f8 Add API to enforce valid device selection. --- diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index 9a00cf281e..6523eb5081 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -202,6 +202,14 @@ class LIBARDOUR_API AudioBackend : public PortEngine { */ virtual bool use_separate_input_and_output_devices () const { return false; } + /* Return true if the backend uses separate I/O devices only for the case + * of allowing one to be "None". + * + * ie. Input Device must match Output Device, except if either of them + * is get_standard_device_name (DeviceNone). + */ + virtual bool match_input_output_devices_or_none () const { return false; } + /** Returns a collection of DeviceStatuses identifying devices discovered * by this backend since the start of the process. * diff --git a/libs/backends/alsa/alsa_audiobackend.h b/libs/backends/alsa/alsa_audiobackend.h index d8dfb31725..bc2620ed9e 100644 --- a/libs/backends/alsa/alsa_audiobackend.h +++ b/libs/backends/alsa/alsa_audiobackend.h @@ -172,6 +172,7 @@ class AlsaAudioBackend : public AudioBackend { bool is_realtime () const; bool use_separate_input_and_output_devices () const { return true; } + bool match_input_output_devices_or_none () const { return true; } bool can_set_period_size () const { return true; } std::vector enumerate_devices () const; diff --git a/libs/backends/portaudio/portaudio_backend.h b/libs/backends/portaudio/portaudio_backend.h index 601c3433cb..692e4c0e61 100644 --- a/libs/backends/portaudio/portaudio_backend.h +++ b/libs/backends/portaudio/portaudio_backend.h @@ -179,6 +179,7 @@ class PortAudioBackend : public AudioBackend { bool get_use_buffered_io () { return _use_blocking_api; } bool use_separate_input_and_output_devices () const; + bool match_input_output_devices_or_none () const { return true; } std::vector enumerate_devices () const; std::vector enumerate_input_devices () const; std::vector enumerate_output_devices () const;