79 lines
2.8 KiB
Diff
79 lines
2.8 KiB
Diff
From 370137b97f53cec46750d2c984a3861d306bcb9d Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
|
|
Date: Tue, 3 Dec 2019 17:22:20 +0100
|
|
Subject: [PATCH 064/181] fpi-ssm: Mark a fpi-ssm completed on delay
|
|
|
|
---
|
|
libfprint/fpi-ssm.c | 40 ++++++++++++++++++++++++++++++++++++++++
|
|
libfprint/fpi-ssm.h | 3 +++
|
|
2 files changed, 43 insertions(+)
|
|
|
|
diff --git a/libfprint/fpi-ssm.c b/libfprint/fpi-ssm.c
|
|
index 4498ce9..09a31e3 100644
|
|
--- a/libfprint/fpi-ssm.c
|
|
+++ b/libfprint/fpi-ssm.c
|
|
@@ -349,6 +349,46 @@ fpi_ssm_mark_completed (FpiSsm *machine)
|
|
fpi_ssm_free (machine);
|
|
}
|
|
|
|
+static void
|
|
+on_device_timeout_complete (FpDevice *dev,
|
|
+ gpointer user_data)
|
|
+{
|
|
+ FpiSsm *machine = user_data;
|
|
+
|
|
+ machine->timeout = NULL;
|
|
+ fpi_ssm_mark_completed (machine);
|
|
+}
|
|
+
|
|
+/**
|
|
+ * fpi_ssm_mark_completed_delayed:
|
|
+ * @machine: an #FpiSsm state machine
|
|
+ * @delay: the milliseconds to wait before switching to the next state
|
|
+ * @cancellable: (nullable): a #GCancellable to cancel the delayed operation
|
|
+ *
|
|
+ * Mark a ssm as completed successfully with a delay of @delay ms.
|
|
+ * The callback set when creating the state machine with fpi_ssm_new () will be
|
|
+ * called when the timeout is over.
|
|
+ * The request can be cancelled passing a #GCancellable as @cancellable.
|
|
+ */
|
|
+void
|
|
+fpi_ssm_mark_completed_delayed (FpiSsm *machine,
|
|
+ int delay,
|
|
+ GCancellable *cancellable)
|
|
+{
|
|
+ g_autofree char *source_name = NULL;
|
|
+
|
|
+ g_return_if_fail (machine != NULL);
|
|
+
|
|
+ fpi_ssm_set_delayed_action_timeout (machine, delay,
|
|
+ on_device_timeout_complete, cancellable,
|
|
+ machine, NULL);
|
|
+
|
|
+ source_name = g_strdup_printf ("[%s] ssm %p complete %d",
|
|
+ fp_device_get_device_id (machine->dev),
|
|
+ machine, machine->cur_state + 1);
|
|
+ g_source_set_name (machine->timeout, source_name);
|
|
+}
|
|
+
|
|
/**
|
|
* fpi_ssm_mark_failed:
|
|
* @machine: an #FpiSsm state machine
|
|
diff --git a/libfprint/fpi-ssm.h b/libfprint/fpi-ssm.h
|
|
index 8dff27d..3ef653e 100644
|
|
--- a/libfprint/fpi-ssm.h
|
|
+++ b/libfprint/fpi-ssm.h
|
|
@@ -82,6 +82,9 @@ void fpi_ssm_jump_to_state_delayed (FpiSsm *machine,
|
|
GCancellable *cancellable);
|
|
void fpi_ssm_cancel_delayed_state_change (FpiSsm *machine);
|
|
void fpi_ssm_mark_completed (FpiSsm *machine);
|
|
+void fpi_ssm_mark_completed_delayed (FpiSsm *machine,
|
|
+ int delay,
|
|
+ GCancellable *cancellable);
|
|
void fpi_ssm_mark_failed (FpiSsm *machine,
|
|
GError *error);
|
|
void fpi_ssm_set_data (FpiSsm *machine,
|
|
--
|
|
2.24.1
|
|
|