struct drv_context *drvc;
struct sr_usb_dev_inst *usb;
struct libusb_transfer *transfer;
- const struct libusb_pollfd **lupfd;
unsigned int i, timeout, num_transfers;
int ret;
unsigned char *buf;
size = get_buffer_size(devc);
convsize = (size / devc->num_channels + 2) * 16;
devc->submitted_transfers = 0;
- devc->usbfd = NULL;
devc->convbuffer_size = convsize;
if (!(devc->convbuffer = g_try_malloc(convsize))) {
devc->submitted_transfers++;
}
- lupfd = libusb_get_pollfds(drvc->sr_ctx->libusb_ctx);
- for (i = 0; lupfd[i]; i++);
- devc->usbfd = g_try_malloc(sizeof(struct libusb_pollfd) * (i + 1));
- if (!devc->usbfd) {
- abort_acquisition(devc);
- free(lupfd);
- return SR_ERR;
- }
- for (i = 0; lupfd[i]; i++) {
- sr_source_add(lupfd[i]->fd, lupfd[i]->events,
- timeout, receive_data, (void *)sdi);
- devc->usbfd[i] = lupfd[i]->fd;
- }
- devc->usbfd[i] = -1;
- free(lupfd);
+ devc->ctx = drvc->sr_ctx;
+
+ usb_source_add(devc->ctx, timeout, receive_data, (void *)sdi);
/* Send header packet to the session bus. */
std_session_send_df_header(cb_data, LOG_PREFIX);