+
+ ctx->num_transfers = 0;
+ g_free(ctx->transfers);
+}
+
+static void free_transfer(struct libusb_transfer *transfer)
+{
+ struct context *ctx = transfer->user_data;
+ unsigned int i;
+
+ g_free(transfer->buffer);
+ transfer->buffer = NULL;
+ libusb_free_transfer(transfer);
+
+ for (i = 0; i < ctx->num_transfers; i++) {
+ if (ctx->transfers[i] == transfer) {
+ ctx->transfers[i] = NULL;
+ break;
+ }
+ }
+
+ ctx->submitted_transfers--;
+ if (ctx->submitted_transfers == 0)
+ finish_acquisition(ctx);
+
+}
+
+static void resubmit_transfer(struct libusb_transfer *transfer)
+{
+ if (libusb_submit_transfer(transfer) != 0) {
+ free_transfer(transfer);
+ /* TODO: Stop session? */
+ /* TODO: Better error message. */
+ sr_err("fx2lafw: %s: libusb_submit_transfer error.", __func__);
+ }