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); FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (dev);
self->task_ssm = NULL;
if (error) if (error)
{ {
fp_dbg ("%d %s", error->code, error->message); fp_dbg ("%d %s", error->code, error->message);
fpi_device_open_complete (dev, g_steal_pointer (&error)); fpi_device_open_complete (dev, g_steal_pointer (&error));
return; return;
} }
self->task_ssm = NULL;
fpi_device_open_complete (dev, 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); FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (dev);
FpPrint *print = NULL; FpPrint *print = NULL;
self->task_ssm = NULL;
if (error) if (error)
{ {
fp_dbg ("enroll done fail"); fp_dbg ("enroll done fail");
fpi_device_enroll_complete (dev, NULL, error); fpi_device_enroll_complete (dev, NULL, g_steal_pointer (&error));
return; return;
} }
fp_dbg ("enroll completed");
fp_dbg ("enroll completed");
fpi_device_get_enroll_data (dev, &print); fpi_device_get_enroll_data (dev, &print);
fpi_device_enroll_complete (dev, g_object_ref (print), NULL); 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"); fp_dbg ("verify completed");
FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (dev); FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (dev);
self->task_ssm = NULL;
if (error && error->domain == FP_DEVICE_RETRY) if (error && error->domain == FP_DEVICE_RETRY)
{ {
if (fpi_device_get_current_action (dev) == FPI_DEVICE_ACTION_VERIFY) 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); self->enroll_dupl_del_state ? self->identify_new_print : NULL, NULL);
fpi_device_identify_complete (dev, error); fpi_device_identify_complete (dev, error);
} }
self->task_ssm = NULL;
} }
static void static void
@@ -1978,6 +1982,8 @@ fp_list_ssm_done (FpiSsm *ssm, FpDevice *dev, GError *error)
{ {
FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (dev); FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (dev);
self->task_ssm = NULL;
if (error) if (error)
{ {
fp_dbg ("list tpl fail"); 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)); fpi_device_list_complete (dev, NULL, g_steal_pointer (&error));
return; return;
} }
fpi_device_list_complete (FP_DEVICE (self), g_steal_pointer (&self->templates->list), NULL); fpi_device_list_complete (FP_DEVICE (self), g_steal_pointer (&self->templates->list), NULL);
self->task_ssm = NULL;
} }
static void static void
@@ -2160,15 +2166,14 @@ fp_delete_ssm_done (FpiSsm *ssm, FpDevice *dev, GError *error)
{ {
FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (dev); 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; 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 static void
@@ -2212,15 +2217,14 @@ fp_delete_all_ssm_done (FpiSsm *ssm, FpDevice *dev, GError *error)
{ {
FpiDeviceMafpmoc *self = FPI_DEVICE_MAFPMOC (dev); 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; 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 static void