Diff between 5d7e6a64b2fcfcfbabe46b9587f11de2989eff71 and 3d9900eb754d277ef6abf21bed827cdc9e79ddb4

Changed Files

File Additions Deletions Status
profiles/audio/avdtp.c +4 -0 modified
profiles/audio/avdtp.h +1 -0 modified
profiles/audio/transport.c +20 -7 modified

Full Patch

diff --git a/profiles/audio/avdtp.c b/profiles/audio/avdtp.c
index 448ee27..289b408 100644
--- a/profiles/audio/avdtp.c
+++ b/profiles/audio/avdtp.c
@@ -3203,6 +3203,10 @@ gboolean avdtp_stream_has_capabilities(struct avdtp_stream *stream,
 	return TRUE;
 }
 
+gboolean avdtp_stream_has_delay_reporting(struct avdtp_stream *stream) {
+	return stream->delay_reporting;
+}
+
 struct avdtp_remote_sep *avdtp_stream_get_remote_sep(
 						struct avdtp_stream *stream)
 {
diff --git a/profiles/audio/avdtp.h b/profiles/audio/avdtp.h
index 102a260..500b814 100644
--- a/profiles/audio/avdtp.h
+++ b/profiles/audio/avdtp.h
@@ -252,6 +252,7 @@ struct avdtp_service_capability *avdtp_stream_get_codec(
 						struct avdtp_stream *stream);
 gboolean avdtp_stream_has_capabilities(struct avdtp_stream *stream,
 					GSList *caps);
+gboolean avdtp_stream_has_delay_reporting(struct avdtp_stream *stream);
 struct avdtp_remote_sep *avdtp_stream_get_remote_sep(
 						struct avdtp_stream *stream);
 
diff --git a/profiles/audio/transport.c b/profiles/audio/transport.c
index 6b63652..68192ba 100644
--- a/profiles/audio/transport.c
+++ b/profiles/audio/transport.c
@@ -379,13 +379,22 @@ static gboolean media_transport_set_fd(struct media_transport *transport,
 	return TRUE;
 }
 
+static void *transport_a2dp_get_stream(struct media_transport *transport)
+{
+	struct a2dp_sep *sep = media_endpoint_get_sep(transport->endpoint);
+
+	if (!sep)
+		return NULL;
+
+	return a2dp_sep_get_stream(sep);
+}
+
 static void a2dp_resume_complete(struct avdtp *session, int err,
 							void *user_data)
 {
 	struct media_owner *owner = user_data;
 	struct media_request *req = owner->pending;
 	struct media_transport *transport = owner->transport;
-	struct a2dp_sep *sep = media_endpoint_get_sep(transport->endpoint);
 	struct avdtp_stream *stream;
 	int fd;
 	uint16_t imtu, omtu;
@@ -396,7 +405,7 @@ static void a2dp_resume_complete(struct avdtp *session, int err,
 	if (err)
 		goto fail;
 
-	stream = a2dp_sep_get_stream(sep);
+	stream = transport_a2dp_get_stream(transport);
 	if (stream == NULL)
 		goto fail;
 
@@ -854,9 +863,13 @@ static gboolean delay_reporting_exists(const GDBusPropertyTable *property,
 							void *data)
 {
 	struct media_transport *transport = data;
-	struct a2dp_transport *a2dp = transport->data;
+	struct avdtp_stream *stream;
+
+	stream = media_transport_get_stream(transport);
+	if (stream == NULL)
+		return FALSE;
 
-	return a2dp->delay != 0;
+	return avdtp_stream_has_delay_reporting(stream);
 }
 
 static gboolean get_delay_reporting(const GDBusPropertyTable *property,
@@ -2055,9 +2068,9 @@ static void *transport_asha_init(struct media_transport *transport, void *data)
 #define A2DP_OPS(_uuid, _init, _set_volume, _destroy) \
 	TRANSPORT_OPS(_uuid, transport_a2dp_properties, NULL, NULL, _init, \
 			transport_a2dp_resume, transport_a2dp_suspend, \
-			transport_a2dp_cancel, NULL, NULL, \
-			transport_a2dp_get_volume, _set_volume, \
-			_destroy)
+			transport_a2dp_cancel, NULL, \
+			transport_a2dp_get_stream, transport_a2dp_get_volume, \
+			_set_volume, _destroy)
 
 #define BAP_OPS(_uuid, _props, _set_owner, _remove_owner) \
 	TRANSPORT_OPS(_uuid, _props, _set_owner, _remove_owner,\