mirror of
https://git.proxmox.com/git/fwupd
synced 2025-08-05 14:01:06 +00:00
Add fwupd_device_incorporate()
This allows us to copy properties from a donor object.
This commit is contained in:
parent
c43a9e9024
commit
e0cd6e0667
@ -16,6 +16,8 @@ G_BEGIN_DECLS
|
||||
|
||||
FwupdDevice *fwupd_device_from_variant (GVariant *data);
|
||||
GVariant *fwupd_device_to_variant (FwupdDevice *device);
|
||||
void fwupd_device_incorporate (FwupdDevice *self,
|
||||
FwupdDevice *donor);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@ -858,6 +858,73 @@ fwupd_device_set_modified (FwupdDevice *device, guint64 modified)
|
||||
priv->modified = modified;
|
||||
}
|
||||
|
||||
/**
|
||||
* fwupd_device_incorporate:
|
||||
* @self: A #FwupdDevice
|
||||
* @donor: Another #FwupdDevice
|
||||
*
|
||||
* Copy all properties from the donor object if they have not already been set.
|
||||
*
|
||||
* Since: 1.1.0
|
||||
**/
|
||||
void
|
||||
fwupd_device_incorporate (FwupdDevice *self, FwupdDevice *donor)
|
||||
{
|
||||
FwupdDevicePrivate *priv = GET_PRIVATE (self);
|
||||
FwupdDevicePrivate *priv_donor = GET_PRIVATE (donor);
|
||||
|
||||
if (priv->flags == 0)
|
||||
fwupd_device_add_flag (self, priv_donor->flags);
|
||||
if (priv->created == 0)
|
||||
fwupd_device_set_created (self, priv_donor->created);
|
||||
if (priv->modified == 0)
|
||||
fwupd_device_set_modified (self, priv_donor->modified);
|
||||
if (priv->flashes_left == 0)
|
||||
fwupd_device_set_flashes_left (self, priv_donor->flashes_left);
|
||||
if (priv->update_state == 0)
|
||||
fwupd_device_set_update_state (self, priv_donor->update_state);
|
||||
if (priv->description == NULL)
|
||||
fwupd_device_set_description (self, priv_donor->description);
|
||||
if (priv->id == NULL)
|
||||
fwupd_device_set_id (self, priv_donor->id);
|
||||
if (priv->parent_id == NULL)
|
||||
fwupd_device_set_parent_id (self, priv_donor->parent_id);
|
||||
if (priv->name == NULL)
|
||||
fwupd_device_set_name (self, priv_donor->name);
|
||||
if (priv->summary == NULL)
|
||||
fwupd_device_set_summary (self, priv_donor->summary);
|
||||
if (priv->vendor == NULL)
|
||||
fwupd_device_set_vendor (self, priv_donor->vendor);
|
||||
if (priv->vendor_id == NULL)
|
||||
fwupd_device_set_vendor_id (self, priv_donor->vendor_id);
|
||||
if (priv->plugin == NULL)
|
||||
fwupd_device_set_plugin (self, priv_donor->plugin);
|
||||
if (priv->update_error == NULL)
|
||||
fwupd_device_set_update_error (self, priv_donor->update_error);
|
||||
if (priv->version == NULL)
|
||||
fwupd_device_set_version (self, priv_donor->version);
|
||||
if (priv->version_lowest == NULL)
|
||||
fwupd_device_set_version_lowest (self, priv_donor->version_lowest);
|
||||
if (priv->version_bootloader == NULL)
|
||||
fwupd_device_set_version_bootloader (self, priv_donor->version_bootloader);
|
||||
for (guint i = 0; i < priv_donor->guids->len; i++) {
|
||||
const gchar *tmp = g_ptr_array_index (priv_donor->guids, i);
|
||||
fwupd_device_add_guid (self, tmp);
|
||||
}
|
||||
for (guint i = 0; i < priv_donor->icons->len; i++) {
|
||||
const gchar *tmp = g_ptr_array_index (priv_donor->icons, i);
|
||||
fwupd_device_add_icon (self, tmp);
|
||||
}
|
||||
for (guint i = 0; i < priv_donor->checksums->len; i++) {
|
||||
const gchar *tmp = g_ptr_array_index (priv_donor->checksums, i);
|
||||
fwupd_device_add_checksum (self, tmp);
|
||||
}
|
||||
for (guint i = 0; i < priv_donor->releases->len; i++) {
|
||||
FwupdRelease *tmp = g_ptr_array_index (priv_donor->releases, i);
|
||||
fwupd_device_add_release (self, tmp);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* fwupd_device_to_variant:
|
||||
* @device: A #FwupdDevice
|
||||
|
@ -252,3 +252,9 @@ LIBFWUPD_1.0.8 {
|
||||
fwupd_device_set_parent_id;
|
||||
local: *;
|
||||
} LIBFWUPD_1.0.7;
|
||||
|
||||
LIBFWUPD_1.1.0 {
|
||||
global:
|
||||
fwupd_device_incorporate;
|
||||
local: *;
|
||||
} LIBFWUPD_1.0.8;
|
||||
|
Loading…
Reference in New Issue
Block a user