From 2aade568ce77a0f60715ce59fcbc223161be175f Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Wed, 6 Nov 2024 10:41:48 -0500 Subject: [PATCH] source: Fix transitioning to BTD_SERVICE_STATE_DISCONNECTED on idle If the stream transition to AVDTP_STATE_IDLE it means the stream has been disconnected, not the session, therefore btd_service_disconnecting_complete shall not be called otherwise it may trigger the policy plugin to disconnect AVRCP in cases like codec reconfiguration. --- profiles/audio/source.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/profiles/audio/source.c b/profiles/audio/source.c index db777e86d..885e218bf 100644 --- a/profiles/audio/source.c +++ b/profiles/audio/source.c @@ -107,6 +107,7 @@ static void avdtp_state_callback(struct btd_device *dev, struct avdtp *session, switch (new_state) { case AVDTP_SESSION_STATE_DISCONNECTED: source_set_state(source, SOURCE_STATE_DISCONNECTED); + btd_service_disconnecting_complete(source->service, 0); break; case AVDTP_SESSION_STATE_CONNECTING: source_set_state(source, SOURCE_STATE_CONNECTING); @@ -132,8 +133,6 @@ static void stream_state_changed(struct avdtp_stream *stream, switch (new_state) { case AVDTP_STATE_IDLE: - btd_service_disconnecting_complete(source->service, 0); - if (source->connect_id > 0) { a2dp_cancel(source->connect_id); source->connect_id = 0; -- 2.47.3