[libgnome-volume-control] mixer-control: Rely on stream-id on device for cardless devices
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgnome-volume-control] mixer-control: Rely on stream-id on device for cardless devices
- Date: Mon, 15 Mar 2021 10:47:08 +0000 (UTC)
commit c5ab6037f460406ac9799b1e5765de3ce0097a8b
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Mon Mar 15 11:04:06 2021 +0100
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
gvc-mixer-control.c | 48 ++++++++++++++++++++++++++++--------------------
1 file changed, 28 insertions(+), 20 deletions(-)
---
diff --git a/gvc-mixer-control.c b/gvc-mixer-control.c
index 8b39080..45c729c 100644
--- a/gvc-mixer-control.c
+++ b/gvc-mixer-control.c
@@ -1250,28 +1250,36 @@ match_stream_with_devices (GvcMixerControl *control,
"port-name", &device_port_name,
NULL);
- 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",
- description,
- origin,
- device_port_name,
- card,
- stream_port->port,
- stream_card_id);
-
- if (stream_card_id == card_id &&
- g_strcmp0 (device_port_name, stream_port->port) == 0) {
- g_debug ("Match device with stream: We have a match with description: '%s', origin:
'%s', cached already with device id %u, so set stream id to %i",
+ 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",
description,
origin,
- gvc_mixer_ui_device_get_id (device),
- stream_id);
-
- g_object_set (G_OBJECT (device),
- "stream-id", (gint)stream_id,
- NULL);
- in_possession = TRUE;
+ device_port_name,
+ card,
+ stream_port->port,
+ stream_card_id);
+
+ if (stream_card_id == card_id &&
+ g_strcmp0 (device_port_name, stream_port->port) == 0) {
+ g_debug ("Match device with stream: We have a match with description: '%s',
origin: '%s', cached already with device id %u, so set stream id to %i",
+ description,
+ origin,
+ gvc_mixer_ui_device_get_id (device),
+ stream_id);
+
+ g_object_set (G_OBJECT (device),
+ "stream-id", (gint)stream_id,
+ NULL);
+ in_possession = TRUE;
+ }
}
g_free (device_port_name);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]