Add fu_device_locker_close()

This allows us to manually close the locker, allowing proper error handling.
This commit is contained in:
Richard Hughes 2020-03-26 19:36:36 +00:00 committed by Mario Limonciello
parent f35be1c393
commit a1882f8c4b
3 changed files with 29 additions and 0 deletions

View File

@ -63,6 +63,32 @@ fu_device_locker_init (FuDeviceLocker *self)
{ {
} }
/**
* fu_device_locker_close:
* @self: A #FuDeviceLocker
* @error: A #GError, or %NULL
*
* Closes the locker before it gets cleaned up.
*
* This function can be used to manually close a device managed by a locker,
* and allows the caller to properly handle the error.
*
* Returns: %TRUE for success
*
* Since: 1.4.0
**/
gboolean
fu_device_locker_close (FuDeviceLocker *self, GError **error)
{
g_return_val_if_fail (FU_IS_DEVICE_LOCKER (self), NULL);
if (!self->device_open)
return TRUE;
if (!self->close_func (self->device, error))
return FALSE;
self->device_open = FALSE;
return TRUE;
}
/** /**
* fu_device_locker_new: * fu_device_locker_new:
* @device: A #GObject * @device: A #GObject

View File

@ -21,3 +21,5 @@ FuDeviceLocker *fu_device_locker_new_full (gpointer device,
FuDeviceLockerFunc open_func, FuDeviceLockerFunc open_func,
FuDeviceLockerFunc close_func, FuDeviceLockerFunc close_func,
GError **error); GError **error);
gboolean fu_device_locker_close (FuDeviceLocker *self,
GError **error);

View File

@ -547,6 +547,7 @@ LIBFWUPDPLUGIN_1.4.0 {
fu_cabinet_set_jcat_context; fu_cabinet_set_jcat_context;
fu_cabinet_set_size_max; fu_cabinet_set_size_max;
fu_device_get_root; fu_device_get_root;
fu_device_locker_close;
fu_device_set_version_bootloader; fu_device_set_version_bootloader;
fu_device_set_version_format; fu_device_set_version_format;
fu_device_set_version_lowest; fu_device_set_version_lowest;