Merge "Avoid waiting for drawn window without change" into udc-qpr-dev
This commit is contained in:
@@ -5703,8 +5703,7 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
|
|||||||
// window becomes visible while the sync group is still active.
|
// window becomes visible while the sync group is still active.
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (mSyncState == SYNC_STATE_WAITING_FOR_DRAW && mWinAnimator.mDrawState == HAS_DRAWN
|
if (mSyncState == SYNC_STATE_WAITING_FOR_DRAW && mLastConfigReportedToClient && isDrawn()) {
|
||||||
&& !mRedrawForSyncReported && !mWmService.mResizingWindows.contains(this)) {
|
|
||||||
// Complete the sync state immediately for a drawn window that doesn't need to redraw.
|
// Complete the sync state immediately for a drawn window that doesn't need to redraw.
|
||||||
onSyncFinishedDrawing();
|
onSyncFinishedDrawing();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,9 +40,7 @@ import static org.mockito.ArgumentMatchers.notNull;
|
|||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
|
|
||||||
import android.platform.test.annotations.Presubmit;
|
import android.platform.test.annotations.Presubmit;
|
||||||
import android.util.MergedConfiguration;
|
|
||||||
import android.view.SurfaceControl;
|
import android.view.SurfaceControl;
|
||||||
import android.window.ClientWindowFrames;
|
|
||||||
|
|
||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
|
|
||||||
@@ -333,8 +331,7 @@ public class SyncEngineTests extends WindowTestsBase {
|
|||||||
w.reparent(botChildWC, POSITION_TOP);
|
w.reparent(botChildWC, POSITION_TOP);
|
||||||
parentWC.prepareSync();
|
parentWC.prepareSync();
|
||||||
// Assume the window has drawn with the latest configuration.
|
// Assume the window has drawn with the latest configuration.
|
||||||
w.fillClientWindowFramesAndConfiguration(new ClientWindowFrames(),
|
makeLastConfigReportedToClient(w, true /* visible */);
|
||||||
new MergedConfiguration(), true /* useLatestConfig */, true /* relayoutVisible */);
|
|
||||||
assertTrue(w.onSyncFinishedDrawing());
|
assertTrue(w.onSyncFinishedDrawing());
|
||||||
assertEquals(SYNC_STATE_READY, w.mSyncState);
|
assertEquals(SYNC_STATE_READY, w.mSyncState);
|
||||||
w.reparent(topChildWC, POSITION_TOP);
|
w.reparent(topChildWC, POSITION_TOP);
|
||||||
|
|||||||
@@ -52,7 +52,6 @@ import android.graphics.Rect;
|
|||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
import android.platform.test.annotations.Presubmit;
|
import android.platform.test.annotations.Presubmit;
|
||||||
import android.util.MergedConfiguration;
|
|
||||||
import android.view.DisplayCutout;
|
import android.view.DisplayCutout;
|
||||||
import android.view.DisplayInfo;
|
import android.view.DisplayInfo;
|
||||||
import android.view.DisplayShape;
|
import android.view.DisplayShape;
|
||||||
@@ -63,7 +62,6 @@ import android.view.RoundedCorners;
|
|||||||
import android.view.Surface;
|
import android.view.Surface;
|
||||||
import android.view.SurfaceControl;
|
import android.view.SurfaceControl;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
import android.window.ClientWindowFrames;
|
|
||||||
|
|
||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
|
|
||||||
@@ -380,8 +378,7 @@ public class WallpaperControllerTests extends WindowTestsBase {
|
|||||||
wallpaperWindow.mLayoutSeq = mDisplayContent.mLayoutSeq;
|
wallpaperWindow.mLayoutSeq = mDisplayContent.mLayoutSeq;
|
||||||
// Assume the token was invisible and the latest config was reported.
|
// Assume the token was invisible and the latest config was reported.
|
||||||
wallpaperToken.commitVisibility(false);
|
wallpaperToken.commitVisibility(false);
|
||||||
wallpaperWindow.fillClientWindowFramesAndConfiguration(new ClientWindowFrames(),
|
makeLastConfigReportedToClient(wallpaperWindow, false /* visible */);
|
||||||
new MergedConfiguration(), true /* useLatestConfig */, false /* relayoutVisible */);
|
|
||||||
assertTrue(wallpaperWindow.isLastConfigReportedToClient());
|
assertTrue(wallpaperWindow.isLastConfigReportedToClient());
|
||||||
|
|
||||||
final Rect bounds = wallpaperToken.getBounds();
|
final Rect bounds = wallpaperToken.getBounds();
|
||||||
|
|||||||
@@ -1247,6 +1247,7 @@ public class WindowOrganizerTests extends WindowTestsBase {
|
|||||||
|
|
||||||
// A drawn window can complete the sync state automatically.
|
// A drawn window can complete the sync state automatically.
|
||||||
w1.mWinAnimator.mDrawState = WindowStateAnimator.HAS_DRAWN;
|
w1.mWinAnimator.mDrawState = WindowStateAnimator.HAS_DRAWN;
|
||||||
|
makeLastConfigReportedToClient(w1, true /* visible */);
|
||||||
mWm.mSyncEngine.onSurfacePlacement();
|
mWm.mSyncEngine.onSurfacePlacement();
|
||||||
verify(mockCallback).onTransactionReady(anyInt(), any());
|
verify(mockCallback).onTransactionReady(anyInt(), any());
|
||||||
assertFalse(w1.useBLASTSync());
|
assertFalse(w1.useBLASTSync());
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ import android.os.RemoteException;
|
|||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.service.voice.IVoiceInteractionSession;
|
import android.service.voice.IVoiceInteractionSession;
|
||||||
|
import android.util.MergedConfiguration;
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
import android.view.Display;
|
import android.view.Display;
|
||||||
import android.view.DisplayInfo;
|
import android.view.DisplayInfo;
|
||||||
@@ -102,6 +103,7 @@ import android.view.WindowInsets;
|
|||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
import android.view.WindowManager.DisplayImePolicy;
|
import android.view.WindowManager.DisplayImePolicy;
|
||||||
import android.view.inputmethod.ImeTracker;
|
import android.view.inputmethod.ImeTracker;
|
||||||
|
import android.window.ClientWindowFrames;
|
||||||
import android.window.ITransitionPlayer;
|
import android.window.ITransitionPlayer;
|
||||||
import android.window.ScreenCapture;
|
import android.window.ScreenCapture;
|
||||||
import android.window.StartingWindowInfo;
|
import android.window.StartingWindowInfo;
|
||||||
@@ -624,6 +626,11 @@ class WindowTestsBase extends SystemServiceTestsBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void makeLastConfigReportedToClient(WindowState w, boolean visible) {
|
||||||
|
w.fillClientWindowFramesAndConfiguration(new ClientWindowFrames(),
|
||||||
|
new MergedConfiguration(), true /* useLatestConfig */, visible);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the order of the given {@link Task} as its z-order in the hierarchy below this TDA.
|
* Gets the order of the given {@link Task} as its z-order in the hierarchy below this TDA.
|
||||||
* The Task can be a direct child of a child TaskDisplayArea. {@code -1} if not found.
|
* The Task can be a direct child of a child TaskDisplayArea. {@code -1} if not found.
|
||||||
|
|||||||
Reference in New Issue
Block a user