Blame SOURCES/0028-fpi-ssm-Take-ownership-of-the-SSM-when-completing-it.patch

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