From b69f3fc19edb0b8f514b7051604f6d9e83c550b7 Mon Sep 17 00:00:00 2001 From: Pauli Virtanen Date: Tue, 14 Mar 2023 22:06:40 +0200 Subject: [PATCH] bluez5: ofono: set transport state on synchronous acquire/release The sinks/sources now expect transport state is set in acquire and release. It does not need to be async, so we still do it synchronously. --- spa/plugins/bluez5/backend-ofono.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/spa/plugins/bluez5/backend-ofono.c b/spa/plugins/bluez5/backend-ofono.c index c4d2254ee..e1d3c1a92 100644 --- a/spa/plugins/bluez5/backend-ofono.c +++ b/spa/plugins/bluez5/backend-ofono.c @@ -231,7 +231,9 @@ static int ofono_audio_acquire(void *data, bool optional) ts.tv_nsec = 1; spa_loop_utils_update_timer(backend->loop_utils, backend->timer, &ts, NULL, false); - return -EIO; + + ret = -EIO; + goto finish; } td->broken = false; @@ -243,6 +245,11 @@ static int ofono_audio_acquire(void *data, bool optional) ret = 0; finish: + if (ret < 0) + spa_bt_transport_set_state(transport, SPA_BT_TRANSPORT_STATE_ERROR); + else + spa_bt_transport_set_state(transport, SPA_BT_TRANSPORT_STATE_ACTIVE); + return ret; } @@ -254,6 +261,8 @@ static int ofono_audio_release(void *data) spa_log_debug(backend->log, "transport %p: Release %s", transport, transport->path); + spa_bt_transport_set_state(transport, SPA_BT_TRANSPORT_STATE_IDLE); + if (transport->sco_io) { spa_bt_sco_io_destroy(transport->sco_io); transport->sco_io = NULL;