From 72ede8a12d2eed686f91bd00dd4badc10d5e4c3e Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Mon, 26 Nov 2007 12:29:37 +0100 Subject: [PATCH] Set PCM name properly in empty and asym plugins The PCM name isn't set properly on empty and asym plugins due to its call of snd_pcm_open_slave(). Now a new function snd_pcm_open_named_slave() is created and make snd_pcm_open_slave() an inline function calling the new one with name=NULL. --- src/pcm/pcm.c | 9 +++++---- src/pcm/pcm_asym.c | 3 ++- src/pcm/pcm_empty.c | 3 ++- src/pcm/pcm_local.h | 15 ++++++++++++--- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c index 142b4c62..2e36cc18 100644 --- a/src/pcm/pcm.c +++ b/src/pcm/pcm.c @@ -2226,9 +2226,10 @@ int snd_pcm_free(snd_pcm_t *pcm) return 0; } -int snd_pcm_open_slave(snd_pcm_t **pcmp, snd_config_t *root, - snd_config_t *conf, snd_pcm_stream_t stream, - int mode, snd_config_t *parent_conf) +int snd_pcm_open_named_slave(snd_pcm_t **pcmp, const char *name, + snd_config_t *root, + snd_config_t *conf, snd_pcm_stream_t stream, + int mode, snd_config_t *parent_conf) { const char *str; int hop; @@ -2238,7 +2239,7 @@ int snd_pcm_open_slave(snd_pcm_t **pcmp, snd_config_t *root, if (snd_config_get_string(conf, &str) >= 0) return snd_pcm_open_noupdate(pcmp, root, str, stream, mode, hop + 1); - return snd_pcm_open_conf(pcmp, NULL, root, conf, stream, mode); + return snd_pcm_open_conf(pcmp, name, root, conf, stream, mode); } #endif diff --git a/src/pcm/pcm_asym.c b/src/pcm/pcm_asym.c index 660f3107..9c32b1b9 100644 --- a/src/pcm/pcm_asym.c +++ b/src/pcm/pcm_asym.c @@ -109,7 +109,8 @@ int _snd_pcm_asym_open(snd_pcm_t **pcmp, const char *name ATTRIBUTE_UNUSED, err = snd_pcm_slave_conf(root, slave, &sconf, 0); if (err < 0) return err; - err = snd_pcm_open_slave(pcmp, root, sconf, stream, mode, conf); + err = snd_pcm_open_named_slave(pcmp, name, root, sconf, stream, + mode, conf); snd_config_delete(sconf); return err; } diff --git a/src/pcm/pcm_empty.c b/src/pcm/pcm_empty.c index 8daf9c36..070850cd 100644 --- a/src/pcm/pcm_empty.c +++ b/src/pcm/pcm_empty.c @@ -100,7 +100,8 @@ int _snd_pcm_empty_open(snd_pcm_t **pcmp, const char *name ATTRIBUTE_UNUSED, err = snd_pcm_slave_conf(root, slave, &sconf, 0); if (err < 0) return err; - err = snd_pcm_open_slave(pcmp, root, sconf, stream, mode, conf); + err = snd_pcm_open_named_slave(pcmp, name, root, sconf, stream, + mode, conf); snd_config_delete(sconf); return err; } diff --git a/src/pcm/pcm_local.h b/src/pcm/pcm_local.h index fd5dbb67..f2816c6a 100644 --- a/src/pcm/pcm_local.h +++ b/src/pcm/pcm_local.h @@ -749,9 +749,18 @@ int snd_pcm_slave_conf(snd_config_t *root, snd_config_t *conf, #define SND_PCM_APPEND (1<<8) -int snd_pcm_open_slave(snd_pcm_t **pcmp, snd_config_t *root, - snd_config_t *conf, snd_pcm_stream_t stream, - int mode, snd_config_t *parent_conf); +int snd_pcm_open_named_slave(snd_pcm_t **pcmp, const char *name, + snd_config_t *root, + snd_config_t *conf, snd_pcm_stream_t stream, + int mode, snd_config_t *parent_conf); +static inline int +snd_pcm_open_slave(snd_pcm_t **pcmp, snd_config_t *root, + snd_config_t *conf, snd_pcm_stream_t stream, + int mode, snd_config_t *parent_conf) +{ + return snd_pcm_open_named_slave(pcmp, NULL, root, conf, stream, + mode, parent_conf); +} int snd_pcm_conf_generic_id(const char *id); int snd_pcm_hw_open_fd(snd_pcm_t **pcmp, const char *name, int fd, int mmap_emulation, int sync_ptr_ioctl); -- 2.47.1