Use the same transaction to set position of the leash

When a leash of an insets source is being created, it's initial position
would be set in InsetsSourceProvider.ControlAdapter#startAnimation. And
then, when the position changes, the new position would be set in
InsetsSourceProvider#onPostLayout. Both places should use the same
transaction. Otherwise, there is no guarantee which transaction will be
applied first.

Fix: 282880421
Test: Fold and unfold a foldable device. See if taskbar stays at bottom.
Change-Id: Ib959e91dd25bf1ddb34b25aecda45ffcd396c4c6
This commit is contained in:
Tiger
2023-06-06 20:35:15 +08:00
parent fb1f31f8ad
commit e614fc5e8e

View File

@@ -454,7 +454,7 @@ class InsetsSourceProvider {
if (mSource.getType() == WindowInsets.Type.ime()) {
setClientVisible(target.isRequestedVisible(WindowInsets.Type.ime()));
}
final Transaction t = mDisplayContent.getSyncTransaction();
final Transaction t = mWindowContainer.getSyncTransaction();
mWindowContainer.startAnimation(t, mAdapter, !mClientVisible /* hidden */,
ANIMATION_TYPE_INSETS_CONTROL);