From 5e70b5efb7094a78d05ecf7fb8f3bb0fdabc17f0 Mon Sep 17 00:00:00 2001 From: Kevin Chyn Date: Tue, 1 Jun 2021 15:49:43 -0700 Subject: [PATCH] Do not handle requests on system_server thread 1) Do not block system_server for sysui stuff 2) Access sysui variables from correct thread Bug: 187460696 Test: Manual Change-Id: I81f1dfc1122728dff37e8c7eccbf987bf1741435 --- .../systemui/biometrics/UdfpsController.java | 63 +++++++++++-------- 1 file changed, 38 insertions(+), 25 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java index 5c360a649af03..5d2fef7a7a035 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java @@ -225,48 +225,61 @@ public class UdfpsController implements DozeReceiver { @Override public void showUdfpsOverlay(int sensorId, int reason, @NonNull IUdfpsOverlayControllerCallback callback) { - final UdfpsEnrollHelper enrollHelper; - if (reason == IUdfpsOverlayController.REASON_ENROLL_FIND_SENSOR - || reason == IUdfpsOverlayController.REASON_ENROLL_ENROLLING) { - enrollHelper = new UdfpsEnrollHelper(mContext, reason); - } else { - enrollHelper = null; - } + mFgExecutor.execute(() -> { + final UdfpsEnrollHelper enrollHelper; + if (reason == IUdfpsOverlayController.REASON_ENROLL_FIND_SENSOR + || reason == IUdfpsOverlayController.REASON_ENROLL_ENROLLING) { + enrollHelper = new UdfpsEnrollHelper(mContext, reason); + } else { + enrollHelper = null; + } - mServerRequest = new ServerRequest(reason, callback, enrollHelper); - updateOverlay(); + mServerRequest = new ServerRequest(reason, callback, enrollHelper); + updateOverlay(); + }); } @Override public void hideUdfpsOverlay(int sensorId) { - mServerRequest = null; - updateOverlay(); + mFgExecutor.execute(() -> { + mServerRequest = null; + updateOverlay(); + }); } @Override public void onEnrollmentProgress(int sensorId, int remaining) { - if (mServerRequest == null) { - Log.e(TAG, "onEnrollProgress received but serverRequest is null"); - return; - } - mServerRequest.onEnrollmentProgress(remaining); + mFgExecutor.execute(() -> { + if (mServerRequest == null) { + Log.e(TAG, "onEnrollProgress received but serverRequest is null"); + return; + } + + mServerRequest.onEnrollmentProgress(remaining); + }); } @Override public void onEnrollmentHelp(int sensorId) { - if (mServerRequest == null) { - Log.e(TAG, "onEnrollmentHelp received but serverRequest is null"); - return; - } - mServerRequest.onEnrollmentHelp(); + mFgExecutor.execute(() -> { + if (mServerRequest == null) { + Log.e(TAG, "onEnrollmentHelp received but serverRequest is null"); + return; + } + + mServerRequest.onEnrollmentHelp(); + }); } @Override public void setDebugMessage(int sensorId, String message) { - if (mView == null) { - return; - } - mView.setDebugMessage(message); + mFgExecutor.execute(() -> { + if (mView == null) { + return; + } + + mView.setDebugMessage(message); + }); } }