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

Commit 02c7762d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Camera: Use a single handler thread for device state callbacks" into...

Merge "Camera: Use a single handler thread for device state callbacks" into udc-dev am: 5f614202 am: 0f60f166

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21563739



Change-Id: I4b85f40cac7688061ea0f0aa09f2762c4fdf56f3
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents ba528762 0f60f166
Loading
Loading
Loading
Loading
+18 −9
Original line number Diff line number Diff line
@@ -142,24 +142,18 @@ public final class CameraManager {
                    PackageManager.PERMISSION_GRANTED;
        }

        mHandlerThread = new HandlerThread(TAG);
        mHandlerThread.start();
        mHandler = new Handler(mHandlerThread.getLooper());
        mFoldStateListener = new FoldStateListener(context);
        try {
            context.getSystemService(DeviceStateManager.class)
                    .registerCallback(new HandlerExecutor(mHandler), mFoldStateListener);
            context.getSystemService(DeviceStateManager.class).registerCallback(
                    new HandlerExecutor(CameraManagerGlobal.get().getDeviceStateHandler()),
                    mFoldStateListener);
        } catch (IllegalStateException e) {
            Log.v(TAG, "Failed to register device state listener!");
            Log.v(TAG, "Device state dependent characteristics updates will not be functional!");
            mHandlerThread.quitSafely();
            mHandler = null;
            mFoldStateListener = null;
        }
    }

    private HandlerThread mHandlerThread;
    private Handler mHandler;
    private FoldStateListener mFoldStateListener;

    /**
@@ -1645,6 +1639,9 @@ public final class CameraManager {
        private ICameraService mCameraService;
        private boolean mHasOpenCloseListenerPermission = false;

        private HandlerThread mDeviceStateHandlerThread;
        private Handler mDeviceStateHandler;

        // Singleton, don't allow construction
        private CameraManagerGlobal() { }

@@ -1658,6 +1655,18 @@ public final class CameraManager {
            return gCameraManager;
        }

        public Handler getDeviceStateHandler() {
            synchronized(mLock) {
                if (mDeviceStateHandlerThread == null) {
                    mDeviceStateHandlerThread = new HandlerThread(TAG);
                    mDeviceStateHandlerThread.start();
                    mDeviceStateHandler = new Handler(mDeviceStateHandlerThread.getLooper());
                }

                return mDeviceStateHandler;
            }
        }

        @Override
        public IBinder asBinder() {
            return this;