hotplug: Improve internal structure and deregistration mechanism
authorChris Dickens <christopher.a.dickens@gmail.com>
Thu, 28 Dec 2017 07:30:16 +0000 (23:30 -0800)
committerChris Dickens <christopher.a.dickens@gmail.com>
Thu, 28 Dec 2017 07:30:16 +0000 (23:30 -0800)
commit3dca96210446240af01612e77bedd5e16a65708c
tree8a01a5f0bfaf894a90095ec5412d93407bc77424
parent539a3230cff8aa3430d4948d377d2a9224302197
hotplug: Improve internal structure and deregistration mechanism

This commit shrinks the size of the internal hotplug callback structure
by removing unused fields, using the correctly sized types for matching
fields, and adding a new flags field whose bits control how the callback
structure should behave.

The hotplug callback handle ID counter has also been moved to the
context structure instead of being a global variable shared amongst all
contexts. This lets each context independently manage handle IDs and use
the maximum range of possible IDs.

Finally, the hotplug callback deregistration mechanism has been improved
to signal to the event handler that an explicit deregistration needs to
be handled. This removes the need to send a dummy hotplug message, which
was using an invalid libusb_hotplug_event value anyway that was causing
some compilers to complain.

Closes #373

Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
libusb/core.c
libusb/hotplug.c
libusb/hotplug.h
libusb/io.c
libusb/libusbi.h
libusb/version_nano.h