]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ALSA: seq: Notify client and port info changes
authorTakashi Iwai <tiwai@suse.de>
Thu, 28 Nov 2024 07:47:33 +0000 (08:47 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 2 Dec 2024 09:25:21 +0000 (10:25 +0100)
It was supposed to be notified when a sequencer client info and a port
info has changed (via SNDRV_SEQ_EVENT_CLIENT_CHANGE and
SNDRV_SEQ_EVENT_PORT_CHANGE event, respectively), and there are
already helper functions.  But those aren't really sent from the
driver so far, except for the recent support of UMP, simply due to the
lack of implementations.

This patch adds the missing notifications at updating the client and
the port info.  The formerly added notification for UMP is dropped
because it's handled now in the port info side.

Reported-by: Mark Lentczner <mark@glyphic.com>
Link: https://lore.kernel.org/CAPnksqRok7xGa4bxq9WWimVV=28-7_j628OmrWLS=S0=hzaTHQ@mail.gmail.com
Link: https://patch.msgid.link/20241128074734.32165-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/seq/seq_clientmgr.c
sound/core/seq/seq_ump_client.c

index 3930e2f9082f425bf4c99428b9ff866cc984cbcf..fe2d7f90161061620a67d22010f3696dbc89919a 100644 (file)
@@ -1290,6 +1290,10 @@ static int snd_seq_ioctl_set_client_info(struct snd_seq_client *client,
                client->midi_version = client_info->midi_version;
        memcpy(client->event_filter, client_info->event_filter, 32);
        client->group_filter = client_info->group_filter;
+
+       /* notify the change */
+       snd_seq_system_client_ev_client_change(client->number);
+
        return 0;
 }
 
@@ -1413,6 +1417,9 @@ static int snd_seq_ioctl_set_port_info(struct snd_seq_client *client, void *arg)
        if (port) {
                snd_seq_set_port_info(port, info);
                snd_seq_port_unlock(port);
+               /* notify the change */
+               snd_seq_system_client_ev_port_change(info->addr.client,
+                                                    info->addr.port);
        }
        return 0;
 }
index e956f17f379282b40145a1b37956d2e4930db491..27c4dd9940ffbca525f81b8b7860a2abba8dfcc0 100644 (file)
@@ -272,8 +272,6 @@ static void update_port_infos(struct seq_ump_client *client)
                                                new);
                if (err < 0)
                        continue;
-               /* notify to system port */
-               snd_seq_system_client_ev_port_change(client->seq_client, i);
        }
 }