From f754741d58c6a488f26199fc8a0939984cf443cf Mon Sep 17 00:00:00 2001 From: Pauli Virtanen Date: Wed, 31 Dec 2025 13:39:48 +0200 Subject: [PATCH] bluez5: handle BAP volume change events Handle volume changes initiated by remote also for the BAP profiles. --- spa/plugins/bluez5/bluez5-dbus.c | 6 ++++++ spa/plugins/bluez5/bluez5-device.c | 11 ++--------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/spa/plugins/bluez5/bluez5-dbus.c b/spa/plugins/bluez5/bluez5-dbus.c index 01291f6cf..e3906ca22 100644 --- a/spa/plugins/bluez5/bluez5-dbus.c +++ b/spa/plugins/bluez5/bluez5-dbus.c @@ -3552,6 +3552,12 @@ static void spa_bt_transport_volume_changed(struct spa_bt_transport *transport) volume_id = SPA_BT_VOLUME_ID_RX; else if (transport->profile & SPA_BT_PROFILE_ASHA_SINK) volume_id = SPA_BT_VOLUME_ID_TX; + else if (transport->profile & SPA_BT_PROFILE_BAP_SINK) + volume_id = SPA_BT_VOLUME_ID_TX; + else if (transport->profile & SPA_BT_PROFILE_BAP_SOURCE) + volume_id = SPA_BT_VOLUME_ID_RX; + else if (transport->profile & SPA_BT_PROFILE_BAP_BROADCAST_SOURCE) + volume_id = SPA_BT_VOLUME_ID_RX; else return; diff --git a/spa/plugins/bluez5/bluez5-device.c b/spa/plugins/bluez5/bluez5-device.c index 842cbbccc..06f0f690e 100644 --- a/spa/plugins/bluez5/bluez5-device.c +++ b/spa/plugins/bluez5/bluez5-device.c @@ -809,17 +809,10 @@ static void dynamic_node_volume_changed(void *data) SPA_FLAG_CLEAR(id, DYNAMIC_NODE_ID_FLAG); /* Remote device is the controller */ - if (!node->transport || impl->profile != DEVICE_PROFILE_AG - || !spa_bt_transport_volume_enabled(node->transport)) - return; - - if (id == 0 || id == 2) - volume_id = SPA_BT_VOLUME_ID_RX; - else if (id == 1) - volume_id = SPA_BT_VOLUME_ID_TX; - else + if (!node->transport || !spa_bt_transport_volume_enabled(node->transport)) return; + volume_id = get_volume_id(id); t_volume = &node->transport->volumes[volume_id]; if (!t_volume->active) return;