Re: [PATCH BlueZ] audio/transport: Emit Volume changed if endpoint is source
From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
Date: 2021-03-31 20:15:15
Hi Feryllt, On Wed, Mar 31, 2021 at 1:01 PM Feryllt Pryderi [off-list ref] wrote:
Hi Luiz, sure I can update the patch, but is the if at all needed? Can we have transports without any of source_watch and sink_watch?
Right, I was about to do the change myself but you have a good point, if we will be emitting for both then we should just signal regardless. That said when acting as a source (notify=false) we would be sense the command AVRCP_SET_ABSOLUTE_VOLUME which the remote shall generate an event AVRCP_EVENT_VOLUME_CHANGED which will then generate the signal at media_transport_update_volume, so something is off here, are you really not getting any signal?
On 3/31/21 8:33 PM, Luiz Augusto von Dentz wrote:quoted
Hi Feryllt, On Wed, Mar 31, 2021 at 4:40 AM Feryllt Pryderi [off-list ref] wrote:quoted
Change set_volume to send a Volume PropertyChanged signal also if transport->sink_watch is set (and not only if source_watch is set). This fixes volume changes signals not being sent for devices like speakers and headphone adapters with volume control (like Bose Soundlink Revolve or Fiio BTR5). --- profiles/audio/transport.c | 1 + 1 file changed, 1 insertion(+)diff --git a/profiles/audio/transport.c b/profiles/audio/transport.c index 8248014ae..26aa237a3 100644 --- a/profiles/audio/transport.c +++ b/profiles/audio/transport.c@@ -662,6 +662,7 @@ static void set_volume(const GDBusPropertyTable *property, a2dp->volume = volume; notify = transport->source_watch ? true : false; + notify = notify || (transport->sink_watch ? true : false);Id replace the following like with: if (transport->source_watch || transport->sink_watch)quoted
if (notify) g_dbus_emit_property_changed(btd_get_dbus_connection(), transport->path, -- 2.31.0
-- Luiz Augusto von Dentz