Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4815ed45 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Cache IMountService for isUserKeyUnlocked() calls.

This avoids doing a ServiceManager lookup for every call through
this hot code-path.

Bug: 28946245
Change-Id: I210ce34b33e5b40a5ab4e92ddce87fc5e9964be2
parent ef817a1d
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -114,6 +114,8 @@ public class StorageManager {
    /** {@hide} */
    public static final int FLAG_INCLUDE_INVISIBLE = 1 << 10;

    private static volatile IMountService sMountService = null;

    private final Context mContext;
    private final ContentResolver mResolver;

@@ -1064,15 +1066,17 @@ public class StorageManager {

    /** {@hide} */
    public static boolean isUserKeyUnlocked(int userId) {
        final IMountService mount = IMountService.Stub
        if (sMountService == null) {
            sMountService = IMountService.Stub
                    .asInterface(ServiceManager.getService("mount"));
        if (mount == null) {
        }
        if (sMountService == null) {
            Slog.w(TAG, "Early during boot, assuming locked");
            return false;
        }
        final long token = Binder.clearCallingIdentity();
        try {
            return mount.isUserKeyUnlocked(userId);
            return sMountService.isUserKeyUnlocked(userId);
        } catch (RemoteException e) {
            throw e.rethrowAsRuntimeException();
        } finally {