From b0b7834861f2c93fd67f1fa28143db3ba17c2946 Mon Sep 17 00:00:00 2001 From: Lukas0610 Date: Wed, 7 Mar 2018 13:04:55 +0100 Subject: [PATCH] fingerprint: send cancel-message to system Android expects a FINGERPRINT_ERROR_CANCELED error-message if a fingerprint authentication-requested was cancelled. As bauth doesn't deliver such a message on its own, we use the already notify-wrapper to send a message to Android if the authentication was cancelled by bauth to allow a proper operation of the fingerprint-service. Some devices (hero, hero2) with the fingerprint scanner embedded in the home button need this for the "config_fingerprintWakeAndUnlock" option to work reliably. Change-Id: Id5ec866a7608885925687a1927e0e6085e9b6cff Ref: BUGBASH-1422 --- fingerprint/bauth/fingerprint.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/fingerprint/bauth/fingerprint.c b/fingerprint/bauth/fingerprint.c index 7224609..5145de6 100644 --- a/fingerprint/bauth/fingerprint.c +++ b/fingerprint/bauth/fingerprint.c @@ -19,6 +19,7 @@ #include #include #include +#include #include @@ -122,7 +123,19 @@ static uint64_t fingerprint_get_auth_id(struct fingerprint_device __unused *dev) static int fingerprint_cancel(struct fingerprint_device __unused *dev) { - return bauth_handle->ss_fingerprint_cancel(); + fingerprint_msg_t *cancel_msg; + int ret = 0; + + ret = bauth_handle->ss_fingerprint_cancel(); + + cancel_msg = (fingerprint_msg_t *)malloc(sizeof(fingerprint_msg_t)); + memset(cancel_msg, 0, sizeof(fingerprint_msg_t)); + + cancel_msg->type = FINGERPRINT_ERROR; + cancel_msg->data.error = FINGERPRINT_ERROR_CANCELED; + + original_notify(cancel_msg); + return ret; } static int fingerprint_remove(struct fingerprint_device __unused *dev, uint32_t gid, uint32_t fid)