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
This commit is contained in:
Lucas Dupin
2019-04-18 19:23:06 -07:00
parent db44ba1e85
commit 3704d53fe1
3 changed files with 18 additions and 8 deletions

View File

@@ -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) {

View File

@@ -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);
mRightAffordanceView.setImageDrawable(state.drawable, state.tint);
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);
mLeftAffordanceView.setImageDrawable(state.drawable, state.tint);
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();

View File

@@ -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();
}