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

Commit 472d2a5f authored by Shawn Lin's avatar Shawn Lin
Browse files

Revert "Fix flicker when swiching resolution change"

This reverts commit 808e22ea.

Reason for revert: b/249575831

Change-Id: Ic36d84042216f42bed7122b1cc355100cf542f3e
parent 808e22ea
Loading
Loading
Loading
Loading
+32 −2
Original line number Diff line number Diff line
@@ -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);
+11 −6
Original line number Diff line number Diff line
@@ -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) }
        }
    }

+53 −3
Original line number Diff line number Diff line
@@ -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 */,
+8 −4
Original line number Diff line number Diff line
@@ -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