mirror of
https://git.proxmox.com/git/fwupd
synced 2025-07-27 06:10:00 +00:00
trivial: Add fu_device_list_get_by_platform_id()
This commit is contained in:
parent
95227a919d
commit
bb764e99a0
@ -131,6 +131,32 @@ fu_device_list_get_active (FuDeviceList *self)
|
|||||||
return devices;
|
return devices;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* fu_device_list_get_by_platform_id:
|
||||||
|
* @self: A #FuDeviceList
|
||||||
|
*
|
||||||
|
* Returns all the active devices that have been added to the device list
|
||||||
|
* that match a specific platform ID.
|
||||||
|
*
|
||||||
|
* Returns: (transfer container) (element-type FuDevice): the devices
|
||||||
|
*
|
||||||
|
* Since: 1.1.2
|
||||||
|
**/
|
||||||
|
GPtrArray *
|
||||||
|
fu_device_list_get_by_platform_id (FuDeviceList *self, const gchar *platform_id)
|
||||||
|
{
|
||||||
|
GPtrArray *devices;
|
||||||
|
g_return_val_if_fail (FU_IS_DEVICE_LIST (self), NULL);
|
||||||
|
devices = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
|
||||||
|
for (guint i = 0; i < self->devices->len; i++) {
|
||||||
|
FuDeviceItem *item = g_ptr_array_index (self->devices, i);
|
||||||
|
if (g_strcmp0 (fu_device_get_platform_id (item->device), platform_id) != 0)
|
||||||
|
continue;
|
||||||
|
g_ptr_array_add (devices, g_object_ref (item->device));
|
||||||
|
}
|
||||||
|
return devices;
|
||||||
|
}
|
||||||
|
|
||||||
static FuDeviceItem *
|
static FuDeviceItem *
|
||||||
fu_device_list_find_by_device (FuDeviceList *self, FuDevice *device)
|
fu_device_list_find_by_device (FuDeviceList *self, FuDevice *device)
|
||||||
{
|
{
|
||||||
|
@ -23,6 +23,8 @@ void fu_device_list_remove (FuDeviceList *self,
|
|||||||
FuDevice *device);
|
FuDevice *device);
|
||||||
GPtrArray *fu_device_list_get_all (FuDeviceList *self);
|
GPtrArray *fu_device_list_get_all (FuDeviceList *self);
|
||||||
GPtrArray *fu_device_list_get_active (FuDeviceList *self);
|
GPtrArray *fu_device_list_get_active (FuDeviceList *self);
|
||||||
|
GPtrArray *fu_device_list_get_by_platform_id (FuDeviceList *self,
|
||||||
|
const gchar *platform_id);
|
||||||
FuDevice *fu_device_list_get_old (FuDeviceList *self,
|
FuDevice *fu_device_list_get_old (FuDeviceList *self,
|
||||||
FuDevice *device);
|
FuDevice *device);
|
||||||
FuDevice *fu_device_list_get_by_id (FuDeviceList *self,
|
FuDevice *fu_device_list_get_by_id (FuDeviceList *self,
|
||||||
|
@ -3212,16 +3212,11 @@ fu_engine_usb_device_removed_cb (GUsbContext *ctx,
|
|||||||
g_autoptr(GPtrArray) devices = NULL;
|
g_autoptr(GPtrArray) devices = NULL;
|
||||||
|
|
||||||
/* go through each device and remove any that match */
|
/* go through each device and remove any that match */
|
||||||
devices = fu_device_list_get_all (self->device_list);
|
devices = fu_device_list_get_by_platform_id (self->device_list,
|
||||||
|
g_usb_device_get_platform_id (usb_device));
|
||||||
for (guint i = 0; i < devices->len; i++) {
|
for (guint i = 0; i < devices->len; i++) {
|
||||||
FuDevice *device = g_ptr_array_index (devices, i);
|
FuDevice *device = g_ptr_array_index (devices, i);
|
||||||
if (!FU_IS_USB_DEVICE (device))
|
fu_device_list_remove (self->device_list, device);
|
||||||
continue;
|
|
||||||
if (g_strcmp0 (fu_device_get_platform_id (device),
|
|
||||||
g_usb_device_get_platform_id (usb_device)) == 0) {
|
|
||||||
g_debug ("auto-removing FuUsbDevice");
|
|
||||||
fu_device_list_remove (self->device_list, device);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user