bluez5: drop old SCO fragment data when sink starts

Any pending SCO fragment data should be cleared when sink starts, so
that we don't send out any old data.
This commit is contained in:
Pauli Virtanen 2025-06-21 16:13:57 +03:00
parent 665a27f281
commit 7fd05e7eaa
3 changed files with 7 additions and 0 deletions

View file

@ -610,6 +610,7 @@ struct spa_bt_sco_io *spa_bt_sco_io_create(struct spa_bt_transport *transport, s
void spa_bt_sco_io_destroy(struct spa_bt_sco_io *io);
void spa_bt_sco_io_set_source_cb(struct spa_bt_sco_io *io, int (*source_cb)(void *userdata, uint8_t *data, int size, uint64_t rx_time), void *userdata);
int spa_bt_sco_io_write(struct spa_bt_sco_io *io, const uint8_t *buf, size_t size);
void spa_bt_sco_io_write_start(struct spa_bt_sco_io *io);
#define SPA_BT_VOLUME_ID_RX 0
#define SPA_BT_VOLUME_ID_TX 1

View file

@ -1550,6 +1550,7 @@ static int transport_start(struct impl *this)
int res;
if ((res = spa_bt_transport_ensure_sco_io(this->transport, this->data_loop, this->data_system)) < 0)
goto fail;
spa_bt_sco_io_write_start(this->transport->sco_io);
}
if (!this->transport->iso_io && !is_asha) {

View file

@ -207,6 +207,11 @@ fail:
return res;
}
void spa_bt_sco_io_write_start(struct spa_bt_sco_io *io)
{
/* drop fragment */
io->write_size = 0;
}
struct spa_bt_sco_io *spa_bt_sco_io_create(struct spa_bt_transport *transport, struct spa_loop *data_loop,
struct spa_system *data_system, struct spa_log *log)