Merge "ViewRootImpl: Ensure seqId only increases" into tm-dev am: 169f3d8c61
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17571369 Change-Id: I29489b7be45ee19b5643742e777205ddfa2b9992 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -1742,7 +1742,7 @@ public final class ViewRootImpl implements ViewParent,
|
|||||||
|
|
||||||
mForceNextWindowRelayout = forceNextWindowRelayout;
|
mForceNextWindowRelayout = forceNextWindowRelayout;
|
||||||
mPendingAlwaysConsumeSystemBars = args.argi2 != 0;
|
mPendingAlwaysConsumeSystemBars = args.argi2 != 0;
|
||||||
mSyncSeqId = args.argi4;
|
mSyncSeqId = args.argi4 > mSyncSeqId ? args.argi4 : mSyncSeqId;
|
||||||
|
|
||||||
if (msg == MSG_RESIZED_REPORT) {
|
if (msg == MSG_RESIZED_REPORT) {
|
||||||
reportNextDraw();
|
reportNextDraw();
|
||||||
@@ -7986,7 +7986,10 @@ public final class ViewRootImpl implements ViewParent,
|
|||||||
insetsPending ? WindowManagerGlobal.RELAYOUT_INSETS_PENDING : 0,
|
insetsPending ? WindowManagerGlobal.RELAYOUT_INSETS_PENDING : 0,
|
||||||
mTmpFrames, mPendingMergedConfiguration, mSurfaceControl, mTempInsets,
|
mTmpFrames, mPendingMergedConfiguration, mSurfaceControl, mTempInsets,
|
||||||
mTempControls, mRelayoutBundle);
|
mTempControls, mRelayoutBundle);
|
||||||
mSyncSeqId = mRelayoutBundle.getInt("seqid");
|
final int maybeSyncSeqId = mRelayoutBundle.getInt("seqid");
|
||||||
|
if (maybeSyncSeqId > 0) {
|
||||||
|
mSyncSeqId = maybeSyncSeqId;
|
||||||
|
}
|
||||||
|
|
||||||
if (mTranslator != null) {
|
if (mTranslator != null) {
|
||||||
mTranslator.translateRectInScreenToAppWindow(mTmpFrames.frame);
|
mTranslator.translateRectInScreenToAppWindow(mTmpFrames.frame);
|
||||||
|
|||||||
@@ -6125,14 +6125,21 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP
|
|||||||
applyHere = true;
|
applyHere = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = mDrawHandlers.size() - 1; i >= 0; i--) {
|
final List<DrawHandler> handlersToRemove = new ArrayList<>();
|
||||||
DrawHandler h = mDrawHandlers.get(i);
|
// Iterate forwards to ensure we process in the same order
|
||||||
|
// we added.
|
||||||
|
for (int i = 0; i < mDrawHandlers.size(); i++) {
|
||||||
|
final DrawHandler h = mDrawHandlers.get(i);
|
||||||
if (h.mSeqId <= seqId) {
|
if (h.mSeqId <= seqId) {
|
||||||
h.mConsumer.accept(t);
|
h.mConsumer.accept(t);
|
||||||
mDrawHandlers.remove(h);
|
handlersToRemove.add(h);
|
||||||
hadHandlers = true;
|
hadHandlers = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for (int i = 0; i < handlersToRemove.size(); i++) {
|
||||||
|
final DrawHandler h = handlersToRemove.get(i);
|
||||||
|
mDrawHandlers.remove(h);
|
||||||
|
}
|
||||||
|
|
||||||
if (hadHandlers) {
|
if (hadHandlers) {
|
||||||
mWmService.mH.removeMessages(WINDOW_STATE_BLAST_SYNC_TIMEOUT, this);
|
mWmService.mH.removeMessages(WINDOW_STATE_BLAST_SYNC_TIMEOUT, this);
|
||||||
|
|||||||
Reference in New Issue
Block a user