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

Commit 39b2d6de authored by d34d's avatar d34d
Browse files

LLS: Use window attachment callbacks

Change-Id: Ie25585a120638fb7254bdf43e767aae3c68623e0
parent 5d7282dd
Loading
Loading
Loading
Loading
+43 −20
Original line number Diff line number Diff line
@@ -188,21 +188,9 @@ public class LiveLockScreenController {
        return mLiveLockScreenView;
    }

    private void updateLiveLockScreenView(final ComponentName cn) {
        // If mThirdPartyKeyguardViewComponent differs from cn, go ahead and update
        if (!Objects.equals(mLiveLockScreenComponentName, cn)) {
            mHandler.post(new Runnable() {
    private Runnable mAddNewLiveLockScreenRunnable = new Runnable() {
        @Override
        public void run() {
                    mLiveLockScreenComponentName = cn;
                    if (mLiveLockScreenView != null) {
                        if (mPanelView.indexOfChild(mLiveLockScreenView) >= 0) {
                            mPanelView.removeView(mLiveLockScreenView);
                        }
                        mLiveLockScreenView.unregisterKeyguardExternalViewCallback(
                                mExternalKeyguardViewCallbacks);
                        // setProviderComponent(null) will unbind the existing service
                        mLiveLockScreenView.setProviderComponent(null);
            if (mLiveLockScreenComponentName != null) {
                mLiveLockScreenView =
                        getExternalKeyguardView(mLiveLockScreenComponentName);
@@ -216,8 +204,43 @@ public class LiveLockScreenController {
                mLiveLockScreenView = null;
            }
        }
    };

    private void updateLiveLockScreenView(final ComponentName cn) {
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                // If mThirdPartyKeyguardViewComponent differs from cn, go ahead and update
                if (!Objects.equals(mLiveLockScreenComponentName, cn)) {
                    mLiveLockScreenComponentName = cn;
                    if (mLiveLockScreenView != null) {
                        mLiveLockScreenView.unregisterKeyguardExternalViewCallback(
                                mExternalKeyguardViewCallbacks);
                        // setProviderComponent(null) will unbind the existing service
                        mLiveLockScreenView.setProviderComponent(null);
                        if (mPanelView.indexOfChild(mLiveLockScreenView) >= 0) {
                            mLiveLockScreenView.registerOnWindowAttachmentChangedListener(
                                    new KeyguardExternalView.OnWindowAttachmentChangedListener() {
                                        @Override
                                        public void onAttachedToWindow() {
                                        }

                                        @Override
                                        public void onDetachedFromWindow() {
                                            mLiveLockScreenView
                                                    .unregisterOnWindowAttachmentChangedListener(
                                                            this);
                                            mHandler.post(mAddNewLiveLockScreenRunnable);
                                        }
                                    }
                            );
                            mPanelView.removeView(mLiveLockScreenView);
                        } else {
                            mAddNewLiveLockScreenRunnable.run();
                        }
                    }
            });
                }
            }
        });
    }
}