diff options
| -rw-r--r-- | services/core/java/com/android/server/fingerprint/FingerprintService.java | 31 |
1 files changed, 13 insertions, 18 deletions
diff --git a/services/core/java/com/android/server/fingerprint/FingerprintService.java b/services/core/java/com/android/server/fingerprint/FingerprintService.java index ac488e303dd2..a33f00059d3c 100644 --- a/services/core/java/com/android/server/fingerprint/FingerprintService.java +++ b/services/core/java/com/android/server/fingerprint/FingerprintService.java @@ -37,7 +37,6 @@ import android.hardware.fingerprint.IFingerprintServiceReceiver; import static android.Manifest.permission.MANAGE_FINGERPRINT; import static android.Manifest.permission.USE_FINGERPRINT; -import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -363,12 +362,12 @@ public class FingerprintService extends SystemService { private class ClientMonitor implements IBinder.DeathRecipient { IBinder token; - WeakReference<IFingerprintServiceReceiver> receiver; + IFingerprintServiceReceiver receiver; int userId; public ClientMonitor(IBinder token, IFingerprintServiceReceiver receiver, int userId) { this.token = token; - this.receiver = new WeakReference<IFingerprintServiceReceiver>(receiver); + this.receiver = receiver; this.userId = userId; try { token.linkToDeath(this, 0); @@ -388,6 +387,7 @@ public class FingerprintService extends SystemService { public void binderDied() { token = null; removeClient(this); + receiver = null; } protected void finalize() throws Throwable { @@ -405,10 +405,9 @@ public class FingerprintService extends SystemService { * @return true if we're done. */ private boolean sendRemoved(int fingerId, int groupId) { - IFingerprintServiceReceiver rx = receiver.get(); - if (rx == null) return true; // client not listening + if (receiver == null) return true; // client not listening try { - rx.onRemoved(mHalDeviceId, fingerId, groupId); + receiver.onRemoved(mHalDeviceId, fingerId, groupId); return fingerId == 0; } catch (RemoteException e) { Slog.w(TAG, "Failed to notify Removed:", e); @@ -420,11 +419,10 @@ public class FingerprintService extends SystemService { * @return true if we're done. */ private boolean sendEnrollResult(int fpId, int groupId, int remaining) { - IFingerprintServiceReceiver rx = receiver.get(); - if (rx == null) return true; // client not listening + if (receiver == null) return true; // client not listening FingerprintUtils.vibrateFingerprintSuccess(getContext()); try { - rx.onEnrollResult(mHalDeviceId, fpId, groupId, remaining); + receiver.onEnrollResult(mHalDeviceId, fpId, groupId, remaining); return remaining == 0; } catch (RemoteException e) { Slog.w(TAG, "Failed to notify EnrollResult:", e); @@ -436,11 +434,10 @@ public class FingerprintService extends SystemService { * @return true if we're done. */ private boolean sendAuthenticated(int fpId, int groupId) { - IFingerprintServiceReceiver rx = receiver.get(); boolean result = false; - if (rx != null) { + if (receiver != null) { try { - rx.onAuthenticated(mHalDeviceId, fpId, groupId); + receiver.onAuthenticated(mHalDeviceId, fpId, groupId); } catch (RemoteException e) { Slog.w(TAG, "Failed to notify Authenticated:", e); result = true; // client failed @@ -463,10 +460,9 @@ public class FingerprintService extends SystemService { * @return true if we're done. */ private boolean sendAcquired(int acquiredInfo) { - IFingerprintServiceReceiver rx = receiver.get(); - if (rx == null) return true; // client not listening + if (receiver == null) return true; // client not listening try { - rx.onAcquired(mHalDeviceId, acquiredInfo); + receiver.onAcquired(mHalDeviceId, acquiredInfo); return false; // acquisition continues... } catch (RemoteException e) { Slog.w(TAG, "Failed to invoke sendAcquired:", e); @@ -478,10 +474,9 @@ public class FingerprintService extends SystemService { * @return true if we're done. */ private boolean sendError(int error) { - IFingerprintServiceReceiver rx = receiver.get(); - if (rx != null) { + if (receiver != null) { try { - rx.onError(mHalDeviceId, error); + receiver.onError(mHalDeviceId, error); } catch (RemoteException e) { Slog.w(TAG, "Failed to invoke sendError:", e); } |