From 4f7843a0fcc1a0a4336004de2702f657fb97b5ff Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Mon, 14 Sep 2015 16:50:19 +0300 Subject: [PATCH] audio/transport: Fix not emitting Volume changes If Volume is changed locally the change should be propagated using PropertiesChanged. --- profiles/audio/transport.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/profiles/audio/transport.c b/profiles/audio/transport.c index f5c829f32..7e3d1e697 100644 --- a/profiles/audio/transport.c +++ b/profiles/audio/transport.c @@ -653,6 +653,7 @@ static void set_volume(const GDBusPropertyTable *property, struct media_transport *transport = data; struct a2dp_transport *a2dp = transport->data; uint16_t volume; + bool notify; if (dbus_message_iter_get_arg_type(iter) != DBUS_TYPE_UINT16) { g_dbus_pending_property_error(id, @@ -670,13 +671,21 @@ static void set_volume(const GDBusPropertyTable *property, return; } - if (a2dp->volume != volume) - avrcp_set_volume(transport->device, volume, - transport->source_watch ? true : false); + g_dbus_pending_property_success(id); + + if (a2dp->volume == volume) + return; a2dp->volume = volume; - g_dbus_pending_property_success(id); + notify = transport->source_watch ? true : false; + if (notify) + g_dbus_emit_property_changed(btd_get_dbus_connection(), + transport->path, + MEDIA_TRANSPORT_INTERFACE, + "Volume"); + + avrcp_set_volume(transport->device, volume, notify); } static const GDBusMethodTable transport_methods[] = { -- 2.47.3