mirror of
https://gitlab.freedesktop.org/libfprint/libfprint.git
synced 2025-11-15 07:38:12 +00:00
Introduce an early reporting mechanism for verify and match
It is a good idea to report match results early, to e.g. log in a user
immediately even if more device interaction is needed. Add new _full
variants for the verify/identify functions, with a corresponding
callback. Also move driver result reporting into new
fpi_device_{identify,verify}_report functions and remove the reporting
from the fpi_device_{identify,verify}_complete calls.
Basic updates to code is done in places. Only the upekts driver is
actually modified from a behaviour point of view. The image driver code
should be restructured quite a bit to split the reporting and only
report completion after device deactivation. This should simplifiy the
code quite a bit again.
This commit is contained in:
@@ -125,6 +125,30 @@ typedef void (*FpEnrollProgress) (FpDevice *device,
|
||||
gpointer user_data,
|
||||
GError *error);
|
||||
|
||||
/**
|
||||
* FpMatchCb:
|
||||
* @device: a #FpDevice
|
||||
* @success: Whether a print was retrieved, %FALSE means @error is set
|
||||
* @match: (nullable) (transfer none): The matching print
|
||||
* @print: (nullable) (transfer none): The newly scanned print
|
||||
* @user_data: (nullable) (transfer none): User provided data
|
||||
* @error: (nullable) (transfer none): #GError or %NULL
|
||||
*
|
||||
* Report the result of a match (identify or verify) operation. This callback
|
||||
* because it makes sense for drivers to wait e.g. on finger removal before
|
||||
* finishing the operation. However, the success/failure can often be reported
|
||||
* at an earlier time, and there is no need to make the user wait.
|
||||
*
|
||||
* The passed error is guaranteed to be of type %FP_DEVICE_RETRY if set. Actual
|
||||
* error conditions will not be reported using this function. Such an error may
|
||||
* still happen even if this callback has been called.
|
||||
*/
|
||||
typedef void (*FpMatchCb) (FpDevice *device,
|
||||
gboolean success,
|
||||
FpPrint *match,
|
||||
FpPrint *print,
|
||||
gpointer user_data,
|
||||
GError *error);
|
||||
|
||||
const gchar *fp_device_get_driver (FpDevice *device);
|
||||
const gchar *fp_device_get_device_id (FpDevice *device);
|
||||
@@ -160,12 +184,18 @@ void fp_device_enroll (FpDevice *device,
|
||||
void fp_device_verify (FpDevice *device,
|
||||
FpPrint *enrolled_print,
|
||||
GCancellable *cancellable,
|
||||
FpMatchCb match_cb,
|
||||
gpointer match_data,
|
||||
GDestroyNotify match_destroy,
|
||||
GAsyncReadyCallback callback,
|
||||
gpointer user_data);
|
||||
|
||||
void fp_device_identify (FpDevice *device,
|
||||
GPtrArray *prints,
|
||||
GCancellable *cancellable,
|
||||
FpMatchCb match_cb,
|
||||
gpointer match_data,
|
||||
GDestroyNotify match_destroy,
|
||||
GAsyncReadyCallback callback,
|
||||
gpointer user_data);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user