-
Notifications
You must be signed in to change notification settings - Fork 396
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
hidapi/libusb: maintain in-memory cache of vendor/product strings #571
base: master
Are you sure you want to change the base?
hidapi/libusb: maintain in-memory cache of vendor/product strings #571
Conversation
The get_usb_string call is rather expensive on some USB devices, so we cache the vendor/product strings for future lookups (e.g. when hid_enumerate is invoked again later). This way, we only need to ask libusb for strings for devices we haven't seen since before we started. Signed-off-by: Steven Noonan <[email protected]> Signed-off-by: Sam Lantinga <[email protected]>
What about serial_number? Shouldn't it be cached as well? |
And the caching probably needs to be device-specific, not vid/pid-specific. I have two USB/HID devices on my table right now: both have the same vid/pid but different Manufacturer and Product Name (FW is localized for different countries). |
I also think none of it would be required when libusb/libusb#1258 is completed. |
Good point. |
Unfortunately libusb/libusb#1258 is closed without being merged, due to some API discussions. |
…e-of-vendor-pro.patch
But the idea to get is done is still alive. |
Good point. I agree with you here. In that case, do you want to close this PR as not planned? |
I don't have a strong oppinion. |
The get_usb_string call is rather expensive on some USB devices, so we cache the vendor/product strings for future lookups (e.g. when hid_enumerate is invoked again later).
This way, we only need to ask libusb for strings for devices we haven't seen since before we started.
This is an important performance improvement when frequently iterating devices using libusb.