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;