caac5761a6
[ Upstream commit ff7b190aef6cccdb6f14d20c5753081fe6420e0b ]
When an event with UMP message is sent to a UMP client, the EP port
receives always no matter where the event is sent to, as it's a
catch-all port. OTOH, if an event is sent to EP port, and if the
event has a certain UMP Group, it should have been delivered to the
associated UMP Group port, too, but this was ignored, so far.
This patch addresses the behavior. Now a UMP event sent to the
Endpoint port will be delivered to the subscribers of the UMP group
port the event is associated with.
The patch also does a bit of refactoring to simplify the code about
__deliver_to_subscribers().
Fixes: 177ccf811d ("ALSA: seq: Support MIDI 2.0 UMP Endpoint port")
Link: https://patch.msgid.link/20250511134528.6314-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
24 lines
735 B
C
24 lines
735 B
C
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
/*
|
|
* ALSA sequencer event conversion between UMP and legacy clients
|
|
*/
|
|
#ifndef __SEQ_UMP_CONVERT_H
|
|
#define __SEQ_UMP_CONVERT_H
|
|
|
|
#include "seq_clientmgr.h"
|
|
#include "seq_ports.h"
|
|
|
|
int snd_seq_deliver_from_ump(struct snd_seq_client *source,
|
|
struct snd_seq_client *dest,
|
|
struct snd_seq_client_port *dest_port,
|
|
struct snd_seq_event *event,
|
|
int atomic, int hop);
|
|
int snd_seq_deliver_to_ump(struct snd_seq_client *source,
|
|
struct snd_seq_client *dest,
|
|
struct snd_seq_client_port *dest_port,
|
|
struct snd_seq_event *event,
|
|
int atomic, int hop);
|
|
int snd_seq_ump_group_port(const struct snd_seq_event *event);
|
|
|
|
#endif /* __SEQ_UMP_CONVERT_H */
|