diff options
author | Takashi Sakamoto <o-takashi@sakamocchi.jp> | 2015-04-11 17:41:03 +0900 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2015-04-11 17:32:16 +0200 |
commit | c378c3b03c8d6eef2d2600d0279e2c718d6a0a44 (patch) | |
tree | bddbe1cc3f0d5405b7bb948481faec9154f724d9 /sound/core | |
parent | c78497e010ae62c8abfb33a45d0e0b361218e9bb (diff) |
ALSA: ctl: fix a bug to return no identical information in info operation for userspace controls
In operations of SNDRV_CTL_IOCTL_ELEM_INFO, identical information in
returned value is cleared. This is not better to userspace application.
This commit confirms to return full identical information to the
operations.
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/core')
-rw-r--r-- | sound/core/control.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sound/core/control.c b/sound/core/control.c index 90a9e5d9819a..a750846514dc 100644 --- a/sound/core/control.c +++ b/sound/core/control.c @@ -1040,8 +1040,12 @@ static int snd_ctl_elem_user_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo) { struct user_element *ue = kcontrol->private_data; + unsigned int offset; + offset = snd_ctl_get_ioff(kcontrol, &uinfo->id); *uinfo = ue->info; + snd_ctl_build_ioff(&uinfo->id, kcontrol, offset); + return 0; } @@ -1051,10 +1055,13 @@ static int snd_ctl_elem_user_enum_info(struct snd_kcontrol *kcontrol, struct user_element *ue = kcontrol->private_data; const char *names; unsigned int item; + unsigned int offset; item = uinfo->value.enumerated.item; + offset = snd_ctl_get_ioff(kcontrol, &uinfo->id); *uinfo = ue->info; + snd_ctl_build_ioff(&uinfo->id, kcontrol, offset); item = min(item, uinfo->value.enumerated.items - 1); uinfo->value.enumerated.item = item; |