|
|
73b847 |
From 70d7ad5047544c5b66a280c1e6a2da1dcc3eb5f8 Mon Sep 17 00:00:00 2001
|
|
|
73b847 |
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
|
|
|
73b847 |
Date: Tue, 26 Nov 2019 16:18:14 +0100
|
|
|
73b847 |
Subject: [PATCH 028/181] fpi-ssm: Take ownership of the SSM when completing it
|
|
|
73b847 |
|
|
|
73b847 |
When a machine is completed, we automatically free it since we can't
|
|
|
73b847 |
consider it valid anymore since this point.
|
|
|
73b847 |
|
|
|
73b847 |
Update the drivers not to free the SSM on completion callback anymore.
|
|
|
73b847 |
---
|
|
|
73b847 |
libfprint/drivers/aes1610.c | 2 --
|
|
|
73b847 |
libfprint/drivers/aes2501.c | 2 --
|
|
|
73b847 |
libfprint/drivers/aes2550.c | 2 --
|
|
|
73b847 |
libfprint/drivers/aesx660.c | 3 ---
|
|
|
73b847 |
libfprint/drivers/elan.c | 4 ----
|
|
|
73b847 |
libfprint/drivers/etes603.c | 6 ------
|
|
|
73b847 |
libfprint/drivers/synaptics/synaptics.c | 1 -
|
|
|
73b847 |
libfprint/drivers/upeksonly.c | 2 --
|
|
|
73b847 |
libfprint/drivers/upektc.c | 2 --
|
|
|
73b847 |
libfprint/drivers/upektc_img.c | 3 ---
|
|
|
73b847 |
libfprint/drivers/upekts.c | 4 ----
|
|
|
73b847 |
libfprint/drivers/uru4000.c | 1 -
|
|
|
73b847 |
libfprint/drivers/vcom5s.c | 1 -
|
|
|
73b847 |
libfprint/drivers/vfs0050.c | 2 --
|
|
|
73b847 |
libfprint/drivers/vfs101.c | 2 --
|
|
|
73b847 |
libfprint/drivers/vfs301.c | 2 --
|
|
|
73b847 |
libfprint/drivers/vfs5011.c | 2 --
|
|
|
73b847 |
libfprint/fpi-ssm.c | 15 +++++++++++----
|
|
|
73b847 |
18 files changed, 11 insertions(+), 45 deletions(-)
|
|
|
73b847 |
|
|
|
73b847 |
diff --git a/libfprint/drivers/aes1610.c b/libfprint/drivers/aes1610.c
|
|
|
73b847 |
index c9742e9..0326565 100644
|
|
|
73b847 |
--- a/libfprint/drivers/aes1610.c
|
|
|
73b847 |
+++ b/libfprint/drivers/aes1610.c
|
|
|
73b847 |
@@ -710,7 +710,6 @@ capture_sm_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
{
|
|
|
73b847 |
start_finger_detection (dev);
|
|
|
73b847 |
}
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
@@ -774,7 +773,6 @@ activate_sm_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
|
|
|
73b847 |
if (!error)
|
|
|
73b847 |
start_finger_detection (dev);
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
diff --git a/libfprint/drivers/aes2501.c b/libfprint/drivers/aes2501.c
|
|
|
73b847 |
index fad0218..1b59c56 100644
|
|
|
73b847 |
--- a/libfprint/drivers/aes2501.c
|
|
|
73b847 |
+++ b/libfprint/drivers/aes2501.c
|
|
|
73b847 |
@@ -575,7 +575,6 @@ capture_sm_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
{
|
|
|
73b847 |
start_finger_detection (dev);
|
|
|
73b847 |
}
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
@@ -806,7 +805,6 @@ activate_sm_complete (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
|
|
|
73b847 |
if (!error)
|
|
|
73b847 |
start_finger_detection (FP_IMAGE_DEVICE (dev));
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
diff --git a/libfprint/drivers/aes2550.c b/libfprint/drivers/aes2550.c
|
|
|
73b847 |
index 2abcf76..b95b053 100644
|
|
|
73b847 |
--- a/libfprint/drivers/aes2550.c
|
|
|
73b847 |
+++ b/libfprint/drivers/aes2550.c
|
|
|
73b847 |
@@ -391,7 +391,6 @@ capture_sm_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
{
|
|
|
73b847 |
start_finger_detection (dev);
|
|
|
73b847 |
}
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
@@ -537,7 +536,6 @@ activate_sm_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
|
|
|
73b847 |
if (!error)
|
|
|
73b847 |
start_finger_detection (dev);
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
diff --git a/libfprint/drivers/aesx660.c b/libfprint/drivers/aesx660.c
|
|
|
73b847 |
index 8ad4c63..3f13252 100644
|
|
|
73b847 |
--- a/libfprint/drivers/aesx660.c
|
|
|
73b847 |
+++ b/libfprint/drivers/aesx660.c
|
|
|
73b847 |
@@ -215,7 +215,6 @@ finger_det_sm_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
|
|
|
73b847 |
fp_dbg ("Finger detection completed");
|
|
|
73b847 |
fpi_image_device_report_finger_status (dev, TRUE);
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
|
|
|
73b847 |
if (priv->deactivating)
|
|
|
73b847 |
{
|
|
|
73b847 |
@@ -466,7 +465,6 @@ capture_sm_complete (FpiSsm *ssm, FpDevice *device, GError *error)
|
|
|
73b847 |
FpiDeviceAesX660Private *priv = fpi_device_aes_x660_get_instance_private (self);
|
|
|
73b847 |
|
|
|
73b847 |
fp_dbg ("Capture completed");
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
|
|
|
73b847 |
if (priv->deactivating)
|
|
|
73b847 |
{
|
|
|
73b847 |
@@ -672,7 +670,6 @@ static void
|
|
|
73b847 |
activate_sm_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
{
|
|
|
73b847 |
fpi_image_device_activate_complete (FP_IMAGE_DEVICE (_dev), error);
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
|
|
|
73b847 |
if (!error)
|
|
|
73b847 |
start_finger_detection (FP_IMAGE_DEVICE (_dev));
|
|
|
73b847 |
diff --git a/libfprint/drivers/elan.c b/libfprint/drivers/elan.c
|
|
|
73b847 |
index 961366e..5e80be5 100644
|
|
|
73b847 |
--- a/libfprint/drivers/elan.c
|
|
|
73b847 |
+++ b/libfprint/drivers/elan.c
|
|
|
73b847 |
@@ -479,7 +479,6 @@ stop_capture_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
|
|
|
73b847 |
G_DEBUG_HERE ();
|
|
|
73b847 |
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
|
|
|
73b847 |
/* The device is inactive at this point. */
|
|
|
73b847 |
self->dev_state = FP_IMAGE_DEVICE_STATE_INACTIVE;
|
|
|
73b847 |
@@ -606,7 +605,6 @@ capture_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
fpi_image_device_session_error (dev, error);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
@@ -789,7 +787,6 @@ calibrate_complete (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
elan_capture (dev);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
@@ -886,7 +883,6 @@ activate_complete (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
|
|
|
73b847 |
fpi_image_device_activate_complete (idev, error);
|
|
|
73b847 |
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
diff --git a/libfprint/drivers/etes603.c b/libfprint/drivers/etes603.c
|
|
|
73b847 |
index 5c990da..55f0139 100644
|
|
|
73b847 |
--- a/libfprint/drivers/etes603.c
|
|
|
73b847 |
+++ b/libfprint/drivers/etes603.c
|
|
|
73b847 |
@@ -789,7 +789,6 @@ m_exit_complete (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
else
|
|
|
73b847 |
fp_dbg ("The device is now in idle state");
|
|
|
73b847 |
fpi_image_device_deactivate_complete (idev, error);
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
@@ -911,7 +910,6 @@ m_capture_complete (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
g_error_free (error);
|
|
|
73b847 |
}
|
|
|
73b847 |
}
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
|
|
|
73b847 |
if (self->is_active == TRUE)
|
|
|
73b847 |
{
|
|
|
73b847 |
@@ -1061,7 +1059,6 @@ m_finger_complete (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
self->is_active = FALSE;
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
@@ -1265,7 +1262,6 @@ m_tunevrb_complete (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
if (!self->is_active)
|
|
|
73b847 |
m_exit_start (idev);
|
|
|
73b847 |
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
/*
|
|
|
73b847 |
@@ -1409,7 +1405,6 @@ m_tunedc_complete (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
if (!self->is_active)
|
|
|
73b847 |
m_exit_start (idev);
|
|
|
73b847 |
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
@@ -1543,7 +1538,6 @@ m_init_complete (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
reset_param (FPI_DEVICE_ETES603 (dev));
|
|
|
73b847 |
fpi_image_device_session_error (idev, error);
|
|
|
73b847 |
}
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
diff --git a/libfprint/drivers/synaptics/synaptics.c b/libfprint/drivers/synaptics/synaptics.c
|
|
|
73b847 |
index a2286b2..4932d01 100644
|
|
|
73b847 |
--- a/libfprint/drivers/synaptics/synaptics.c
|
|
|
73b847 |
+++ b/libfprint/drivers/synaptics/synaptics.c
|
|
|
73b847 |
@@ -290,7 +290,6 @@ cmd_ssm_done (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
}
|
|
|
73b847 |
self->cmd_complete_on_removal = FALSE;
|
|
|
73b847 |
g_clear_pointer (&self->cmd_complete_error, g_error_free);
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
diff --git a/libfprint/drivers/upeksonly.c b/libfprint/drivers/upeksonly.c
|
|
|
73b847 |
index ec81375..e1cd7e5 100644
|
|
|
73b847 |
--- a/libfprint/drivers/upeksonly.c
|
|
|
73b847 |
+++ b/libfprint/drivers/upeksonly.c
|
|
|
73b847 |
@@ -1380,7 +1380,6 @@ loopsm_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
FpImageDevice *dev = FP_IMAGE_DEVICE (_dev);
|
|
|
73b847 |
FpiDeviceUpeksonly *self = FPI_DEVICE_UPEKSONLY (_dev);
|
|
|
73b847 |
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
|
|
|
73b847 |
if (self->deactivating)
|
|
|
73b847 |
{
|
|
|
73b847 |
@@ -1401,7 +1400,6 @@ initsm_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
FpImageDevice *dev = FP_IMAGE_DEVICE (_dev);
|
|
|
73b847 |
FpiDeviceUpeksonly *self = FPI_DEVICE_UPEKSONLY (_dev);
|
|
|
73b847 |
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
fpi_image_device_activate_complete (dev, error);
|
|
|
73b847 |
if (error)
|
|
|
73b847 |
return;
|
|
|
73b847 |
diff --git a/libfprint/drivers/upektc.c b/libfprint/drivers/upektc.c
|
|
|
73b847 |
index ff5b49b..e1254ce 100644
|
|
|
73b847 |
--- a/libfprint/drivers/upektc.c
|
|
|
73b847 |
+++ b/libfprint/drivers/upektc.c
|
|
|
73b847 |
@@ -157,7 +157,6 @@ activate_sm_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
|
|
|
73b847 |
if (!error)
|
|
|
73b847 |
start_finger_detection (dev);
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
|
|
|
73b847 |
@@ -345,7 +344,6 @@ capture_sm_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
else
|
|
|
73b847 |
start_finger_detection (dev);
|
|
|
73b847 |
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
diff --git a/libfprint/drivers/upektc_img.c b/libfprint/drivers/upektc_img.c
|
|
|
73b847 |
index 1e06b90..28a709f 100644
|
|
|
73b847 |
--- a/libfprint/drivers/upektc_img.c
|
|
|
73b847 |
+++ b/libfprint/drivers/upektc_img.c
|
|
|
73b847 |
@@ -389,7 +389,6 @@ capture_sm_complete (FpiSsm *ssm, FpDevice *_dev, GError *error_arg)
|
|
|
73b847 |
|
|
|
73b847 |
g_autoptr(GError) error = error_arg;
|
|
|
73b847 |
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
|
|
|
73b847 |
/* Note: We assume that the error is a cancellation in the deactivation case */
|
|
|
73b847 |
if (self->deactivating)
|
|
|
73b847 |
@@ -470,7 +469,6 @@ deactivate_sm_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
FpiDeviceUpektcImg *self = FPI_DEVICE_UPEKTC_IMG (_dev);
|
|
|
73b847 |
|
|
|
73b847 |
fp_dbg ("Deactivate completed");
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
|
|
|
73b847 |
self->deactivating = FALSE;
|
|
|
73b847 |
fpi_image_device_deactivate_complete (dev, error);
|
|
|
73b847 |
@@ -601,7 +599,6 @@ activate_sm_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
{
|
|
|
73b847 |
FpImageDevice *dev = FP_IMAGE_DEVICE (_dev);
|
|
|
73b847 |
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
fpi_image_device_activate_complete (dev, error);
|
|
|
73b847 |
|
|
|
73b847 |
if (!error)
|
|
|
73b847 |
diff --git a/libfprint/drivers/upekts.c b/libfprint/drivers/upekts.c
|
|
|
73b847 |
index b3481aa..4bc6556 100644
|
|
|
73b847 |
--- a/libfprint/drivers/upekts.c
|
|
|
73b847 |
+++ b/libfprint/drivers/upekts.c
|
|
|
73b847 |
@@ -990,7 +990,6 @@ enroll_stop_deinit_cb (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
fp_warn ("Error deinitializing: %s", error->message);
|
|
|
73b847 |
|
|
|
73b847 |
fpi_device_enroll_complete (dev, data->print, data->error);
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
@@ -1217,7 +1216,6 @@ enroll_started (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
else
|
|
|
73b847 |
enroll_iterate (dev);
|
|
|
73b847 |
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
@@ -1256,7 +1254,6 @@ verify_stop_deinit_cb (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
fp_warn ("Error deinitializing: %s", error->message);
|
|
|
73b847 |
|
|
|
73b847 |
fpi_device_verify_complete (dev, data->res, NULL, data->error);
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
@@ -1540,7 +1537,6 @@ verify_started (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
upekdev->first_verify_iteration = TRUE;
|
|
|
73b847 |
verify_iterate (dev);
|
|
|
73b847 |
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
diff --git a/libfprint/drivers/uru4000.c b/libfprint/drivers/uru4000.c
|
|
|
73b847 |
index f248411..89328d0 100644
|
|
|
73b847 |
--- a/libfprint/drivers/uru4000.c
|
|
|
73b847 |
+++ b/libfprint/drivers/uru4000.c
|
|
|
73b847 |
@@ -789,7 +789,6 @@ imaging_complete (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
{
|
|
|
73b847 |
FpiDeviceUru4000 *self = FPI_DEVICE_URU4000 (dev);
|
|
|
73b847 |
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
|
|
|
73b847 |
/* Report error before exiting imaging loop - the error handler
|
|
|
73b847 |
* can request state change, which needs to be postponed to end of
|
|
|
73b847 |
diff --git a/libfprint/drivers/vcom5s.c b/libfprint/drivers/vcom5s.c
|
|
|
73b847 |
index 0e10252..edd2dd4 100644
|
|
|
73b847 |
--- a/libfprint/drivers/vcom5s.c
|
|
|
73b847 |
+++ b/libfprint/drivers/vcom5s.c
|
|
|
73b847 |
@@ -301,7 +301,6 @@ loopsm_complete (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
FpImageDevice *imgdev = FP_IMAGE_DEVICE (dev);
|
|
|
73b847 |
FpDeviceVcom5s *self = FPI_DEVICE_VCOM5S (dev);
|
|
|
73b847 |
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
g_object_unref (self->capture_img);
|
|
|
73b847 |
self->capture_img = NULL;
|
|
|
73b847 |
self->loop_running = FALSE;
|
|
|
73b847 |
diff --git a/libfprint/drivers/vfs0050.c b/libfprint/drivers/vfs0050.c
|
|
|
73b847 |
index 4dc6782..1be272b 100644
|
|
|
73b847 |
--- a/libfprint/drivers/vfs0050.c
|
|
|
73b847 |
+++ b/libfprint/drivers/vfs0050.c
|
|
|
73b847 |
@@ -669,7 +669,6 @@ dev_activate_callback (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
g_error_free (error);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
/* Activate device */
|
|
|
73b847 |
@@ -710,7 +709,6 @@ dev_open_callback (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
{
|
|
|
73b847 |
/* Notify open complete */
|
|
|
73b847 |
fpi_image_device_open_complete (FP_IMAGE_DEVICE (dev), error);
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
/* Open device */
|
|
|
73b847 |
diff --git a/libfprint/drivers/vfs101.c b/libfprint/drivers/vfs101.c
|
|
|
73b847 |
index 37e083c..9ca1b0a 100644
|
|
|
73b847 |
--- a/libfprint/drivers/vfs101.c
|
|
|
73b847 |
+++ b/libfprint/drivers/vfs101.c
|
|
|
73b847 |
@@ -960,7 +960,6 @@ m_loop_complete (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
|
|
|
73b847 |
self->active = FALSE;
|
|
|
73b847 |
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
/* Init ssm states */
|
|
|
73b847 |
@@ -1268,7 +1267,6 @@ m_init_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
/* Free sequential state machine */
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
/* Activate device */
|
|
|
73b847 |
diff --git a/libfprint/drivers/vfs301.c b/libfprint/drivers/vfs301.c
|
|
|
73b847 |
index 8fdac7c..7219792 100644
|
|
|
73b847 |
--- a/libfprint/drivers/vfs301.c
|
|
|
73b847 |
+++ b/libfprint/drivers/vfs301.c
|
|
|
73b847 |
@@ -168,7 +168,6 @@ m_loop_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
g_error_free (error);
|
|
|
73b847 |
}
|
|
|
73b847 |
/* Free sequential state machine */
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
/* Exec init sequential state machine */
|
|
|
73b847 |
@@ -201,7 +200,6 @@ m_init_complete (FpiSsm *ssm, FpDevice *dev, GError *error)
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
/* Free sequential state machine */
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
/* Activate device */
|
|
|
73b847 |
diff --git a/libfprint/drivers/vfs5011.c b/libfprint/drivers/vfs5011.c
|
|
|
73b847 |
index 9eddca7..007e486 100644
|
|
|
73b847 |
--- a/libfprint/drivers/vfs5011.c
|
|
|
73b847 |
+++ b/libfprint/drivers/vfs5011.c
|
|
|
73b847 |
@@ -745,7 +745,6 @@ activate_loop_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
submit_image (ssm, self, dev);
|
|
|
73b847 |
fpi_image_device_report_finger_status (dev, FALSE);
|
|
|
73b847 |
}
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
|
|
|
73b847 |
self->loop_running = FALSE;
|
|
|
73b847 |
|
|
|
73b847 |
@@ -793,7 +792,6 @@ open_loop_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
self->init_sequence.receive_buf = NULL;
|
|
|
73b847 |
|
|
|
73b847 |
fpi_image_device_open_complete (dev, error);
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
static void
|
|
|
73b847 |
diff --git a/libfprint/fpi-ssm.c b/libfprint/fpi-ssm.c
|
|
|
73b847 |
index 1569be8..a614860 100644
|
|
|
73b847 |
--- a/libfprint/fpi-ssm.c
|
|
|
73b847 |
+++ b/libfprint/fpi-ssm.c
|
|
|
73b847 |
@@ -51,6 +51,7 @@
|
|
|
73b847 |
*
|
|
|
73b847 |
* To start a ssm, you pass in a completion callback function to fpi_ssm_start()
|
|
|
73b847 |
* which gets called when the ssm completes (both on error and on failure).
|
|
|
73b847 |
+ * Starting a ssm also takes ownership of it.
|
|
|
73b847 |
*
|
|
|
73b847 |
* To iterate to the next state, call fpi_ssm_next_state(). It is legal to
|
|
|
73b847 |
* attempt to iterate beyond the final state - this is equivalent to marking
|
|
|
73b847 |
@@ -58,6 +59,7 @@
|
|
|
73b847 |
*
|
|
|
73b847 |
* To mark successful completion of a SSM, either iterate beyond the final
|
|
|
73b847 |
* state or call fpi_ssm_mark_completed() from any state.
|
|
|
73b847 |
+ * This will also invalidate the machine, freeing it.
|
|
|
73b847 |
*
|
|
|
73b847 |
* To mark failed completion of a SSM, call fpi_ssm_mark_failed() from any
|
|
|
73b847 |
* state. You must pass a non-zero error code.
|
|
|
73b847 |
@@ -125,7 +127,6 @@ fpi_ssm_new (FpDevice *dev,
|
|
|
73b847 |
* @ssm_data_destroy: (nullable): #GDestroyNotify for @ssm_data
|
|
|
73b847 |
*
|
|
|
73b847 |
* Sets @machine's data (freeing the existing data, if any).
|
|
|
73b847 |
- *
|
|
|
73b847 |
*/
|
|
|
73b847 |
void
|
|
|
73b847 |
fpi_ssm_set_data (FpiSsm *machine,
|
|
|
73b847 |
@@ -182,12 +183,16 @@ __ssm_call_handler (FpiSsm *machine)
|
|
|
73b847 |
|
|
|
73b847 |
/**
|
|
|
73b847 |
* fpi_ssm_start:
|
|
|
73b847 |
- * @ssm: an #FpiSsm state machine
|
|
|
73b847 |
+ * @ssm: (transfer full): an #FpiSsm state machine
|
|
|
73b847 |
* @callback: the #FpiSsmCompletedCallback callback to call on completion
|
|
|
73b847 |
*
|
|
|
73b847 |
* Starts a state machine. You can also use this function to restart
|
|
|
73b847 |
* a completed or failed state machine. The @callback will be called
|
|
|
73b847 |
* on completion.
|
|
|
73b847 |
+ *
|
|
|
73b847 |
+ * Note that @ssm will be stolen when this function is called.
|
|
|
73b847 |
+ * So that all associated data will be free'ed automatically, after the
|
|
|
73b847 |
+ * @callback is ran.
|
|
|
73b847 |
*/
|
|
|
73b847 |
void
|
|
|
73b847 |
fpi_ssm_start (FpiSsm *ssm, FpiSsmCompletedCallback callback)
|
|
|
73b847 |
@@ -210,7 +215,6 @@ __subsm_complete (FpiSsm *ssm, FpDevice *_dev, GError *error)
|
|
|
73b847 |
fpi_ssm_mark_failed (parent, error);
|
|
|
73b847 |
else
|
|
|
73b847 |
fpi_ssm_next_state (parent);
|
|
|
73b847 |
- fpi_ssm_free (ssm);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
/**
|
|
|
73b847 |
@@ -253,6 +257,7 @@ fpi_ssm_mark_completed (FpiSsm *machine)
|
|
|
73b847 |
|
|
|
73b847 |
machine->callback (machine, machine->dev, error);
|
|
|
73b847 |
}
|
|
|
73b847 |
+ fpi_ssm_free (machine);
|
|
|
73b847 |
}
|
|
|
73b847 |
|
|
|
73b847 |
/**
|
|
|
73b847 |
@@ -260,7 +265,7 @@ fpi_ssm_mark_completed (FpiSsm *machine)
|
|
|
73b847 |
* @machine: an #FpiSsm state machine
|
|
|
73b847 |
* @error: a #GError
|
|
|
73b847 |
*
|
|
|
73b847 |
- * Mark a state machine as failed with @error as the error code.
|
|
|
73b847 |
+ * Mark a state machine as failed with @error as the error code, completing it.
|
|
|
73b847 |
*/
|
|
|
73b847 |
void
|
|
|
73b847 |
fpi_ssm_mark_failed (FpiSsm *machine, GError *error)
|
|
|
73b847 |
@@ -305,6 +310,8 @@ fpi_ssm_next_state (FpiSsm *machine)
|
|
|
73b847 |
* @state: the state to jump to
|
|
|
73b847 |
*
|
|
|
73b847 |
* Jump to the @state state, bypassing intermediary states.
|
|
|
73b847 |
+ * If @state is the last state, the machine won't be completed unless
|
|
|
73b847 |
+ * fpi_ssm_mark_completed() isn't explicitly called.
|
|
|
73b847 |
*/
|
|
|
73b847 |
void
|
|
|
73b847 |
fpi_ssm_jump_to_state (FpiSsm *machine, int state)
|
|
|
73b847 |
--
|
|
|
73b847 |
2.24.1
|
|
|
73b847 |
|