diff options
author | Adam Goode <agoode@google.com> | 2014-06-04 11:20:55 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2014-06-04 17:30:58 +0200 |
commit | 27423257b7e6b236f0ea40d939e5842f63dac949 (patch) | |
tree | 81f44740dc04be0757953c6a1961769d84317915 /arch/arm/mach-vt8500/vt8500.c | |
parent | 1c9b8f51251212113a8ed12836dc6ba6a14e8b33 (diff) |
ALSA: seq: Continue broadcasting events to ports if one of them fails
Sometimes PORT_EXIT messages are lost when a process is exiting.
This happens if you subscribe to the announce port with client A,
then subscribe to the announce port with client B, then kill client A.
Client B will not see the PORT_EXIT message because client A's port is
closing and is earlier in the announce port subscription list. The
for each loop will try to send the announcement to client A and fail,
then will stop trying to broadcast to other ports. Killing B works fine
since the announcement will already have gone to A. The CLIENT_EXIT
message does not get lost.
How to reproduce problem:
*** termA
$ aseqdump -p 0:1
0:1 Port subscribed 0:1 -> 128:0
*** termB
$ aseqdump -p 0:1
*** termA
0:1 Client start client 129
0:1 Port start 129:0
0:1 Port subscribed 0:1 -> 129:0
*** termB
0:1 Port subscribed 0:1 -> 129:0
*** termA
^C
*** termB
0:1 Client exit client 128
<--- expected Port exit as well (before client exit)
Signed-off-by: Adam Goode <agoode@google.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'arch/arm/mach-vt8500/vt8500.c')
0 files changed, 0 insertions, 0 deletions