diff options
| -rw-r--r-- | services/core/java/com/android/server/wm/BLASTSyncEngine.java | 7 | ||||
| -rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/SyncEngineTests.java | 18 |
2 files changed, 15 insertions, 10 deletions
diff --git a/services/core/java/com/android/server/wm/BLASTSyncEngine.java b/services/core/java/com/android/server/wm/BLASTSyncEngine.java index d3452277a29f..cd26e2eb9c53 100644 --- a/services/core/java/com/android/server/wm/BLASTSyncEngine.java +++ b/services/core/java/com/android/server/wm/BLASTSyncEngine.java @@ -226,6 +226,9 @@ class BLASTSyncEngine { } private void setReady(boolean ready) { + if (mReady == ready) { + return; + } ProtoLog.v(WM_DEBUG_SYNC_ENGINE, "SyncGroup %d: Set ready", mSyncId); mReady = ready; if (!ready) return; @@ -239,7 +242,9 @@ class BLASTSyncEngine { ProtoLog.v(WM_DEBUG_SYNC_ENGINE, "SyncGroup %d: Adding to group: %s", mSyncId, wc); wc.setSyncGroup(this); wc.prepareSync(); - mWm.mWindowPlacerLocked.requestTraversal(); + if (mReady) { + mWm.mWindowPlacerLocked.requestTraversal(); + } } void onCancelSync(WindowContainer wc) { diff --git a/services/tests/wmtests/src/com/android/server/wm/SyncEngineTests.java b/services/tests/wmtests/src/com/android/server/wm/SyncEngineTests.java index d3aa073c84d8..df7b3cdebe28 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SyncEngineTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/SyncEngineTests.java @@ -74,15 +74,15 @@ public class SyncEngineTests extends WindowTestsBase { int id = startSyncSet(bse, listener); bse.addToSyncSet(id, mockWC); - // Make sure a traversal is requested - verify(mWm.mWindowPlacerLocked, times(1)).requestTraversal(); + // The traversal is not requested because ready is not set. + verify(mWm.mWindowPlacerLocked, times(0)).requestTraversal(); bse.onSurfacePlacement(); verify(listener, times(0)).onTransactionReady(anyInt(), any()); bse.setReady(id); // Make sure a traversal is requested - verify(mWm.mWindowPlacerLocked, times(2)).requestTraversal(); + verify(mWm.mWindowPlacerLocked).requestTraversal(); bse.onSurfacePlacement(); verify(listener, times(1)).onTransactionReady(eq(id), notNull()); @@ -103,14 +103,14 @@ public class SyncEngineTests extends WindowTestsBase { int id = startSyncSet(bse, listener); bse.addToSyncSet(id, mockWC); bse.setReady(id); - // Make sure traversals requested (one for add and another for setReady) - verify(mWm.mWindowPlacerLocked, times(2)).requestTraversal(); + // Make sure traversals requested. + verify(mWm.mWindowPlacerLocked).requestTraversal(); bse.onSurfacePlacement(); verify(listener, times(0)).onTransactionReady(anyInt(), any()); mockWC.onSyncFinishedDrawing(); - // Make sure a (third) traversal is requested. - verify(mWm.mWindowPlacerLocked, times(3)).requestTraversal(); + // Make sure the second traversal is requested. + verify(mWm.mWindowPlacerLocked, times(2)).requestTraversal(); bse.onSurfacePlacement(); verify(listener, times(1)).onTransactionReady(eq(id), notNull()); } @@ -127,8 +127,8 @@ public class SyncEngineTests extends WindowTestsBase { int id = startSyncSet(bse, listener); bse.addToSyncSet(id, mockWC); bse.setReady(id); - // Make sure traversals requested (one for add and another for setReady) - verify(mWm.mWindowPlacerLocked, times(2)).requestTraversal(); + // Make sure traversals requested. + verify(mWm.mWindowPlacerLocked).requestTraversal(); bse.onSurfacePlacement(); verify(listener, times(0)).onTransactionReady(anyInt(), any()); |