Revert "Fix flicker when swiching resolution change"
This reverts commit 808e22eac1.
Reason for revert: b/249575831
Change-Id: Ic36d84042216f42bed7122b1cc355100cf542f3e
This commit is contained in:
@@ -455,6 +455,7 @@ public class ScreenDecorations extends CoreStartable implements Tunable , Dumpab
|
||||
}
|
||||
}
|
||||
|
||||
boolean needToUpdateProviderViews = false;
|
||||
final String newUniqueId = mDisplayInfo.uniqueId;
|
||||
if (!Objects.equals(newUniqueId, mDisplayUniqueId)) {
|
||||
mDisplayUniqueId = newUniqueId;
|
||||
@@ -472,6 +473,37 @@ public class ScreenDecorations extends CoreStartable implements Tunable , Dumpab
|
||||
setupDecorations();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mScreenDecorHwcLayer != null) {
|
||||
updateHwLayerRoundedCornerDrawable();
|
||||
updateHwLayerRoundedCornerExistAndSize();
|
||||
}
|
||||
needToUpdateProviderViews = true;
|
||||
}
|
||||
|
||||
final float newRatio = getPhysicalPixelDisplaySizeRatio();
|
||||
if (mRoundedCornerResDelegate.getPhysicalPixelDisplaySizeRatio() != newRatio) {
|
||||
mRoundedCornerResDelegate.setPhysicalPixelDisplaySizeRatio(newRatio);
|
||||
if (mScreenDecorHwcLayer != null) {
|
||||
updateHwLayerRoundedCornerExistAndSize();
|
||||
}
|
||||
needToUpdateProviderViews = true;
|
||||
}
|
||||
|
||||
if (needToUpdateProviderViews) {
|
||||
updateOverlayProviderViews(null);
|
||||
} else {
|
||||
updateOverlayProviderViews(new Integer[] {
|
||||
mFaceScanningViewId,
|
||||
R.id.display_cutout,
|
||||
R.id.display_cutout_left,
|
||||
R.id.display_cutout_right,
|
||||
R.id.display_cutout_bottom,
|
||||
});
|
||||
}
|
||||
|
||||
if (mScreenDecorHwcLayer != null) {
|
||||
mScreenDecorHwcLayer.onDisplayChanged(newUniqueId);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -1037,8 +1069,6 @@ public class ScreenDecorations extends CoreStartable implements Tunable , Dumpab
|
||||
&& (newRotation != mRotation || displayModeChanged(mDisplayMode, newMod))) {
|
||||
mRotation = newRotation;
|
||||
mDisplayMode = newMod;
|
||||
mRoundedCornerResDelegate.setPhysicalPixelDisplaySizeRatio(
|
||||
getPhysicalPixelDisplaySizeRatio());
|
||||
if (mScreenDecorHwcLayer != null) {
|
||||
mScreenDecorHwcLayer.pendingConfigChange = false;
|
||||
mScreenDecorHwcLayer.updateRotation(mRotation);
|
||||
|
||||
@@ -78,18 +78,23 @@ class RoundedCornerResDelegate(
|
||||
reloadMeasures()
|
||||
}
|
||||
|
||||
private fun reloadAll(newReloadToken: Int) {
|
||||
if (reloadToken == newReloadToken) {
|
||||
return
|
||||
}
|
||||
reloadToken = newReloadToken
|
||||
reloadRes()
|
||||
reloadMeasures()
|
||||
}
|
||||
|
||||
fun updateDisplayUniqueId(newDisplayUniqueId: String?, newReloadToken: Int?) {
|
||||
if (displayUniqueId != newDisplayUniqueId) {
|
||||
displayUniqueId = newDisplayUniqueId
|
||||
newReloadToken ?.let { reloadToken = it }
|
||||
reloadRes()
|
||||
reloadMeasures()
|
||||
} else if (newReloadToken != null) {
|
||||
if (reloadToken == newReloadToken) {
|
||||
return
|
||||
}
|
||||
reloadToken = newReloadToken
|
||||
reloadMeasures()
|
||||
} else {
|
||||
newReloadToken?.let { reloadAll(it) }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1005,13 +1005,18 @@ public class ScreenDecorationsTest extends SysuiTestCase {
|
||||
assertEquals(new Size(3, 3), resDelegate.getTopRoundedSize());
|
||||
assertEquals(new Size(4, 4), resDelegate.getBottomRoundedSize());
|
||||
|
||||
doReturn(2f).when(mScreenDecorations).getPhysicalPixelDisplaySizeRatio();
|
||||
setupResources(20 /* radius */, 0 /* radiusTop */, 0 /* radiusBottom */,
|
||||
getTestsDrawable(com.android.systemui.tests.R.drawable.rounded4px)
|
||||
/* roundedTopDrawable */,
|
||||
getTestsDrawable(com.android.systemui.tests.R.drawable.rounded5px)
|
||||
/* roundedBottomDrawable */,
|
||||
0 /* roundedPadding */, true /* privacyDot */, false /* faceScanning*/);
|
||||
mDisplayInfo.rotation = Surface.ROTATION_270;
|
||||
|
||||
mScreenDecorations.onConfigurationChanged(null);
|
||||
|
||||
assertEquals(new Size(6, 6), resDelegate.getTopRoundedSize());
|
||||
assertEquals(new Size(8, 8), resDelegate.getBottomRoundedSize());
|
||||
assertEquals(new Size(4, 4), resDelegate.getTopRoundedSize());
|
||||
assertEquals(new Size(5, 5), resDelegate.getBottomRoundedSize());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -1287,6 +1292,51 @@ public class ScreenDecorationsTest extends SysuiTestCase {
|
||||
verifyFaceScanningViewExists(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnDisplayChanged_hwcLayer() {
|
||||
setupResources(0 /* radius */, 0 /* radiusTop */, 0 /* radiusBottom */,
|
||||
null /* roundedTopDrawable */, null /* roundedBottomDrawable */,
|
||||
0 /* roundedPadding */, false /* privacyDot */, false /* faceScanning */);
|
||||
final DisplayDecorationSupport decorationSupport = new DisplayDecorationSupport();
|
||||
decorationSupport.format = PixelFormat.R_8;
|
||||
doReturn(decorationSupport).when(mDisplay).getDisplayDecorationSupport();
|
||||
|
||||
// top cutout
|
||||
mMockCutoutList.add(new CutoutDecorProviderImpl(BOUNDS_POSITION_TOP));
|
||||
|
||||
mScreenDecorations.start();
|
||||
|
||||
final ScreenDecorHwcLayer hwcLayer = mScreenDecorations.mScreenDecorHwcLayer;
|
||||
spyOn(hwcLayer);
|
||||
doReturn(mDisplay).when(hwcLayer).getDisplay();
|
||||
|
||||
mScreenDecorations.mDisplayListener.onDisplayChanged(1);
|
||||
|
||||
verify(hwcLayer, times(1)).onDisplayChanged(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnDisplayChanged_nonHwcLayer() {
|
||||
setupResources(0 /* radius */, 0 /* radiusTop */, 0 /* radiusBottom */,
|
||||
null /* roundedTopDrawable */, null /* roundedBottomDrawable */,
|
||||
0 /* roundedPadding */, false /* privacyDot */, false /* faceScanning */);
|
||||
|
||||
// top cutout
|
||||
mMockCutoutList.add(new CutoutDecorProviderImpl(BOUNDS_POSITION_TOP));
|
||||
|
||||
mScreenDecorations.start();
|
||||
|
||||
final ScreenDecorations.DisplayCutoutView cutoutView = (ScreenDecorations.DisplayCutoutView)
|
||||
mScreenDecorations.getOverlayView(R.id.display_cutout);
|
||||
assertNotNull(cutoutView);
|
||||
spyOn(cutoutView);
|
||||
doReturn(mDisplay).when(cutoutView).getDisplay();
|
||||
|
||||
mScreenDecorations.mDisplayListener.onDisplayChanged(1);
|
||||
|
||||
verify(cutoutView, times(1)).onDisplayChanged(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHasSameProvidersWithNullOverlays() {
|
||||
setupResources(0 /* radius */, 0 /* radiusTop */, 0 /* radiusBottom */,
|
||||
|
||||
@@ -24,11 +24,12 @@ import androidx.annotation.DrawableRes
|
||||
import androidx.test.filters.SmallTest
|
||||
import com.android.internal.R as InternalR
|
||||
import com.android.systemui.R as SystemUIR
|
||||
import com.android.systemui.SysuiTestCase
|
||||
import com.android.systemui.tests.R
|
||||
import com.android.systemui.SysuiTestCase
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.Mock
|
||||
import org.mockito.MockitoAnnotations
|
||||
@@ -101,11 +102,14 @@ class RoundedCornerResDelegateTest : SysuiTestCase() {
|
||||
assertEquals(Size(3, 3), roundedCornerResDelegate.topRoundedSize)
|
||||
assertEquals(Size(4, 4), roundedCornerResDelegate.bottomRoundedSize)
|
||||
|
||||
roundedCornerResDelegate.physicalPixelDisplaySizeRatio = 2f
|
||||
setupResources(radius = 100,
|
||||
roundedTopDrawable = getTestsDrawable(R.drawable.rounded4px),
|
||||
roundedBottomDrawable = getTestsDrawable(R.drawable.rounded5px))
|
||||
|
||||
roundedCornerResDelegate.updateDisplayUniqueId(null, 1)
|
||||
|
||||
assertEquals(Size(6, 6), roundedCornerResDelegate.topRoundedSize)
|
||||
assertEquals(Size(8, 8), roundedCornerResDelegate.bottomRoundedSize)
|
||||
assertEquals(Size(4, 4), roundedCornerResDelegate.topRoundedSize)
|
||||
assertEquals(Size(5, 5), roundedCornerResDelegate.bottomRoundedSize)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user