mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 05:24:39 +01:00
ALSA: control: Keep the previous numid at snd_ctl_rename_id()
We don't need to change the numid at each time snd_ctl_rename_id() is called, as the control element size itself doesn't change. Let's keep the previous numid value. Along with it, add a note about calling this function only in the card init phase. Reviewed-by: Jaroslav Kysela <perex@perex.cz> Link: https://lore.kernel.org/r/20230606094035.14808-1-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
ebcbfd8463
commit
306f3f78a5
1 changed files with 10 additions and 2 deletions
|
|
@ -730,12 +730,20 @@ EXPORT_SYMBOL_GPL(snd_ctl_activate_id);
|
|||
* Finds the control with the old id from the card, and replaces the
|
||||
* id with the new one.
|
||||
*
|
||||
* The function tries to keep the already assigned numid while replacing
|
||||
* the rest.
|
||||
*
|
||||
* Note that this function should be used only in the card initialization
|
||||
* phase. Calling after the card instantiation may cause issues with
|
||||
* user-space expecting persistent numids.
|
||||
*
|
||||
* Return: Zero if successful, or a negative error code on failure.
|
||||
*/
|
||||
int snd_ctl_rename_id(struct snd_card *card, struct snd_ctl_elem_id *src_id,
|
||||
struct snd_ctl_elem_id *dst_id)
|
||||
{
|
||||
struct snd_kcontrol *kctl;
|
||||
int saved_numid;
|
||||
|
||||
down_write(&card->controls_rwsem);
|
||||
kctl = snd_ctl_find_id(card, src_id);
|
||||
|
|
@ -743,10 +751,10 @@ int snd_ctl_rename_id(struct snd_card *card, struct snd_ctl_elem_id *src_id,
|
|||
up_write(&card->controls_rwsem);
|
||||
return -ENOENT;
|
||||
}
|
||||
saved_numid = kctl->id.numid;
|
||||
remove_hash_entries(card, kctl);
|
||||
kctl->id = *dst_id;
|
||||
kctl->id.numid = card->last_numid + 1;
|
||||
card->last_numid += kctl->count;
|
||||
kctl->id.numid = saved_numid;
|
||||
add_hash_entries(card, kctl);
|
||||
up_write(&card->controls_rwsem);
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue