static void async_transfer_user_data_free(ASYNC_TRANSFER_USER_DATA* user_data)
{
-
if (user_data)
{
Stream_Free(user_data->data, TRUE);
{
ASYNC_TRANSFER_USER_DATA* user_data = (ASYNC_TRANSFER_USER_DATA*)transfer->user_data;
const UINT32 streamID = stream_id_from_buffer(transfer);
+ wArrayList* list = user_data->queue;
- ArrayList_Lock(user_data->queue);
+ ArrayList_Lock(list);
switch (transfer->status)
{
case LIBUSB_TRANSFER_COMPLETED:
const UINT32 InterfaceId =
((STREAM_ID_PROXY << 30) | user_data->idev->get_ReqCompletion(user_data->idev));
- if (list_contains(user_data->queue, streamID))
+ if (list_contains(list, streamID))
{
if (!user_data->noack)
{
user_data->OutputBufferSize);
user_data->data = NULL;
}
- ArrayList_Remove(user_data->queue, transfer);
+ ArrayList_Remove(list, transfer);
}
}
break;
default:
break;
}
- ArrayList_Unlock(user_data->queue);
+ ArrayList_Unlock(list);
}
static const LIBUSB_ENDPOINT_DESCEIPTOR* func_get_ep_desc(LIBUSB_CONFIG_DESCRIPTOR* LibusbConfig,
{
ASYNC_TRANSFER_USER_DATA* user_data;
uint32_t streamID;
+ wArrayList* list;
user_data = (ASYNC_TRANSFER_USER_DATA*)transfer->user_data;
if (!user_data)
WLog_ERR(TAG, "[%s]: Invalid transfer->user_data!");
return;
}
- ArrayList_Lock(user_data->queue);
+ list = user_data->queue;
+ ArrayList_Lock(list);
streamID = stream_id_from_buffer(transfer);
- if (list_contains(user_data->queue, streamID))
+ if (list_contains(list, streamID))
{
const UINT32 InterfaceId =
((STREAM_ID_PROXY << 30) | user_data->idev->get_ReqCompletion(user_data->idev));
transfer->status, user_data->StartFrame, user_data->ErrorCount,
transfer->actual_length);
user_data->data = NULL;
- ArrayList_Remove(user_data->queue, transfer);
+ ArrayList_Remove(list, transfer);
}
- ArrayList_Unlock(user_data->queue);
+ ArrayList_Unlock(list);
}
static BOOL func_set_usbd_status(URBDRC_PLUGIN* urbdrc, UDEVICE* pdev, UINT32* status,
user_data = (ASYNC_TRANSFER_USER_DATA*)transfer->user_data;
async_transfer_user_data_free(user_data);
+ transfer->user_data = NULL;
}
static IUDEVICE* udev_init(URBDRC_PLUGIN* urbdrc, libusb_context* context, LIBUSB_DEVICE* device,