diff --git a/src/fu-udev-device.c b/src/fu-udev-device.c index 7866e004c..7bd29250c 100644 --- a/src/fu-udev-device.c +++ b/src/fu-udev-device.c @@ -86,6 +86,7 @@ fu_udev_device_read_uint16 (const gchar *str) static gboolean fu_udev_device_probe (FuDevice *device, GError **error) { + FuUdevDeviceClass *klass = FU_UDEV_DEVICE_GET_CLASS (device); FuUdevDevice *self = FU_UDEV_DEVICE (device); FuUdevDevicePrivate *priv = GET_PRIVATE (self); const gchar *tmp; @@ -163,6 +164,12 @@ fu_udev_device_probe (FuDevice *device, GError **error) fu_device_add_guid (device, devid); } + /* subclassed */ + if (klass->probe != NULL) { + if (!klass->probe (self, error)) + return FALSE; + } + /* success */ return TRUE; } diff --git a/src/fu-udev-device.h b/src/fu-udev-device.h index acd792c76..fccec5577 100644 --- a/src/fu-udev-device.h +++ b/src/fu-udev-device.h @@ -20,6 +20,8 @@ G_DECLARE_DERIVABLE_TYPE (FuUdevDevice, fu_udev_device, FU, UDEV_DEVICE, FuDevic struct _FuUdevDeviceClass { FuDeviceClass parent_class; + gboolean (*probe) (FuUdevDevice *device, + GError **error); gpointer __reserved[31]; };