Blame SOURCES/0030-fpi-ssm-Add-a-usb-transfer-callback-with-data-as-wea.patch

d47ffe
From 9902e2c4224914dc611eb2326db7322aa57ec2a2 Mon Sep 17 00:00:00 2001
d47ffe
From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= <mail@3v1n0.net>
d47ffe
Date: Wed, 27 Nov 2019 19:36:24 +0100
d47ffe
Subject: [PATCH 030/181] fpi-ssm: Add a usb transfer callback with data as
d47ffe
 weak pointer
d47ffe
d47ffe
Allow to pass a double-pointer to be nullified as the transfer data in order
d47ffe
to mark it as NULL when the transfer is done.
d47ffe
d47ffe
This is useful if we're keeping the transfer around in order to check that
d47ffe
no one is currently running.
d47ffe
---
d47ffe
 libfprint/fpi-ssm.c | 29 +++++++++++++++++++++++++++++
d47ffe
 libfprint/fpi-ssm.h |  6 +++++-
d47ffe
 2 files changed, 34 insertions(+), 1 deletion(-)
d47ffe
d47ffe
diff --git a/libfprint/fpi-ssm.c b/libfprint/fpi-ssm.c
d47ffe
index a614860..6a02a2c 100644
d47ffe
--- a/libfprint/fpi-ssm.c
d47ffe
+++ b/libfprint/fpi-ssm.c
d47ffe
@@ -413,3 +413,32 @@ fpi_ssm_usb_transfer_cb (FpiUsbTransfer *transfer, FpDevice *device,
d47ffe
   else
d47ffe
     fpi_ssm_next_state (transfer->ssm);
d47ffe
 }
d47ffe
+
d47ffe
+/**
d47ffe
+ * fpi_ssm_usb_transfer_with_weak_pointer_cb:
d47ffe
+ * @transfer: a #FpiUsbTransfer
d47ffe
+ * @device: a #FpDevice
d47ffe
+ * @weak_ptr: A #gpointer pointer to nullify. You can pass a pointer to any
d47ffe
+ *            #gpointer to nullify when the callback is completed. I.e a
d47ffe
+ *            pointer to the current #FpiUsbTransfer.
d47ffe
+ * @error: The #GError or %NULL
d47ffe
+ *
d47ffe
+ * Can be used in as a #FpiUsbTransfer callback handler to automatically
d47ffe
+ * advance or fail a statemachine on transfer completion.
d47ffe
+ * Passing a #gpointer* as @weak_ptr permits to nullify it once we're done
d47ffe
+ * with the transfer.
d47ffe
+ *
d47ffe
+ * Make sure to set the #FpiSsm on the transfer.
d47ffe
+ */
d47ffe
+void
d47ffe
+fpi_ssm_usb_transfer_with_weak_pointer_cb (FpiUsbTransfer *transfer,
d47ffe
+                                           FpDevice *device, gpointer weak_ptr,
d47ffe
+                                           GError *error)
d47ffe
+{
d47ffe
+  g_return_if_fail (transfer->ssm);
d47ffe
+
d47ffe
+  if (weak_ptr)
d47ffe
+    g_nullify_pointer ((gpointer *) weak_ptr);
d47ffe
+
d47ffe
+  fpi_ssm_usb_transfer_cb (transfer, device, weak_ptr, error);
d47ffe
+}
d47ffe
diff --git a/libfprint/fpi-ssm.h b/libfprint/fpi-ssm.h
d47ffe
index 8d45162..704271d 100644
d47ffe
--- a/libfprint/fpi-ssm.h
d47ffe
+++ b/libfprint/fpi-ssm.h
d47ffe
@@ -91,5 +91,9 @@ void fpi_ssm_next_state_timeout_cb (FpDevice *dev,
d47ffe
                                     void     *data);
d47ffe
 void fpi_ssm_usb_transfer_cb (FpiUsbTransfer *transfer,
d47ffe
                               FpDevice       *device,
d47ffe
-                              gpointer        user_data,
d47ffe
+                              gpointer        user_date,
d47ffe
                               GError         *error);
d47ffe
+void fpi_ssm_usb_transfer_with_weak_pointer_cb (FpiUsbTransfer *transfer,
d47ffe
+                                                FpDevice       *device,
d47ffe
+                                                gpointer        weak_ptr,
d47ffe
+                                                GError         *error);
d47ffe
-- 
d47ffe
2.24.1
d47ffe