mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-29 05:40:25 -04:00
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 <tiwai@suse.de>
This commit is contained in:
parent
46d98392d0
commit
7d9972c6ad
12 changed files with 25 additions and 54 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue