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

Commit 07b647de authored by Riddle Hsu's avatar Riddle Hsu Committed by Android (Google) Code Review
Browse files

Merge "Avoid premature redraw of display cutout" into main

parents 851062a3 32cda054
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1250,6 +1250,11 @@ public class ScreenDecorations implements
        if (mOverlays == null) {
            return;
        }
        if (mPendingConfigChange) {
            // Let RestartingPreDrawListener's onPreDraw call updateConfiguration
            // -> updateOverlayProviderViews to redraw with display change synchronously.
            return;
        }
        ++mProviderRefreshToken;
        for (final OverlayWindow overlay: mOverlays) {
            if (overlay == null) {
+19 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.isA;
import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.doCallRealMethod;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
@@ -1181,6 +1182,24 @@ public class ScreenDecorationsTest extends SysuiTestCase {
        assertThat(mScreenDecorations.mIsRegistered, is(false));
    }

    @Test
    public void testUpdateOverlayProviderViews_PendingConfigChange() {
        final DecorProvider cutout = new CutoutDecorProviderImpl(BOUNDS_POSITION_TOP);
        spyOn(cutout);
        doNothing().when(cutout).onReloadResAndMeasure(any(), anyInt(), anyInt(), anyInt(), any());
        mMockCutoutList.add(cutout);
        mScreenDecorations.start();
        doCallRealMethod().when(mScreenDecorations).updateOverlayProviderViews(any());

        mScreenDecorations.mPendingConfigChange = true;
        mScreenDecorations.updateOverlayProviderViews(null /* filterIds */);
        verify(cutout, never()).onReloadResAndMeasure(any(), anyInt(), anyInt(), anyInt(), any());

        mScreenDecorations.mPendingConfigChange = false;
        mScreenDecorations.updateOverlayProviderViews(null /* filterIds */);
        verify(cutout).onReloadResAndMeasure(any(), anyInt(), anyInt(), anyInt(), any());
    }

    @Test
    public void testSupportHwcLayer_SwitchFrom_NotSupport() {
        setupResources(0 /* radius */, 10 /* radiusTop */, 20 /* radiusBottom */,