summaryrefslogtreecommitdiff
path: root/gusb
Commit message (Collapse)AuthorAgeFilesLines
* Fix hotplug after threaded device removalRichard Hughes2021-12-071-1/+1
| | | | Somehow this worked when we unref'd the context but did not ref it.
* Fix version script check for GNU BFD linker on FreeBSDTing-Wei Lan2021-10-102-2/+10
| | | | | | | | | | | | | | | | | | On FreeBSD, symbols 'environ' and ' __progname' are defined in crt1.o and referenced by libc.so. This makes it different from platforms which define 'environ' in libc.so. GNU BFD linker fails to link an executable if these two symbols are not put into the global section of the version script because a shared library should not reference a local symbol defined in a different object file. GNU gold and LLVM LLD don't have the problem. This means the current check for --version-script fails on FreeBSD when GNU BFD linker is used. The failure can be avoided by linking a shared library instead of an executable, but meson doesn't support passing additional arguments to the compiler in its 'has_link_argument' method. Instead of adding these two unused symbols to the real version script, use a smaller version script specifically made for the test.
* Don't hard-code the list of OS supporting --version-scriptTing-Wei Lan2021-10-101-2/+3
| | | | | Instead of keeping a list of OS in the build file, it should be better to run a check to determine if it is supported by the linker.
* context: Fix hotplug handling and signal emission during enumerateBenjamin Berg2021-10-051-50/+56
| | | | | | | | | | | | | | | | | | | | | | Initial device enumeration may happen in a random order. This causes issues if someone calls g_usb_device_get_parent from the "device-added" signal handler. The problem is. that this will cause an infinite recursion as GUsb tries to enumerate again, which results in the device to be added. Also, the order of devices is random and resolving the parent requires the full list of devices. As such, we should delay emission until the internal array has been filled. To fix this, emit the signals from g_usb_context_enumerate. Also, while changing this, it became obvious that libusb hotplug callback is updating priv->devices from the libusb thread, only pushing it to an idle handler when the signal is emitted. Doing this is unsafe if hotplug events arrive during enumeration. Push libusb event into the mainloop immediately in order to process it. Doing means that any libusb hotplug events arriving during g_usb_context_enumerate will be handled after the function has returned. Making all possible corner cases behave correctly.
* Add g_usb_device_get_string_descriptor_bytes_fullmasterRicardo Cañuelo2021-09-303-15/+57
| | | | | | | Some devices won't answer to a request with a 128-byte data buffer, this allows the user to specify the size of the request data buffer. g_usb_device_get_string_descriptor_bytes still uses the default buffer size (128 bytes).
* trivial: Fix a warning when used in a subprojectRichard Hughes2021-05-221-2/+1
| | | | | | | Fixes: DEPRECATION: Library was passed to the libraries keyword argument of a previous call to generate() method instead of first positional argument.
* Require *any* python3 to fix FreeBSD buildRichard Hughes2021-05-211-1/+1
|
* Do not depend on libusb_get_port_number() to fix DragonFlyBSD compileRichard Hughes2021-05-211-1/+10
|
* Do not depend on libusb_get_parent() to fix FreeBSD compileRichard Hughes2021-05-211-0/+9
|
* Lower the libusb dep to fix compile on FreeBSDRichard Hughes2021-05-211-3/+18
| | | | | | | | | | | FreeBSD is not a supported platform of libusb. The native USB access library on FreeBSD is libusb20, which provides both the non-portable FreeBSD-specific API and wrapper functions that are mostly compatible eith libusb 1.0 API. It is an integral part of FreeBSD and the version included in the oldest supported FreeBSD release reports 1.0.9 in its libusb-1.0.pc. Based on a patch by Ting-Wei Lan <lantw@src.gnome.org>, many thanks.
* Do not run the tests on FreeBSDRichard Hughes2021-05-211-0/+10
| | | | | | Root hubs on FreeBSD have vid and pid set to zero. Based on a patch by Ting-Wei Lan <lantw@src.gnome.org>
* device: Reference the libusb device when setMarco Trevisan (Treviño)2021-04-131-3/+13
| | | | | | | | | We used to reference a device during the initable init vfunc, however it's better to do it when the device is actually set as an object property. In this way, the device is always unreffed when the object is disposed, without having to care about the ordering.
* device: Do not double-reference USB devicesMarco Trevisan (Treviño)2021-04-131-2/+0
| | | | | | | | | | | Currently gusb-device adds two references to an internal libusb device, causing a memory leak on destruction. In fact, we add a reference when the device is constructed and when the device is inited. To avoid this and ensure that libusb will cleanup all the devices on context destruction, only reference on device initialization.
* Add g_usb_device_get_string_descriptor_bytes()Richard Hughes2021-01-273-0/+62
| | | | This is requried for the GD32VF103 device.
* trivial: Include string.h for memcpy()Richard Hughes2020-12-141-0/+2
|
* device: Fix cancellation if cancellable is already cancelledBenjamin Berg2020-10-011-27/+42
| | | | | | | | | | | libusb can only handle cancellation if the transfer is already in-flight. However, g_cancellable_connect will immediately call the callback and then libusb_cancel_transfer when the cancellable is already cancelled at the time the transfer is submitted. Move the cancellation registration to after transfer submission to avoid ordering issues. Also avoid even submitting the transfer if the cancellable is already cancelled to begin with.
* trivial: Fix up typos spotted by codespellRichard Hughes2020-09-243-8/+8
|
* Properly set dylib versions on darwinCaleb Xu2020-08-031-0/+1
|
* Add a way to get iConfigurationBenson Leung2020-07-293-0/+37
| | | | | Adds a getter for a gusb_device to get the string index for the active configuration's description.
* Allow building GtkDoc when building as a subprojectRichard Hughes2020-06-241-0/+3
| | | | Fixes https://github.com/fwupd/fwupd/issues/2178
* generate-version-script: Don't hard-code the path of python3Ting-Wei Lan2020-03-241-0/+4
| | | | | | Python can be installed in different directories on different operating systems, so we can't hard-code the path of it. Instead, use meson to find it to avoid 'no such file or directory' error on the bad path.
* build: version-script should be supported everywhere except on darwin systemLaurent Bigonville2020-03-181-1/+1
| | | | Fixes: #34
* generate-version-script: Don't skip methods on plain structsSimon McVittie2020-03-041-0/+1
| | | | | | | This resulted in losing g_usb_source_set_callback@LIBGUSB_0.1.0 from the ABI in version 0.3.4. Signed-off-by: Simon McVittie <smcv@debian.org>
* Validate the exported symbol list during checkRichard Hughes2020-02-202-12/+92
| | | | | This is the same script used by fwupd, and would have caught both recent issues with the exported symbol versions being incorrect.
* trivial: Add some missing 'Since: ' valuesRichard Hughes2020-02-202-0/+14
|
* trivial: Fix the gtk-doc markup in GUsbEndpointRichard Hughes2020-02-201-5/+5
|
* Include the USB bus in the generated platform_idRichard Hughes2020-02-141-11/+6
| | | | | | | | | | | The existing logic here was unsound; the recursion only checked the string for length 0 after it had gone up the tree to the parent, and so would never match. This meant if you had identical devices with the same port hierarchy on different USB busses they had the *same* physical ID. This really upsets projects like fwupd which use the physical ID to stay the same on device replug (which worked fine), but also dedupe devices with the same physical ID, which is what broke here.
* trivial: Add exported symbol g_usb_version_string in the right placeRichard Hughes2020-02-111-0/+1
| | | | Fixes the last point in https://github.com/hughsie/libgusb/issues/27
* trivial: add missing symbols to ver fileEmmanuel Pacaud2020-02-111-0/+4
|
* trivial: typo fixEmmanuel Pacaud2020-02-111-1/+1
|
* trivial: Define a G_USB_DEVICE_CLAIM_INTERFACE_NONE rather than using '0'Richard Hughes2020-01-211-0/+1
|
* trivial: Use spaces and tabs consistentlyRichard Hughes2020-01-217-263/+263
|
* Wrap the upstream libusb_strerror()Richard Hughes2020-01-212-39/+2
| | | | We depend on a libusb to always define this.
* trivial: Remove useless gtk-doc comment sectionsRichard Hughes2020-01-211-6/+0
|
* Use '#pragma once' to reduce boilerplateRichard Hughes2020-01-2115-62/+15
|
* trivial: Use SPDX-License-Identifier tagsRichard Hughes2020-01-2124-344/+24
|
* trivial: Fix the copyright statements for GUsbEndpointRichard Hughes2020-01-215-3/+5
|
* trivial: Fix include dir for exported headerRichard Hughes2020-01-211-1/+1
|
* Add a thin glib wrapper around libusb_endpoint_descriptorEmmanuel Pacaud2020-01-208-0/+368
|
* Fix high number of wakeups when checking the GUsbContextRichard Hughes2020-01-201-2/+2
| | | | | | | | | | | In 985b9e4ec39ac521e7398a8e3017c96f2c4d75ec I mistakenly thought this was the timeout for the added/removed context checking, which was Windows-specific. It actually was the main context event thread, which is running all the time. Switch the poll timeout to be 2s, (still down from the default 60s!) which is a better compromise between battery life and context shutdown performance. Fixes https://github.com/hughsie/libgusb/issues/24
* Fix compilation on macOSRichard Hughes2019-12-041-1/+4
| | | | Fixes https://github.com/hughsie/libgusb/issues/11
* trivial: Create static and shared libraries where requiredRichard Hughes2019-12-031-1/+1
|
* Use a 1ms timeout in the Windows event threadRichard Hughes2019-12-031-1/+5
| | | | | This avoids blocking for multiple seconds when trying to destroy the context, which could happen quite a few times in the self tests.
* Do not use deprecated libusb APIRichard Hughes2019-12-031-0/+8
|
* trivial: Allow compiling as a subprojectRichard Hughes2019-11-231-0/+9
|
* Add g_usb_device_get_spec()Richard Hughes2019-11-153-0/+25
| | | | Sometimes we do care about the USB version number of the device.
* trivial: Don't use brackets for G_USB_x_VERSIONRichard Hughes2019-11-151-3/+3
| | | | This allows us to join them as strings if required.
* trivial: Remove untrue statementRichard Hughes2019-11-151-1/+0
|
* gi: made actual_length introspection annotationsgrindhold2019-09-261-3/+3
| | | | | | the actual_length parameter of GUsbDevice's transfer-methods should be out parameters. otherwise the generated vala bindings will cause programs to segfault.
* trivial: Fix some typos spotted using codespellRichard Hughes2019-04-085-7/+7
|