Takashi Sakamoto wrote:
On Feb 5 2015 08:51, Takashi Sakamoto wrote:
sound/core/control.c:1188 {{{ kctl.count = info->owner ? info->owner : 1; }}}
In this code, the value in struct snd_ctl_elem_info.owner is assigned to struct snd_kcontrol.count. The meaning of these two member is completely different but assigned.
There is hardware that has many identical controls. To save memory, ALSA treats controls with .count > 1 as if there were multiple controls.
This optimization is not visible in the userspace API.
The owner field is used because there is no other field to set the count.
When any userspace control element are added, the value of struct snd_ctl_elem_info.owner is zero because there's no API to set this member in userspace
So far, setting this field has not been needed. An API could be added.
I guess that the reason is to limit the number of event generated when the control element set is operated.
If a driver needs twenty identical controls, it could create one control with count=20, or twenty controls with count=1. In both cases, twenty events are sent.
Regards, Clemens