Do not restrict "weak authority" option to Android libusb_wrap_sys_device() is an often needed feature on Android, but can also be very convenient on other Linux platforms. In many cases the initial device scanning is not needed and LIBUSB_OPTION_WEAK_AUTHORITY thus provides a performance enhancement. Closes #925 Signed-off-by: Tormod Volden <debian.tormod@gmail.com> Signed-off-by: Nathan Hjelm <hjelmn@google.com>
diff --git a/libusb/libusb.h b/libusb/libusb.h index a50e06d..c958113 100644 --- a/libusb/libusb.h +++ b/libusb/libusb.h
@@ -2098,14 +2098,16 @@ */ LIBUSB_OPTION_USE_USBDK = 1, - /** Set libusb has weak authority. With this option, libusb will skip - * scan devices in libusb_init. + /** Flag that libusb has weak authority. + * + * With this option set, libusb will skip scanning devices in + * libusb_init(). * * This option should be set before calling libusb_init(), otherwise - * libusb_init will failed. Normally libusb_wrap_sys_device on Android - * need set this option. + * libusb_init() might fail. The option is typically needed on Android + * and used together with libusb_wrap_sys_device(). * - * Only valid for Android builds. + * Only valid on Linux. */ LIBUSB_OPTION_WEAK_AUTHORITY = 2,
diff --git a/libusb/os/linux_usbfs.c b/libusb/os/linux_usbfs.c index 5b57993..944acdb 100644 --- a/libusb/os/linux_usbfs.c +++ b/libusb/os/linux_usbfs.c
@@ -95,10 +95,8 @@ /* how many times have we initted (and not exited) ? */ static int init_count = 0; -#ifdef __ANDROID__ /* have no authority to operate usb device directly */ static int weak_authority = 0; -#endif /* Serialize scan-devices, event-thread, and poll */ usbi_mutex_static_t linux_hotplug_lock = USBI_MUTEX_INITIALIZER; @@ -399,11 +397,9 @@ } } -#ifdef __ANDROID__ if (weak_authority) { return LIBUSB_SUCCESS; } -#endif r = LIBUSB_SUCCESS; if (init_count == 0) { @@ -427,11 +423,9 @@ { UNUSED(ctx); -#ifdef __ANDROID__ if (weak_authority) { return; } -#endif assert(init_count != 0); if (!--init_count) { @@ -445,15 +439,11 @@ UNUSED(ctx); UNUSED(ap); -#ifdef __ANDROID__ if (option == LIBUSB_OPTION_WEAK_AUTHORITY) { usbi_dbg("set libusb has weak authority"); weak_authority = 1; return LIBUSB_SUCCESS; } -#else - UNUSED(option); -#endif return LIBUSB_ERROR_NOT_SUPPORTED; }
diff --git a/libusb/version_nano.h b/libusb/version_nano.h index b5bcf19..f375044 100644 --- a/libusb/version_nano.h +++ b/libusb/version_nano.h
@@ -1 +1 @@ -#define LIBUSB_NANO 11628 +#define LIBUSB_NANO 11629