mixer-control: Rely on stream-id on device for cardless devices

Some devices don't have a card to match against, (e.g. network sinks),
which would make 'match_stream_with_devices()' get confused and log
warnings about missing card devices when trying to match streams with
devices.

Avoid this by marking a stream as 'in-possession' if there was already a
device with the stream ID set to it.

This fixes warning like

   (gnome-shell:3521215): Gvc-CRITICAL **: 10:57:07.155: gvc_mixer_card_get_index: assertion 'GVC_IS_MIXER_CARD (card)' failed
This commit is contained in:
Jonas Ådahl 2021-03-15 11:04:06 +01:00
parent 7a621180b4
commit c5ab6037f4

View File

@ -1250,6 +1250,13 @@ match_stream_with_devices (GvcMixerControl *control,
"port-name", &device_port_name,
NULL);
if (card == NULL) {
if (device_stream_id == stream_id) {
g_debug ("Matched stream %u with card-less device '%s', with stream already setup",
stream_id, description);
in_possession = TRUE;
}
} else {
card_id = gvc_mixer_card_get_index (card);
g_debug ("Attempt to match_stream update_with_existing_outputs - Try description : '%s', origin : '%s', device port name : '%s', card : %p, AGAINST stream port: '%s', sink card id %i",
@ -1273,6 +1280,7 @@ match_stream_with_devices (GvcMixerControl *control,
NULL);
in_possession = TRUE;
}
}
g_free (device_port_name);
g_free (origin);