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.
This commit is contained in:
Pauli Virtanen 2023-03-14 22:06:40 +02:00 committed by P V
parent 63118b130e
commit b69f3fc19e

View file

@ -231,7 +231,9 @@ static int ofono_audio_acquire(void *data, bool optional)
ts.tv_nsec = 1; ts.tv_nsec = 1;
spa_loop_utils_update_timer(backend->loop_utils, backend->timer, spa_loop_utils_update_timer(backend->loop_utils, backend->timer,
&ts, NULL, false); &ts, NULL, false);
return -EIO;
ret = -EIO;
goto finish;
} }
td->broken = false; td->broken = false;
@ -243,6 +245,11 @@ static int ofono_audio_acquire(void *data, bool optional)
ret = 0; ret = 0;
finish: 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; return ret;
} }
@ -254,6 +261,8 @@ static int ofono_audio_release(void *data)
spa_log_debug(backend->log, "transport %p: Release %s", spa_log_debug(backend->log, "transport %p: Release %s",
transport, transport->path); transport, transport->path);
spa_bt_transport_set_state(transport, SPA_BT_TRANSPORT_STATE_IDLE);
if (transport->sco_io) { if (transport->sco_io) {
spa_bt_sco_io_destroy(transport->sco_io); spa_bt_sco_io_destroy(transport->sco_io);
transport->sco_io = NULL; transport->sco_io = NULL;