Set pending client to null after it's been started

Pending client can now be started in two places. Originally it was only
started when onError was received (previous client canceled). We recently
discovered some enumerate bugs likely due to system boot timing changes,
where Keyguard authenticate() can occur while enumerate() is still going.

As a result, we queue clients while enumerate is happening and start them
when enumerate finishes. We need to remember to set the pending client to
null.

Fixes: 130208531

Test: Fingerprint works during cold boot
Change-Id: I5fe1c7a9fc96875f3d87048b12e601755d7f4963
This commit is contained in:
Kevin Chyn
2019-04-11 17:47:32 -07:00
parent d8913d7eac
commit 1c100834dd

View File

@@ -1231,6 +1231,7 @@ public abstract class BiometricServiceBase extends SystemService
if (mPendingClient != null) {
Slog.d(getTag(), "Enumerate finished, starting pending client");
startClient(mPendingClient, false /* initiatedByClient */);
mPendingClient = null;
}
}
}