Automatically clear the update error as required

This is less fragile than patching all the callers.
This commit is contained in:
Richard Hughes 2021-07-23 10:27:41 +01:00
parent 25c93aa7ca
commit 0efa97229a
4 changed files with 23 additions and 2 deletions

View File

@ -3195,6 +3195,26 @@ fu_device_sleep_with_progress (FuDevice *self, guint delay_secs)
}
}
/**
* fu_device_set_update_state:
* @self: a #FuDevice
* @update_state: the state, e.g. %FWUPD_UPDATE_STATE_PENDING
*
* Sets the update state, clearing the update error as required.
*
* Since: 1.6.2
**/
void
fu_device_set_update_state (FuDevice *self, FwupdUpdateState update_state)
{
g_return_if_fail (FU_IS_DEVICE (self));
if (update_state == FWUPD_UPDATE_STATE_SUCCESS ||
update_state == FWUPD_UPDATE_STATE_PENDING ||
update_state == FWUPD_UPDATE_STATE_NEEDS_REBOOT)
fu_device_set_update_error (self, NULL);
fwupd_device_set_update_state (FWUPD_DEVICE (self), update_state);
}
static void
fu_device_ensure_battery_inhibit (FuDevice *self)
{

View File

@ -188,7 +188,6 @@ FuDevice *fu_device_new_with_context (FuContext *ctx);
#define fu_device_set_update_message(d,v) fwupd_device_set_update_message(FWUPD_DEVICE(d),v)
#define fu_device_set_update_image(d,v) fwupd_device_set_update_image(FWUPD_DEVICE(d),v)
#define fu_device_set_update_error(d,v) fwupd_device_set_update_error(FWUPD_DEVICE(d),v)
#define fu_device_set_update_state(d,v) fwupd_device_set_update_state(FWUPD_DEVICE(d),v)
#define fu_device_add_vendor_id(d,v) fwupd_device_add_vendor_id(FWUPD_DEVICE(d),v)
#define fu_device_add_protocol(d,v) fwupd_device_add_protocol(FWUPD_DEVICE(d),v)
#define fu_device_set_version_raw(d,v) fwupd_device_set_version_raw(FWUPD_DEVICE(d),v)
@ -403,6 +402,8 @@ void fu_device_set_progress_full (FuDevice *self,
gsize progress_total);
void fu_device_sleep_with_progress (FuDevice *self,
guint delay_secs);
void fu_device_set_update_state (FuDevice *self,
FwupdUpdateState update_state);
void fu_device_set_context (FuDevice *self,
FuContext *ctx);
FuContext *fu_device_get_context (FuDevice *self);

View File

@ -839,6 +839,7 @@ LIBFWUPDPLUGIN_1.6.2 {
fu_device_remove_child;
fu_device_remove_private_flag;
fu_device_set_private_flags;
fu_device_set_update_state;
fu_device_set_vendor;
fu_efi_firmware_file_get_type;
fu_efi_firmware_file_new;

View File

@ -6393,7 +6393,6 @@ fu_engine_update_history_device (FuEngine *self, FuDevice *dev_history, GError *
fu_device_set_version (dev_history, fu_device_get_version (dev));
fu_device_remove_flag (dev_history, FWUPD_DEVICE_FLAG_NEEDS_ACTIVATION);
fu_device_set_update_state (dev_history, FWUPD_UPDATE_STATE_SUCCESS);
fu_device_set_update_error (dev_history, NULL);
return fu_history_modify_device (self->history, dev_history, error);
}