c119: concurrency handling: - use semaphore in init/exit (Orin Eman) - use separate thread for timer and remove the need for affinity restoration - minor code readability improvements (moved GUIDs to .h)
c120: removed unneeded disabling of APIs in winusb_exit & hid_exit
c121: changed CreateThread to _beginthreadex, so CRT works properly when mem is low (Michael Plante)
c122: made name of named-semaphore unique across the system per-process (Michael Plante)
c123: allow timer thread to quit gracefully, and cleanup many of the handles (Michael Plante)
c124: fixed concurrent_usage if init fails (Michael Plante)
c125: drop PulseEvent in timer thread and use semaphore for response (Orin Eman).
c126: removed pthread dependency in windows_compat.c
c127: fixed missing reset of timer_request when event has already been handled
c128: additional fixes for timer thread: - closed timer_mutex handles, and fixed volatile warning regarding interlocked ops (Michael Plante) - missing ResetEvent and possible missing request handling fix (Orin Eman) - additional fixes
c129: use of spinlocks and critical sections in windows_compat.c for mutexes (Orin Eman, Michael Plante)
c130: fixed missing spinlock in exit_polling
c131: made spinlock static, changed to LONG, and casted off volatile in InterlockedExchange calls (Michael Plante)
c132: additional security checks when entering critical sections in windows_compat.c
c133: brought latest master commits to the concurrency branch [r119 -> r122]
c134: fixed unfortunate inverted comparison introduced in c132
c135: fixed timer thread warnings with MinGW
c136: brought latest master commits to the concurrency branch [r123 -> r126]
c137: removed pthread.h and sched.h includes from windows_usb.c
- get_interface_details() now has an optional SP_DEVINFO_DATA parameter
- usbi_handle_transfer_cancellation() now called from windows_cancel_transfer()
- set_report/get_report (WIP) and improved HID support functions
- better support for sync I/O in hid_submit_control_transfer
- hid_abort_transfers
- apply the same trick as usbi_handle_disconnect() to handle_timeouts(), so that usbi_handle_transfer_cancellation() can now be called from the backend without locking after a timeout.
- remove the unneeded handle_timeouts_locked()
- added composite HID device support in xusb.c
- fixed signed/unsigned bug in windows_compat.c (Orin Eman)
- added support for synchronous completion of async requests
- composite HID device support (ClassGUID fallback for driver unavail., read interface number from MI_##, extra path for HID)
- generic interface_by_endpoint and get_valid_interface
- added HID struct in priv
- HID submit_control_transfer