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:
Arun Raghavan 2013-12-08 14:18:00 -08:00
parent ee1a964994
commit bd0bd9143f

View file

@ -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);