mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-10-29 05:40:23 -04:00
protocol-native: Don't enumerate unlinked sinks and sources
This makes sure that there is no window between pa_sink/source_new() and _put() where enumerating sinks/sources causes an assert (several calls in sink/source_get_info need a linked sink or source).
This commit is contained in:
parent
ee1a964994
commit
bd0bd9143f
1 changed files with 7 additions and 5 deletions
|
|
@ -3588,11 +3588,13 @@ static void command_get_info_list(pa_pdispatch *pd, uint32_t command, uint32_t t
|
|||
|
||||
if (i) {
|
||||
PA_IDXSET_FOREACH(p, i, idx) {
|
||||
if (command == PA_COMMAND_GET_SINK_INFO_LIST)
|
||||
sink_fill_tagstruct(c, reply, p);
|
||||
else if (command == PA_COMMAND_GET_SOURCE_INFO_LIST)
|
||||
source_fill_tagstruct(c, reply, p);
|
||||
else if (command == PA_COMMAND_GET_CLIENT_INFO_LIST)
|
||||
if (command == PA_COMMAND_GET_SINK_INFO_LIST) {
|
||||
if (PA_SINK_IS_LINKED(((pa_sink *)p)->state))
|
||||
sink_fill_tagstruct(c, reply, p);
|
||||
} else if (command == PA_COMMAND_GET_SOURCE_INFO_LIST) {
|
||||
if (PA_SOURCE_IS_LINKED(((pa_source *)p)->state))
|
||||
source_fill_tagstruct(c, reply, p);
|
||||
} else if (command == PA_COMMAND_GET_CLIENT_INFO_LIST)
|
||||
client_fill_tagstruct(c, reply, p);
|
||||
else if (command == PA_COMMAND_GET_CARD_INFO_LIST)
|
||||
card_fill_tagstruct(c, reply, p);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue