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

Commit 3704d53f authored by Lucas Dupin's avatar Lucas Dupin
Browse files

Do not unnecessarily re-inflate camera preview

Camera preview inflation was happening every time the keyguard
visibility changed, causing jank and making sysui drop frames.

Ultimately, the symptom was AOD flashing after pressing power.

Fixes: 130878131
Test: press power to go from and to AOD
Test: double tap power to launch camera (preview is still available)
Test: press power to lock device from launcher
Change-Id: Id3df83d59dcd123a71b37297e9ab70a1e8a52c90
parent db44ba1e
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -149,6 +149,13 @@ public class KeyguardAffordanceView extends ImageView {
        updateIconColor();
    }

    /**
     * If current drawable should be tinted.
     */
    public boolean shouldTint() {
        return mShouldTint;
    }

    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
        super.onLayout(changed, left, top, right, bottom);
@@ -168,6 +175,9 @@ public class KeyguardAffordanceView extends ImageView {
    }

    public void setPreviewView(View v) {
        if (mPreviewView == v) {
            return;
        }
        View oldPreviewView = mPreviewView;
        mPreviewView = v;
        if (mPreviewView != null) {
+8 −7
Original line number Diff line number Diff line
@@ -365,7 +365,10 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
    private void updateRightAffordanceIcon() {
        IconState state = mRightButton.getIcon();
        mRightAffordanceView.setVisibility(!mDozing && state.isVisible ? View.VISIBLE : View.GONE);
        if (state.drawable != mRightAffordanceView.getDrawable()
                || state.tint != mRightAffordanceView.shouldTint()) {
            mRightAffordanceView.setImageDrawable(state.drawable, state.tint);
        }
        mRightAffordanceView.setContentDescription(state.contentDescription);
    }

@@ -417,7 +420,10 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
    private void updateLeftAffordanceIcon() {
        IconState state = mLeftButton.getIcon();
        mLeftAffordanceView.setVisibility(!mDozing && state.isVisible ? View.VISIBLE : View.GONE);
        if (state.drawable != mLeftAffordanceView.getDrawable()
                || state.tint != mLeftAffordanceView.shouldTint()) {
            mLeftAffordanceView.setImageDrawable(state.drawable, state.tint);
        }
        mLeftAffordanceView.setContentDescription(state.contentDescription);
    }

@@ -811,11 +817,6 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL
        updateLeftPreview();
    }

    public void onKeyguardShowingChanged() {
        updateLeftAffordance();
        inflateCameraPreview();
    }

    private void setRightButton(IntentButton button) {
        mRightButton = button;
        updateRightAffordanceIcon();
+0 −1
Original line number Diff line number Diff line
@@ -1308,7 +1308,6 @@ public class NotificationPanelView extends PanelView implements
            mKeyguardStatusBar.setAlpha(1f);
            mKeyguardStatusBar.setVisibility(keyguardShowing ? View.VISIBLE : View.INVISIBLE);
            if (keyguardShowing && oldState != mBarState) {
                mKeyguardBottomArea.onKeyguardShowingChanged();
                if (mQs != null) {
                    mQs.hideImmediately();
                }