On Wed, Feb 02, 2022 at 10:56:01AM +0900, Takashi Sakamoto wrote:
On Tue, Feb 01, 2022 at 03:15:51PM +0000, Mark Brown wrote:
/* The ID returned from the event is 1 less than numid */
mask = snd_ctl_event_elem_get_mask(event);
ev_id = snd_ctl_event_elem_get_numid(event);
if (ev_id != ctl->elem + 1) {
As long as I know, the design of ALSA control core just exposes the numeric identification of a control element issued for notification in 'snd_ctl_event' structure. On the other hand, the above evaluation expects decremented value against position of queried list structure has come.
I note that current design of ALSA control core is:
- 1 is selected for numeric identification of the first element in the first element set added to sound card.
- at removal of element set, the series of assigned numeric identification becomes blank (coded as hole).
- Userspace application can always add/remove element set to the card.
- the position of element in queried list structure does not necessarily corresponds to numeric identification even if decremented by 1 due to the hole.
Oh, I see - we have multiple IDs here which is what's confusing things. This looked wrong when I was writing it and I was hoping someone would confirm what was going on on review so thanks.