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>
This commit is contained in:
parent
c78497e010
commit
c378c3b03c
@ -1040,8 +1040,12 @@ static int snd_ctl_elem_user_info(struct snd_kcontrol *kcontrol,
|
|||||||
struct snd_ctl_elem_info *uinfo)
|
struct snd_ctl_elem_info *uinfo)
|
||||||
{
|
{
|
||||||
struct user_element *ue = kcontrol->private_data;
|
struct user_element *ue = kcontrol->private_data;
|
||||||
|
unsigned int offset;
|
||||||
|
|
||||||
|
offset = snd_ctl_get_ioff(kcontrol, &uinfo->id);
|
||||||
*uinfo = ue->info;
|
*uinfo = ue->info;
|
||||||
|
snd_ctl_build_ioff(&uinfo->id, kcontrol, offset);
|
||||||
|
|
||||||
return 0;
|
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;
|
struct user_element *ue = kcontrol->private_data;
|
||||||
const char *names;
|
const char *names;
|
||||||
unsigned int item;
|
unsigned int item;
|
||||||
|
unsigned int offset;
|
||||||
|
|
||||||
item = uinfo->value.enumerated.item;
|
item = uinfo->value.enumerated.item;
|
||||||
|
|
||||||
|
offset = snd_ctl_get_ioff(kcontrol, &uinfo->id);
|
||||||
*uinfo = ue->info;
|
*uinfo = ue->info;
|
||||||
|
snd_ctl_build_ioff(&uinfo->id, kcontrol, offset);
|
||||||
|
|
||||||
item = min(item, uinfo->value.enumerated.items - 1);
|
item = min(item, uinfo->value.enumerated.items - 1);
|
||||||
uinfo->value.enumerated.item = item;
|
uinfo->value.enumerated.item = item;
|
||||||
|
Loading…
Reference in New Issue
Block a user