mafpmoc: Ensure the current task SSM reference is always cleaned up

This commit is contained in:
Marco Trevisan (Treviño)
2026-06-18 15:47:34 +02:00
parent 3cbeb34d36
commit 147f3db814
+26 -22
View File
@@ -663,13 +663,15 @@ fp_init_ssm_done (FpiSsm *ssm, FpDevice *dev, GError *error)
{
FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (dev);
self->task_ssm = NULL;
if (error)
{
fp_dbg ("%d %s", error->code, error->message);
fpi_device_open_complete (dev, g_steal_pointer (&error));
return;
}
self->task_ssm = NULL;
fpi_device_open_complete (dev, NULL);
}
@@ -1365,17 +1367,18 @@ fp_enroll_ssm_done (FpiSsm *ssm, FpDevice *dev, GError *error)
FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (dev);
FpPrint *print = NULL;
self->task_ssm = NULL;
if (error)
{
fp_dbg ("enroll done fail");
fpi_device_enroll_complete (dev, NULL, error);
fpi_device_enroll_complete (dev, NULL, g_steal_pointer (&error));
return;
}
fp_dbg ("enroll completed");
fp_dbg ("enroll completed");
fpi_device_get_enroll_data (dev, &print);
fpi_device_enroll_complete (dev, g_object_ref (print), NULL);
self->task_ssm = NULL;
}
@@ -1863,6 +1866,8 @@ fp_verify_ssm_done (FpiSsm *ssm, FpDevice *dev, GError *error)
fp_dbg ("verify completed");
FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (dev);
self->task_ssm = NULL;
if (error && error->domain == FP_DEVICE_RETRY)
{
if (fpi_device_get_current_action (dev) == FPI_DEVICE_ACTION_VERIFY)
@@ -1883,7 +1888,6 @@ fp_verify_ssm_done (FpiSsm *ssm, FpDevice *dev, GError *error)
self->enroll_dupl_del_state ? self->identify_new_print : NULL, NULL);
fpi_device_identify_complete (dev, error);
}
self->task_ssm = NULL;
}
static void
@@ -1978,6 +1982,8 @@ fp_list_ssm_done (FpiSsm *ssm, FpDevice *dev, GError *error)
{
FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (dev);
self->task_ssm = NULL;
if (error)
{
fp_dbg ("list tpl fail");
@@ -1985,8 +1991,8 @@ fp_list_ssm_done (FpiSsm *ssm, FpDevice *dev, GError *error)
fpi_device_list_complete (dev, NULL, g_steal_pointer (&error));
return;
}
fpi_device_list_complete (FP_DEVICE (self), g_steal_pointer (&self->templates->list), NULL);
self->task_ssm = NULL;
}
static void
@@ -2160,15 +2166,14 @@ fp_delete_ssm_done (FpiSsm *ssm, FpDevice *dev, GError *error)
{
FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (dev);
if (error)
{
fp_dbg ("delete tpl fail");
fpi_device_delete_complete (dev, error);
return;
}
fp_dbg ("delete tpl success");
fpi_device_delete_complete (dev, NULL);
self->task_ssm = NULL;
if (error)
fp_dbg ("delete tpl fail: %s", error->message);
else
fp_dbg ("delete tpl success");
fpi_device_delete_complete (dev, g_steal_pointer (&error));
}
static void
@@ -2212,15 +2217,14 @@ fp_delete_all_ssm_done (FpiSsm *ssm, FpDevice *dev, GError *error)
{
FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (dev);
if (error)
{
fp_dbg ("delete all fail");
fpi_device_clear_storage_complete (dev, g_steal_pointer (&error));
return;
}
fp_dbg ("delete all success");
fpi_device_clear_storage_complete (dev, NULL);
self->task_ssm = NULL;
if (error)
fp_dbg ("delete all fail: %s", error->message);
else
fp_dbg ("delete all success");
fpi_device_clear_storage_complete (dev, g_steal_pointer (&error));
}
static void