diff --git a/libfwupdplugin/fu-srec-firmware.c b/libfwupdplugin/fu-srec-firmware.c index 63f20da3e..a9c5d95ab 100644 --- a/libfwupdplugin/fu-srec-firmware.c +++ b/libfwupdplugin/fu-srec-firmware.c @@ -82,6 +82,37 @@ fu_srec_firmware_record_new (guint ln, FuFirmareSrecRecordKind kind, guint32 add return rcd; } +static FuSrecFirmwareRecord * +fu_srec_firmware_record_dup (const FuSrecFirmwareRecord *rcd) +{ + FuSrecFirmwareRecord *dest; + g_return_val_if_fail (rcd != NULL, NULL); + dest = fu_srec_firmware_record_new (rcd->ln, rcd->kind, rcd->addr); + dest->buf = g_byte_array_ref (rcd->buf); + return dest; +} + +/** + * fu_srec_firmware_record_get_type: + * + * Gets a specific type. + * + * Return value: a #GType + * + * Since: 1.6.1 + **/ +GType +fu_srec_firmware_record_get_type (void) +{ + static GType type_id = 0; + if (!type_id) { + type_id = g_boxed_type_register_static ("FuSrecFirmwareRecord", + (GBoxedCopyFunc) fu_srec_firmware_record_dup, + (GBoxedFreeFunc) fu_srec_firmware_record_free); + } + return type_id; +} + static gboolean fu_srec_firmware_tokenize (FuFirmware *firmware, GBytes *fw, FwupdInstallFlags flags, GError **error) diff --git a/libfwupdplugin/fu-srec-firmware.h b/libfwupdplugin/fu-srec-firmware.h index cb98d74da..08a3303e6 100644 --- a/libfwupdplugin/fu-srec-firmware.h +++ b/libfwupdplugin/fu-srec-firmware.h @@ -9,6 +9,7 @@ #include "fu-firmware.h" #define FU_TYPE_SREC_FIRMWARE (fu_srec_firmware_get_type ()) +#define FU_TYPE_SREC_FIRMWARE_RECORD (fu_srec_firmware_record_get_type ()) G_DECLARE_DERIVABLE_TYPE (FuSrecFirmware, fu_srec_firmware, FU, SREC_FIRMWARE, FuFirmware) struct _FuSrecFirmwareClass @@ -42,6 +43,7 @@ typedef struct { FuFirmware *fu_srec_firmware_new (void); GPtrArray *fu_srec_firmware_get_records (FuSrecFirmware *self); +GType fu_srec_firmware_record_get_type (void); FuSrecFirmwareRecord *fu_srec_firmware_record_new (guint ln, FuFirmareSrecRecordKind kind, guint32 addr); diff --git a/libfwupdplugin/fwupdplugin.map b/libfwupdplugin/fwupdplugin.map index a7e1b137a..2efcfa769 100644 --- a/libfwupdplugin/fwupdplugin.map +++ b/libfwupdplugin/fwupdplugin.map @@ -794,6 +794,7 @@ LIBFWUPDPLUGIN_1.6.0 { LIBFWUPDPLUGIN_1.6.1 { global: + fu_srec_firmware_record_get_type; fu_version_string; local: *; } LIBFWUPDPLUGIN_1.6.0; diff --git a/libfwupdplugin/meson.build b/libfwupdplugin/meson.build index d59861704..4a0e760d5 100644 --- a/libfwupdplugin/meson.build +++ b/libfwupdplugin/meson.build @@ -232,6 +232,7 @@ if get_option('introspection') and get_option('gusb') '@INPUT@', '@OUTPUT@', '--override', 'fu_chunk_get_type', '1.5.6', + '--override', 'fu_srec_firmware_record_get_type', '1.6.1', ], )