mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-15 00:44:19 +09:00
Added fallback for libusb < 1.0.19
we use stream_id functions which were introduced with 1.0.19
This commit is contained in:
@@ -58,6 +58,10 @@
|
||||
_dev->iface.get_##_arg = udev_get_##_arg; \
|
||||
_dev->iface.set_##_arg = udev_set_##_arg
|
||||
|
||||
#if LIBUSB_API_VERSION >= 0x01000103
|
||||
#define HAVE_STREAM_ID_API 1
|
||||
#endif
|
||||
|
||||
typedef struct _ASYNC_TRANSFER_USER_DATA ASYNC_TRANSFER_USER_DATA;
|
||||
|
||||
struct _ASYNC_TRANSFER_USER_DATA
|
||||
@@ -72,6 +76,9 @@ struct _ASYNC_TRANSFER_USER_DATA
|
||||
URBDRC_CHANNEL_CALLBACK* callback;
|
||||
t_isoch_transfer_cb cb;
|
||||
wHashTable* queue;
|
||||
#if !defined(HAVE_STREAM_ID_API)
|
||||
UINT32 streamID;
|
||||
#endif
|
||||
};
|
||||
|
||||
static ASYNC_TRANSFER_USER_DATA* async_transfer_user_data_new(IUDEVICE* idev, UINT32 MessageId,
|
||||
@@ -119,7 +126,11 @@ static void async_transfer_user_data_free(ASYNC_TRANSFER_USER_DATA* user_data)
|
||||
static void func_iso_callback(struct libusb_transfer* transfer)
|
||||
{
|
||||
ASYNC_TRANSFER_USER_DATA* user_data = (ASYNC_TRANSFER_USER_DATA*)transfer->user_data;
|
||||
#if defined(HAVE_STREAM_ID_API)
|
||||
const UINT32 streamID = libusb_transfer_get_stream_id(transfer);
|
||||
#else
|
||||
const UINT32 streamID = user_data->streamID;
|
||||
#endif
|
||||
|
||||
switch (transfer->status)
|
||||
{
|
||||
@@ -225,7 +236,11 @@ static void func_bulk_transfer_cb(struct libusb_transfer* transfer)
|
||||
return;
|
||||
}
|
||||
|
||||
#if defined(HAVE_STREAM_ID_API)
|
||||
streamID = libusb_transfer_get_stream_id(transfer);
|
||||
#else
|
||||
streamID = user_data->streamID;
|
||||
#endif
|
||||
|
||||
if (HashTable_Contains(user_data->queue, (void*)(size_t)streamID))
|
||||
{
|
||||
@@ -1091,7 +1106,11 @@ static int libusb_udev_isoch_transfer(IUDEVICE* idev, URBDRC_CHANNEL_CALLBACK* c
|
||||
libusb_fill_iso_transfer(iso_transfer, pdev->libusb_handle, EndpointAddress,
|
||||
Stream_Pointer(user_data->data), BufferSize, NumberOfPackets,
|
||||
func_iso_callback, user_data, Timeout);
|
||||
#if defined(HAVE_STREAM_ID_API)
|
||||
libusb_transfer_set_stream_id(iso_transfer, streamID);
|
||||
#else
|
||||
user_data->streamID = streamID;
|
||||
#endif
|
||||
libusb_set_iso_packet_lengths(iso_transfer, iso_packet_size);
|
||||
HashTable_Add(pdev->request_queue, (void*)(size_t)streamID, iso_transfer);
|
||||
return libusb_submit_transfer(iso_transfer);
|
||||
@@ -1199,7 +1218,11 @@ static int libusb_udev_bulk_or_interrupt_transfer(IUDEVICE* idev, URBDRC_CHANNEL
|
||||
return -1;
|
||||
}
|
||||
|
||||
#if defined(HAVE_STREAM_ID_API)
|
||||
libusb_transfer_set_stream_id(transfer, streamID);
|
||||
#else
|
||||
user_data->streamID = streamID;
|
||||
#endif
|
||||
HashTable_Add(pdev->request_queue, (void*)(size_t)streamID, transfer);
|
||||
return libusb_submit_transfer(transfer);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user