From 335debfa2fed045dc80c43fb2ef62d89262fc8f8 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 26 Nov 2016 14:30:46 +0100 Subject: [PATCH] Add API to enforce valid device selection. --- libs/ardour/ardour/audio_backend.h | 8 ++++++++ libs/backends/alsa/alsa_audiobackend.h | 1 + libs/backends/portaudio/portaudio_backend.h | 1 + 3 files changed, 10 insertions(+) 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; -- 2.30.2