diff options
author | gudenau <gudenaua@gmail.com> | 2018-01-21 21:21:46 -0600 |
---|---|---|
committer | Chris Dickens <christopher.a.dickens@gmail.com> | 2020-01-13 13:19:44 -0800 |
commit | 19e763e135f8ac6cd6206f3f800d2ad40ad72a54 (patch) | |
tree | 92d8013b1c907506bbe4956e5b77fd4a2994bfab /libusb/hotplug.c | |
parent | 25855c083bc8989c5a8bab981fcfe4e1a9f9ec07 (diff) | |
download | libusb-19e763e135f8ac6cd6206f3f800d2ad40ad72a54.tar.gz |
hotplug: Added libusb_hotplug_get_user_data()
Closes #380
[dickens] Fixed up API version in doxygen, whitespace issues, function
visibility annotation (can't use API_EXPORTED for pointer values) and
added new function to libusb-1.0.defs
Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
Diffstat (limited to 'libusb/hotplug.c')
-rw-r--r-- | libusb/hotplug.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/libusb/hotplug.c b/libusb/hotplug.c index a4320bc..3ccdc2f 100644 --- a/libusb/hotplug.c +++ b/libusb/hotplug.c @@ -356,6 +356,33 @@ void API_EXPORTED libusb_hotplug_deregister_callback(struct libusb_context *ctx, } } +DEFAULT_VISIBILITY +void * LIBUSB_CALL libusb_hotplug_get_user_data(struct libusb_context *ctx, + libusb_hotplug_callback_handle callback_handle) +{ + struct libusb_hotplug_callback *hotplug_cb; + void *user_data = NULL; + + /* check for hotplug support */ + if (!libusb_has_capability(LIBUSB_CAP_HAS_HOTPLUG)) { + return NULL; + } + + USBI_GET_CONTEXT(ctx); + + usbi_dbg("get hotplug user data %d", callback_handle); + + usbi_mutex_lock(&ctx->hotplug_cbs_lock); + list_for_each_entry(hotplug_cb, &ctx->hotplug_cbs, list, struct libusb_hotplug_callback) { + if (callback_handle == hotplug_cb->handle) { + user_data = hotplug_cb->user_data; + } + } + usbi_mutex_unlock(&ctx->hotplug_cbs_lock); + + return user_data; +} + void usbi_hotplug_deregister(struct libusb_context *ctx, int forced) { struct libusb_hotplug_callback *hotplug_cb, *next; |