diff options
author | Richard Hughes <richard@hughsie.com> | 2015-01-05 15:55:27 +0000 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2015-01-05 15:55:27 +0000 |
commit | 57b4a061eb31e35bfa69bb3b8f538c483451d940 (patch) | |
tree | fb619814cefa5cfd658454d685bc64cec0318859 /gusb/gusb-device.c | |
parent | 8223c11a04b5e54761c7142690fb8c766293f3f1 (diff) | |
download | gusb-57b4a061eb31e35bfa69bb3b8f538c483451d940.tar.gz |
Add g_usb_device_get_parent()
This allows us to create something more than a flat list of devices.
Diffstat (limited to 'gusb/gusb-device.c')
-rw-r--r-- | gusb/gusb-device.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/gusb/gusb-device.c b/gusb/gusb-device.c index 45e2623..2a1474d 100644 --- a/gusb/gusb-device.c +++ b/gusb/gusb-device.c @@ -70,6 +70,28 @@ G_DEFINE_TYPE_WITH_CODE (GUsbDevice, g_usb_device, G_TYPE_OBJECT, g_usb_device_initable_iface_init)) /** + * g_usb_device_get_parent: + * @device: a #GUsbDevice instance + * + * Gets the device parent if one exists. + * + * Return value: (transfer full): #GUsbDevice or %NULL + **/ +GUsbDevice * +g_usb_device_get_parent (GUsbDevice *device) +{ + GUsbDevicePrivate *priv = device->priv; + libusb_device *parent; + parent = libusb_get_parent (priv->device); + if (parent == NULL) + return NULL; + return g_usb_context_find_by_bus_address (priv->context, + libusb_get_bus_number (parent), + libusb_get_device_address (parent), + NULL); +} + +/** * g_usb_device_error_quark: * * Return value: Our personal error quark. |