Merge pull request #304 from ishitatsuyuki/host-name

Add name to HostId
This commit is contained in:
mitchmindtree 2019-07-18 15:17:31 +02:00 committed by GitHub
commit 68bccdb325
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 10 deletions

View File

@ -9,7 +9,7 @@ fn main() -> Result<(), failure::Error> {
println!("Available hosts:\n {:?}", available_hosts);
for host_id in available_hosts {
println!("{:?}", host_id);
println!("{}", host_id.name());
let host = cpal::host_from_id(host_id)?;
let default_in = host.default_input_device().map(|e| e.name().unwrap());
let default_out = host.default_output_device().map(|e| e.name().unwrap());

View File

@ -12,8 +12,8 @@ pub use self::platform_impl::*;
// These dynamically dispatched types are necessary to allow for users to switch between hosts at
// runtime.
//
// For example the invocation `impl_platform_host(Wasapi wasapi, Asio asio)`, this macro should
// expand to:
// For example the invocation `impl_platform_host(Wasapi wasapi "WASAPI", Asio asio "ASIO")`,
// this macro should expand to:
//
// ```
// pub enum HostId {
@ -31,7 +31,7 @@ pub use self::platform_impl::*;
// SupportedOutputFormats and all their necessary trait implementations.
// ```
macro_rules! impl_platform_host {
($($HostVariant:ident $host_mod:ident),*) => {
($($HostVariant:ident $host_mod:ident $host_name:literal),*) => {
/// All hosts supported by CPAL on this platform.
pub const ALL_HOSTS: &'static [HostId] = &[
$(
@ -126,6 +126,16 @@ macro_rules! impl_platform_host {
)*
}
impl HostId {
pub fn name(&self) -> &'static str {
match self {
$(
HostId::$HostVariant => $host_name,
)*
}
}
}
impl Host {
/// The unique identifier associated with this host.
pub fn id(&self) -> HostId {
@ -468,7 +478,7 @@ mod platform_impl {
SupportedOutputFormats as AlsaSupportedOutputFormats,
};
impl_platform_host!(Alsa alsa);
impl_platform_host!(Alsa alsa "ALSA");
/// The default host for the current compilation target platform.
pub fn default_host() -> Host {
@ -491,7 +501,7 @@ mod platform_impl {
SupportedOutputFormats as CoreAudioSupportedOutputFormats,
};
impl_platform_host!(CoreAudio coreaudio);
impl_platform_host!(CoreAudio coreaudio "CoreAudio");
/// The default host for the current compilation target platform.
pub fn default_host() -> Host {
@ -513,7 +523,7 @@ mod platform_impl {
SupportedOutputFormats as EmscriptenSupportedOutputFormats,
};
impl_platform_host!(Emscripten emscripten);
impl_platform_host!(Emscripten emscripten "Emscripten");
/// The default host for the current compilation target platform.
pub fn default_host() -> Host {
@ -546,10 +556,10 @@ mod platform_impl {
};
#[cfg(feature = "asio")]
impl_platform_host!(Asio asio, Wasapi wasapi);
impl_platform_host!(Asio asio "ASIO", Wasapi wasapi "WASAPI");
#[cfg(not(feature = "asio"))]
impl_platform_host!(Wasapi wasapi);
impl_platform_host!(Wasapi wasapi "WASAPI");
/// The default host for the current compilation target platform.
pub fn default_host() -> Host {
@ -572,7 +582,7 @@ mod platform_impl {
SupportedOutputFormats as NullSupportedOutputFormats,
};
impl_platform_host!(Null null);
impl_platform_host!(Null null "Null");
/// The default host for the current compilation target platform.
pub fn default_host() -> Host {