)]}'
{
  "commit": "7b246acbe0aee0bc26b5850cfdc422b89b3643f5",
  "tree": "6aba9feb42b8c164b5825b634e1161908c5bc2bf",
  "parents": [
    "c05c4e0ec183843b430e776def1b1e94b6fd8b73"
  ],
  "author": {
    "name": "Riddle Hsu",
    "email": "riddlehsu@google.com",
    "time": "Mon Dec 16 15:41:53 2024 +0800"
  },
  "committer": {
    "name": "Riddle Hsu",
    "email": "riddlehsu@google.com",
    "time": "Mon Dec 23 12:37:24 2024 +0800"
  },
  "message": "Ensure order of transaction for surface reparent\n\nThis avoids the case:\n(1) Pending transaction reparents a window to an animation leash.\n    Though it may come from some places that use pending transaction,\n    such as applyStartingWindowAnimationa and WS#startAnimation,\n    even if the callers use getSyncTransaction, it may still return\n    pending transaction if there is no sync state.\n(2) Sync transaction restores the window to original parent.\n(3) Sync transaction applies in shell.\n(4) Pending transaction applies in core (on vsync).\n\nThe expected result should be that the window still stay in its\noriginal parent. But the order will cause the window to be put in\nthe removed animation leash.\n\nSo this change makes sure the pending transaction is applied before\n(3) if surface animator uses pending transaction to reparent/remove.\n\nBug: 313329824\nBug: 384659191\nFlag: EXEMPT bugfix\nTest: TransitionTests#testTransitionVisibleChange\n\nChange-Id: Id35577ace8f1d83a8244bc54e6b899284ba6bfe0\n\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7deb6a8232beea875d8a273af71fc974f2a9aef4",
      "old_mode": 33188,
      "old_path": "services/core/java/com/android/server/wm/BLASTSyncEngine.java",
      "new_id": "dbe0faf942d974fbdb1c4b9b6a61129471582168",
      "new_mode": 33188,
      "new_path": "services/core/java/com/android/server/wm/BLASTSyncEngine.java"
    },
    {
      "type": "modify",
      "old_id": "9a48d5b8880d2d30e611bf065e07dd33deb706cc",
      "old_mode": 33188,
      "old_path": "services/core/java/com/android/server/wm/SurfaceAnimator.java",
      "new_id": "d7b6d96c781da6dac445cb69fc7b8caae75d0683",
      "new_mode": 33188,
      "new_path": "services/core/java/com/android/server/wm/SurfaceAnimator.java"
    },
    {
      "type": "modify",
      "old_id": "49c8559c02a866feb3221439c1bc8ae781da10e9",
      "old_mode": 33188,
      "old_path": "services/core/java/com/android/server/wm/WindowAnimator.java",
      "new_id": "790ae1eef0c3b21deda503c128d72397a8bbf581",
      "new_mode": 33188,
      "new_path": "services/core/java/com/android/server/wm/WindowAnimator.java"
    },
    {
      "type": "modify",
      "old_id": "78f32c1a4f881c3d94d56ba35b99f9e7b746c090",
      "old_mode": 33188,
      "old_path": "services/tests/wmtests/src/com/android/server/wm/TransitionTests.java",
      "new_id": "143cf551a28e5e47111a588e7adbd7b94a0741eb",
      "new_mode": 33188,
      "new_path": "services/tests/wmtests/src/com/android/server/wm/TransitionTests.java"
    }
  ]
}
