)]}'
{
  "commit": "31d41415101ff3483ce1cc5a9c2ef322490a05bd",
  "tree": "51feecfad099fa5912b1f8dda8bc3260b644bfa4",
  "parents": [
    "1d104209a2f9958241459813a5cb48f254699ac2"
  ],
  "author": {
    "name": "Leon Scroggins III",
    "email": "scroggo@google.com",
    "time": "Fri Nov 18 16:42:53 2022 -0500"
  },
  "committer": {
    "name": "Leon Scroggins III",
    "email": "scroggo@google.com",
    "time": "Wed Feb 01 12:44:06 2023 -0500"
  },
  "message": "Create a VsyncSchedule per display\n\nIn order to determine the vsync offsets between displays, keep track of\na VsyncSchedule for each display.\n\nStore the VsyncSchedules in a SmallMap. Update getVsyncSchedule with a\nparameter to choose the display. The default parameter uses the leader\u0027s\ndisplay, which is what current external callers want.\n\nUpdate VsyncDispatches when the leader changes, so that they are always\nlistening to the leader.\n\nEnable and disable vsync callbacks per display. Earlier attempts to turn\nthem on and off together could leave a secondary display on a bad\nschedule. Move state and logic for enabling/disabling the callbacks into\nVsyncSchedule. Add a method for resyncing all displays at once.\n\nUse std::shared_ptrs for VsyncDispatches. This prevents lifetime issues\nif a VsyncSchedule gets removed while its VsyncDispatch is still in use.\nSame for VsyncTracker, which is referenced by VsyncDispatch.\n\nWhen the leader VsyncSchedule changes, call cancel on\nVsyncCallbackRegistrations and replace them with new ones using the new\nVsyncDispatches. If a callback was scheduled, schedule a new one.\n\nUpdate VsyncSchedule\u0027s members\u0027 traces so that there is a separate track\nfor each display.\n\nMove SF\u0027s record of the last HWC Vsync states into VsyncSchedule, so it\nsits with other related logic. Remove the pending HWC Vsync state, which\ndid not affect behavior.\n\nFor refresh rate changes, modulate vsync config based on the leader\ndisplay. When switching leaders, force a period transition to ensure\nthat a potential refresh rate change is completed.\n\nBug: 255601557\nBug: 256196556\nBug: 241285473\nBug: 241286146\nTest: libsurfaceflinger_unittest\nTest: manual (look at perfetto traces)\nChange-Id: If60218e85292c786b9fa70ecb33ee374d3a385e0\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6199a5ae40be1c50c1b8663891d3b53e0db09a36",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/CompositionEngine/tests/MockHWComposer.h",
      "new_id": "933f6168c930d92e3d5c586289f7cec75a884498",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/CompositionEngine/tests/MockHWComposer.h"
    },
    {
      "type": "modify",
      "old_id": "7dde6b4e440d995d65cbb5b440e9ad2c3c708997",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/DisplayHardware/HWComposer.cpp",
      "new_id": "8e74716efac3b2ce2857918cda6a9ff57d951310",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/DisplayHardware/HWComposer.cpp"
    },
    {
      "type": "modify",
      "old_id": "f6155d24add5b520b82dfe1248d54c0aa04c2db8",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/DisplayHardware/HWComposer.h",
      "new_id": "acebfb2362f3f7b782c8ec01add6af79d3b0abaf",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/DisplayHardware/HWComposer.h"
    },
    {
      "type": "modify",
      "old_id": "a902a8ebde8f74377d0c712ed0d1fb3dc512ab48",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/Scheduler/EventThread.cpp",
      "new_id": "76e9416fec9ce0eec435378c1a65c8eefbca9b4e",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/Scheduler/EventThread.cpp"
    },
    {
      "type": "modify",
      "old_id": "ab9085e44a3bc8e302afaa67b5d074c7965aa49d",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/Scheduler/EventThread.h",
      "new_id": "b86553bebe58a774399758ade72ed988d4839d1e",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/Scheduler/EventThread.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "92c21892444ada990772c4c18e8fd209a3525c6a",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/Scheduler/ISchedulerCallback.h"
    },
    {
      "type": "modify",
      "old_id": "dec8f59ee9a1a4cc5e79a95d4af54d83167026a3",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/Scheduler/MessageQueue.cpp",
      "new_id": "925f7395341d7bb98d03302882162139848cb21f",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/Scheduler/MessageQueue.cpp"
    },
    {
      "type": "modify",
      "old_id": "0d593379502e5aadc89ce21f4a48635cfd99fdad",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/Scheduler/MessageQueue.h",
      "new_id": "ecb237d1283a2f16bb1db91205466c8b7515ec8a",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/Scheduler/MessageQueue.h"
    },
    {
      "type": "modify",
      "old_id": "f95646c48fec852f0ca9387a920db4b6e5b2fa09",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/Scheduler/OneShotTimer.h",
      "new_id": "02e8719c0802dc1046df419f6210f21fde8268cc",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/Scheduler/OneShotTimer.h"
    },
    {
      "type": "modify",
      "old_id": "33c98ff6d57d16a9514d6c86ba929765111d2f61",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/Scheduler/Scheduler.cpp",
      "new_id": "e6f46655fc55cfd5f27f0f014429c37f9bb425a3",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/Scheduler/Scheduler.cpp"
    },
    {
      "type": "modify",
      "old_id": "e8224481c6506638eb63433760defacbfa19f807",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/Scheduler/Scheduler.h",
      "new_id": "8dc2def113ec0be6ec8da0da0a7ba9aad1eed887",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/Scheduler/Scheduler.h"
    },
    {
      "type": "modify",
      "old_id": "95201314a48b71a3969939bfad3de4273482837e",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/Scheduler/VSyncDispatch.h",
      "new_id": "77875e3b4d41017d0a8b555d10d895f5946ba06c",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/Scheduler/VSyncDispatch.h"
    },
    {
      "type": "modify",
      "old_id": "73d52cf986d87da3e721abab8a5acaa0abcc0c7c",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/Scheduler/VSyncDispatchTimerQueue.cpp",
      "new_id": "26389eb8cc6956959930aa4ce57ccda0c65e62a1",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/Scheduler/VSyncDispatchTimerQueue.cpp"
    },
    {
      "type": "modify",
      "old_id": "c3af136d66d67ed9e66ff10cb554777ad28036da",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/Scheduler/VSyncDispatchTimerQueue.h",
      "new_id": "6499d69969864c32387df77bb3a3ba9dddca3e28",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/Scheduler/VSyncDispatchTimerQueue.h"
    },
    {
      "type": "modify",
      "old_id": "02e12fd942bfb5beccfb063718932fbd33ea7478",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/Scheduler/VSyncPredictor.cpp",
      "new_id": "a3b8a5619d1c895b1b839fd09186f8355f3ca10d",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/Scheduler/VSyncPredictor.cpp"
    },
    {
      "type": "modify",
      "old_id": "305cdb0d56f536d1911fd8e27b60ed1d1fd1880c",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/Scheduler/VSyncPredictor.h",
      "new_id": "1ded54f768684867adb6a2d12ac1bfad505ff66e",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/Scheduler/VSyncPredictor.h"
    },
    {
      "type": "modify",
      "old_id": "b5f212e085bd581a096bfeabedab799b1a61e13f",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/Scheduler/VSyncReactor.cpp",
      "new_id": "a831f6624dd518c610575acfa96ba4583ce6670e",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/Scheduler/VSyncReactor.cpp"
    },
    {
      "type": "modify",
      "old_id": "45014873927fdcabf523466d1f2b2a56b5e07316",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/Scheduler/VSyncReactor.h",
      "new_id": "fd9ca42f28e0da1688007d5ce933664fa3b336f6",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/Scheduler/VSyncReactor.h"
    },
    {
      "type": "modify",
      "old_id": "726a42064922261251a721b55c9c8759790a4190",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/Scheduler/VsyncController.h",
      "new_id": "917789934a8498f3a4a6e0b4690d618ba338419e",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/Scheduler/VsyncController.h"
    },
    {
      "type": "modify",
      "old_id": "95bc31f239cf29079f16c61b8196eef5ac6bb1fe",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/Scheduler/VsyncSchedule.cpp",
      "new_id": "951c1eca256e1ea8ce54874bc1d9860c4b1abf87",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/Scheduler/VsyncSchedule.cpp"
    },
    {
      "type": "modify",
      "old_id": "173b1d00cf1ed1e6eb3efd537aa21ee1b8c30515",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/Scheduler/VsyncSchedule.h",
      "new_id": "ffb7ad5b42e6d59c27fc1818e8c8a768bcbce236",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/Scheduler/VsyncSchedule.h"
    },
    {
      "type": "modify",
      "old_id": "43483e475b48ec12bd2964e28a341ddf28e4e58a",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/SurfaceFlinger.cpp",
      "new_id": "6020aba4fd8faf5abec1d436e16de5595b4b2946",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/SurfaceFlinger.cpp"
    },
    {
      "type": "modify",
      "old_id": "5b9bfd80f9e23c66a67664c323e72b04ff44edfe",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/SurfaceFlinger.h",
      "new_id": "1eb1fdaa482f8dbe26e5f361220b86b8c2a015b4",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/SurfaceFlinger.h"
    },
    {
      "type": "modify",
      "old_id": "cdffbb47240eddf7eaf8cf45365b1a1bc1ebcab0",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/fuzzer/surfaceflinger_fuzzers_utils.h",
      "new_id": "5303db314c4d8984ea2444ae2cd5173a012831b7",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/fuzzer/surfaceflinger_fuzzers_utils.h"
    },
    {
      "type": "modify",
      "old_id": "44805dba824f2042dd0e49eb81810859dad47635",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/fuzzer/surfaceflinger_scheduler_fuzzer.cpp",
      "new_id": "b7b42ab18d4effe603376ac0d3ccc16fad0bd48a",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/fuzzer/surfaceflinger_scheduler_fuzzer.cpp"
    },
    {
      "type": "modify",
      "old_id": "0416e93f1e7e4c266f6f5f52196ad3419fa48349",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/CompositionTest.cpp",
      "new_id": "419c818e0e550c5f12b92511740b155f07d560ea",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/CompositionTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "e0b508aa73e725d80a1be69641894414d15e1107",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/DisplayTransactionTest.cpp",
      "new_id": "214b02888fa9a8af9410474ca211dd0370803de4",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/DisplayTransactionTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "223f4db8890287c40e2a4b1959fa512e4bf62dce",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/DisplayTransactionTestHelpers.h",
      "new_id": "c9245d6d9744f06d1b4556dd900a4e3aa224911b",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/DisplayTransactionTestHelpers.h"
    },
    {
      "type": "modify",
      "old_id": "b3aba377ee90c082fdf9c266994ce1f383db1d3b",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/EventThreadTest.cpp",
      "new_id": "5cecb8eb194e680372795efa9a3283b5a3445193",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/EventThreadTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "1cd9e49051d9e23ba5b43cbfce07e5cde2e2b176",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/FpsReporterTest.cpp",
      "new_id": "248061cc309a7a636a8f78a45dc8dd248452acea",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/FpsReporterTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "ac63a0edbdb9e4265078738e3369783ae7ce5c0d",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/FrameRateSelectionPriorityTest.cpp",
      "new_id": "ff7c2c98ba632c8e97248dc46d9ebbe34d6f31d0",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/FrameRateSelectionPriorityTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "29aa7171bae13b88b63f2d429a95831f0666b780",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/GameModeTest.cpp",
      "new_id": "ddf871b5ce525ec87f228a9df9fbf7a55a1c7119",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/GameModeTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "afbc57add8a48fd73c6ffe4174972cbe8cb13095",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/HWComposerTest.cpp",
      "new_id": "9534f3b548cac8d206ef6a89679e440fe2244c04",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/HWComposerTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "ee42e19c34800b961d40cc9379824ae904028815",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/LayerTestUtils.cpp",
      "new_id": "23506b13e9e12fc480a2d3272a6cd0db42becc41",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/LayerTestUtils.cpp"
    },
    {
      "type": "modify",
      "old_id": "7aa5201f2f48c17bd52586ea2682ce99fc482330",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/MessageQueueTest.cpp",
      "new_id": "8f1b450b066832591f60e301bac4ce667a691bf7",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/MessageQueueTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "4b15385fa82b5ac257e3e180c769ba9c4281ac4d",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/SchedulerTest.cpp",
      "new_id": "f0dd06d75825c7637805dd51418853e325148b05",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/SchedulerTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "ad3bd353ed21f02a10efae9cdf02adfb81f4e7e2",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/SurfaceFlinger_DisplayModeSwitching.cpp",
      "new_id": "31f948fd6810a0235e7871fc80f55a4eb28f4442",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/SurfaceFlinger_DisplayModeSwitching.cpp"
    },
    {
      "type": "modify",
      "old_id": "f553a23f3c9f70e6d2b230d521bb54d050428c86",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/SurfaceFlinger_OnInitializeDisplaysTest.cpp",
      "new_id": "98644aa89deccaf6b725933f97d82c63d7a31723",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/SurfaceFlinger_OnInitializeDisplaysTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "622717f290efba43e3121f1f049559c91bd0c29f",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/SurfaceFlinger_PowerHintTest.cpp",
      "new_id": "2a0f2efb7578b3a02a094c31697f7f93efb8b6e4",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/SurfaceFlinger_PowerHintTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "ab732ed48565d5e3ec0586fb9fbfafaf5f295516",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/SurfaceFlinger_SetPowerModeInternalTest.cpp",
      "new_id": "80ad22cebe3440588ba90e0f0a1fc62f1dc90060",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/SurfaceFlinger_SetPowerModeInternalTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "fed6a1ae56e1b1afee50b147796a8fc40fbc0e20",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/SurfaceFlinger_UpdateLayerMetadataSnapshotTest.cpp",
      "new_id": "7e1458806bee0fd83d873a9c889037c95c484091",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/SurfaceFlinger_UpdateLayerMetadataSnapshotTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "6cf61416c0c188922747f199419573e8015ca0b2",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/TestableScheduler.h",
      "new_id": "c360f934f8e2ec7069d866cd3b5941f820a8f630",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/TestableScheduler.h"
    },
    {
      "type": "modify",
      "old_id": "68c738fc9d34422c587321dc70d87c2cd5f357d7",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h",
      "new_id": "63b79a4436bc622dc6acf0de57189b634b6a9481",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h"
    },
    {
      "type": "modify",
      "old_id": "859f702fe738a1148e912c9eaac897979a240f23",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/TransactionApplicationTest.cpp",
      "new_id": "a9a617bfa10c9c66726e515eb44864a81ec97941",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/TransactionApplicationTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "1173d1c876ba7f5c95f6af3804b96556c9884a3f",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/TransactionFrameTracerTest.cpp",
      "new_id": "b228bcbbd23635a838dfc6e58c1476f7edbc74c4",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/TransactionFrameTracerTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "ae03db43a75385d0169fbd1a05388227fbf497e5",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/TransactionSurfaceFrameTest.cpp",
      "new_id": "bfebecd2e2c94c873e69a4081665a09f452d898a",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/TransactionSurfaceFrameTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "da87f1db173696d982cce4c8fa9a18d6e2db9aea",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/TunnelModeEnabledReporterTest.cpp",
      "new_id": "aa33716ed87c5cac305a7977612a08cc18027208",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/TunnelModeEnabledReporterTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "47c2deef51d403580408cef243b17789a01752d9",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/VSyncDispatchRealtimeTest.cpp",
      "new_id": "fcd2f562d7f654983ec2b6fb1262571147bdb179",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/VSyncDispatchRealtimeTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "14a28603780cdeeac8be4c67a7ebc2e3b14035f0",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/VSyncDispatchTimerQueueTest.cpp",
      "new_id": "82daffd28d84af412d8a5a70bd50f82774442cd4",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/VSyncDispatchTimerQueueTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "3095e8aa9ad50f35dfd826a18d33648064933b74",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/VSyncPredictorTest.cpp",
      "new_id": "7947a5e97a621c58decb7e60553f9ed611dae6a4",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/VSyncPredictorTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "1fb2709f8dcef290bb099e400a2d1ec5756c6391",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/VSyncReactorTest.cpp",
      "new_id": "a2de1360ebbeb0cad1f91bf1146f89243954f07a",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/VSyncReactorTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "f8567bd6364847489b683bb1d20d1c191db28905",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/mock/MockEventThread.h",
      "new_id": "3a6068ae886ec33648852f20518b1a57a6c0fc29",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/mock/MockEventThread.h"
    },
    {
      "type": "modify",
      "old_id": "7d4b159e5eca4c0a528cb046ba3e90058f078a3a",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/mock/MockSchedulerCallback.h",
      "new_id": "a8eca2192f243e381c59ff3da11124c50e7f97d1",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/mock/MockSchedulerCallback.h"
    },
    {
      "type": "modify",
      "old_id": "4ef91dacb24997ad52bdd68ab2e904c555add4f5",
      "old_mode": 33188,
      "old_path": "services/surfaceflinger/tests/unittests/mock/MockVsyncController.h",
      "new_id": "69ec60acd4b91360873703fa3c7ac6a38c45c7ac",
      "new_mode": 33188,
      "new_path": "services/surfaceflinger/tests/unittests/mock/MockVsyncController.h"
    }
  ]
}
