From: Takashi Iwai Date: Thu, 30 Apr 2015 12:52:35 +0000 (+0200) Subject: Allow hint for ctl, hwdep, timer and seq X-Git-Tag: v1.1.0~77 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=7d9972c6ad154bc55ccecb555ec84c01a694a050;p=alsa-lib.git Allow hint for ctl, hwdep, timer and seq Like pcm and rawmidi, each object parser needs to accept the hint component. Now a new local function _snd_conf_generic_id() was introduced to replace each call of "comment" and "type" field checks. Also, the two existing identical functions for pcm and rawmidi are removed and the new function is used commonly. Signed-off-by: Takashi Iwai --- diff --git a/include/local.h b/include/local.h index 2fe9a273..66008163 100644 --- a/include/local.h +++ b/include/local.h @@ -348,4 +348,6 @@ int snd_config_search_alias_hooks(snd_config_t *config, const char *base, const char *key, snd_config_t **result); +int _snd_conf_generic_id(const char *id); + #endif diff --git a/src/confmisc.c b/src/confmisc.c index af686bea..1fb4f282 100644 --- a/src/confmisc.c +++ b/src/confmisc.c @@ -1302,3 +1302,16 @@ int snd_func_refer(snd_config_t **dst, snd_config_t *root, snd_config_t *src, #ifndef DOC_HIDDEN SND_DLSYM_BUILD_VERSION(snd_func_refer, SND_CONFIG_DLSYM_VERSION_EVALUATE); #endif + +#ifndef DOC_HIDDEN +int _snd_conf_generic_id(const char *id) +{ + static const char ids[3][8] = { "comment", "type", "hint" }; + unsigned int k; + for (k = 0; k < sizeof(ids) / sizeof(ids[0]); ++k) { + if (strcmp(id, ids[k]) == 0) + return 1; + } + return 0; +} +#endif diff --git a/src/control/control_hw.c b/src/control/control_hw.c index dfc9dcd5..7d23151c 100644 --- a/src/control/control_hw.c +++ b/src/control/control_hw.c @@ -446,9 +446,7 @@ int _snd_ctl_hw_open(snd_ctl_t **handlep, char *name, snd_config_t *root ATTRIBU const char *id; if (snd_config_get_id(n, &id) < 0) continue; - if (strcmp(id, "comment") == 0) - continue; - if (strcmp(id, "type") == 0) + if (_snd_conf_generic_id(id)) continue; if (strcmp(id, "card") == 0) { err = snd_config_get_integer(n, &card); diff --git a/src/control/control_shm.c b/src/control/control_shm.c index 40bc705d..bd07d4af 100644 --- a/src/control/control_shm.c +++ b/src/control/control_shm.c @@ -551,10 +551,7 @@ int _snd_ctl_shm_open(snd_ctl_t **handlep, char *name, snd_config_t *root, snd_c const char *id; if (snd_config_get_id(n, &id) < 0) continue; - if (strcmp(id, "comment") == 0) - continue; - if (strcmp(id, "type") == 0) - continue; + if (_snd_conf_generic_id(id)) if (strcmp(id, "server") == 0) { err = snd_config_get_string(n, &server); if (err < 0) { @@ -597,7 +594,7 @@ int _snd_ctl_shm_open(snd_ctl_t **handlep, char *name, snd_config_t *root, snd_c const char *id; if (snd_config_get_id(n, &id) < 0) continue; - if (strcmp(id, "comment") == 0) + if (_snd_conf_generic_id(id)) continue; if (strcmp(id, "host") == 0) continue; diff --git a/src/hwdep/hwdep_hw.c b/src/hwdep/hwdep_hw.c index 4314e32b..12528c55 100644 --- a/src/hwdep/hwdep_hw.c +++ b/src/hwdep/hwdep_hw.c @@ -158,9 +158,7 @@ int _snd_hwdep_hw_open(snd_hwdep_t **hwdep, char *name, const char *id; if (snd_config_get_id(n, &id) < 0) continue; - if (strcmp(id, "comment") == 0) - continue; - if (strcmp(id, "type") == 0) + if (_snd_conf_generic_id(id)) continue; if (strcmp(id, "card") == 0) { err = snd_config_get_integer(n, &card); diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c index e74e02fc..bc18954b 100644 --- a/src/pcm/pcm.c +++ b/src/pcm/pcm.c @@ -7059,18 +7059,6 @@ int snd_pcm_slave_conf(snd_config_t *root, snd_config_t *conf, return err; } - -int snd_pcm_conf_generic_id(const char *id) -{ - static const char ids[3][8] = { "comment", "type", "hint" }; - unsigned int k; - for (k = 0; k < sizeof(ids) / sizeof(ids[0]); ++k) { - if (strcmp(id, ids[k]) == 0) - return 1; - } - return 0; -} - static void snd_pcm_set_ptr(snd_pcm_t *pcm, snd_pcm_rbptr_t *rbptr, volatile snd_pcm_uframes_t *hw_ptr, int fd, off_t offset) { diff --git a/src/pcm/pcm_local.h b/src/pcm/pcm_local.h index 394505f9..326618ec 100644 --- a/src/pcm/pcm_local.h +++ b/src/pcm/pcm_local.h @@ -262,8 +262,6 @@ struct _snd_pcm { snd1_pcm_areas_from_bufs #define snd_pcm_open_named_slave \ snd1_pcm_open_named_slave -#define snd_pcm_conf_generic_id \ - snd1_pcm_conf_generic_id #define snd_pcm_hw_open_fd \ snd1_pcm_hw_open_fd #define snd_pcm_wait_nocheck \ @@ -882,7 +880,8 @@ snd_pcm_open_slave(snd_pcm_t **pcmp, snd_config_t *root, return snd_pcm_open_named_slave(pcmp, NULL, root, conf, stream, mode, parent_conf); } -int snd_pcm_conf_generic_id(const char *id); + +#define snd_pcm_conf_generic_id(id) _snd_conf_generic_id(id) int snd_pcm_hw_open_fd(snd_pcm_t **pcmp, const char *name, int fd, int mmap_emulation, int sync_ptr_ioctl); int __snd_pcm_mmap_emul_open(snd_pcm_t **pcmp, const char *name, diff --git a/src/rawmidi/rawmidi.c b/src/rawmidi/rawmidi.c index ac699b43..0c89b8b9 100644 --- a/src/rawmidi/rawmidi.c +++ b/src/rawmidi/rawmidi.c @@ -990,21 +990,3 @@ ssize_t snd_rawmidi_read(snd_rawmidi_t *rawmidi, void *buffer, size_t size) assert(buffer || size == 0); return (rawmidi->ops->read)(rawmidi, buffer, size); } - -#ifndef DOC_HIDDEN -int snd_rawmidi_conf_generic_id(const char *id) -{ - static const char ids[][8] = { - "comment", - "type", - "hint", - }; - unsigned int k; - - for (k = 0; k < sizeof ids / sizeof *ids; ++k) { - if (strcmp(id, ids[k]) == 0) - return 1; - } - return 0; -} -#endif diff --git a/src/rawmidi/rawmidi_local.h b/src/rawmidi/rawmidi_local.h index 3388502c..8992771e 100644 --- a/src/rawmidi/rawmidi_local.h +++ b/src/rawmidi/rawmidi_local.h @@ -58,4 +58,4 @@ int snd_rawmidi_virtual_open(snd_rawmidi_t **inputp, snd_rawmidi_t **outputp, const char *name, snd_seq_t *seq_handle, int port, int merge, int mode); -int snd_rawmidi_conf_generic_id(const char *id); +#define snd_rawmidi_conf_generic_id(id) _snd_conf_generic_id(id) diff --git a/src/seq/seq_hw.c b/src/seq/seq_hw.c index 6cb31d6f..d0333673 100644 --- a/src/seq/seq_hw.c +++ b/src/seq/seq_hw.c @@ -546,9 +546,7 @@ int _snd_seq_hw_open(snd_seq_t **handlep, char *name, const char *id; if (snd_config_get_id(n, &id) < 0) continue; - if (strcmp(id, "comment") == 0) - continue; - if (strcmp(id, "type") == 0) + if (_snd_conf_generic_id(id)) continue; return -EINVAL; } diff --git a/src/timer/timer_hw.c b/src/timer/timer_hw.c index aa6a0b1b..e833fc8c 100644 --- a/src/timer/timer_hw.c +++ b/src/timer/timer_hw.c @@ -299,9 +299,7 @@ int _snd_timer_hw_open(snd_timer_t **timer, char *name, const char *id; if (snd_config_get_id(n, &id) < 0) continue; - if (strcmp(id, "comment") == 0) - continue; - if (strcmp(id, "type") == 0) + if (_snd_conf_generic_id(id)) continue; if (strcmp(id, "class") == 0) { err = snd_config_get_integer(n, &dev_class); diff --git a/src/timer/timer_query_hw.c b/src/timer/timer_query_hw.c index 9f62b78a..289ca52f 100644 --- a/src/timer/timer_query_hw.c +++ b/src/timer/timer_query_hw.c @@ -134,9 +134,7 @@ int _snd_timer_query_hw_open(snd_timer_query_t **timer, char *name, const char *id; if (snd_config_get_id(n, &id) < 0) continue; - if (strcmp(id, "comment") == 0) - continue; - if (strcmp(id, "type") == 0) + if (_snd_conf_generic_id(id)) continue; SNDERR("Unexpected field %s", id); return -EINVAL;