From 14f868fd141a3b2f9664bfb25911e1fe8d35c6a6 Mon Sep 17 00:00:00 2001 From: Pauli Virtanen Date: Wed, 5 Nov 2025 20:26:52 +0200 Subject: [PATCH] transport: always show A2DP Delay property as sink if DelayReporting The Delay property is currently not shown to sound server unless remote side has acked delay reporting. However, when we are A2DP Sink, we reply to delay report requests with the current value, so the value logically exists and is active. This behavior was apparently changed in commits 05f8bd489fd1 and 5d4efe960fd. Show Delay value for local A2DP Sink endpoint if it has DelayReporting. Fixes: https://github.com/bluez/bluez/issues/1541 --- profiles/audio/media.c | 5 +++++ profiles/audio/media.h | 1 + profiles/audio/transport.c | 5 +++++ 3 files changed, 11 insertions(+) diff --git a/profiles/audio/media.c b/profiles/audio/media.c index deb321e6c..a7a8575f9 100644 --- a/profiles/audio/media.c +++ b/profiles/audio/media.c @@ -3488,6 +3488,11 @@ const char *media_endpoint_get_uuid(struct media_endpoint *endpoint) return endpoint->uuid; } +bool media_endpoint_get_delay_reporting(struct media_endpoint *endpoint) +{ + return endpoint->delay_reporting; +} + uint8_t media_endpoint_get_codec(struct media_endpoint *endpoint) { return endpoint->codec; diff --git a/profiles/audio/media.h b/profiles/audio/media.h index d3954abd6..380951f28 100644 --- a/profiles/audio/media.h +++ b/profiles/audio/media.h @@ -19,6 +19,7 @@ void media_unregister(struct btd_adapter *btd_adapter); struct a2dp_sep *media_endpoint_get_sep(struct media_endpoint *endpoint); const char *media_endpoint_get_uuid(struct media_endpoint *endpoint); +bool media_endpoint_get_delay_reporting(struct media_endpoint *endpoint); uint8_t media_endpoint_get_codec(struct media_endpoint *endpoint); struct btd_adapter *media_endpoint_get_btd_adapter( struct media_endpoint *endpoint); diff --git a/profiles/audio/transport.c b/profiles/audio/transport.c index 08ed699b2..08ca360f4 100644 --- a/profiles/audio/transport.c +++ b/profiles/audio/transport.c @@ -1011,8 +1011,13 @@ static gboolean delay_reporting_exists(const GDBusPropertyTable *property, void *data) { struct media_transport *transport = data; + struct media_endpoint *endpoint = transport->endpoint; struct avdtp_stream *stream; + /* Local A2DP sink decides itself if it has delay reporting */ + if (!strcmp(media_endpoint_get_uuid(endpoint), A2DP_SINK_UUID)) + return media_endpoint_get_delay_reporting(endpoint); + stream = media_transport_get_stream(transport); if (stream == NULL) return FALSE; -- 2.47.3