)]}'
{
  "log": [
    {
      "commit": "b552167471c48a22eec834b6c0ad0d5d623ab4e5",
      "tree": "fb35edad13fdd263f4db6e786cfb6ad73b48000b",
      "parents": [
        "9d52f998792fae5c7f061c093e197f14c6361758",
        "8db101095526c49a58fd54bfb9d3501ea5351027"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Mar 23 17:11:28 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 23 17:11:28 2021 +0000"
      },
      "message": "Merge \"SurfaceFlinger: remove SurfaceControl level vsyncId setting\" into sc-dev"
    },
    {
      "commit": "fa8dc0f665e708ffcaedaa2837ecc677cf4c6459",
      "tree": "baba89a93f7a70e59cd9d9a60541c1608afde680",
      "parents": [
        "b05e90288e6e0179bd06c33bd9cadc349eb2879b",
        "debd1cbcd488becc629293cfcc4fc5b2ee4ef8b2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 22 19:39:46 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 22 19:39:46 2021 +0000"
      },
      "message": "Merge \"Remove legacy disable triple buffering config\" into sc-dev"
    },
    {
      "commit": "f9bd241320d521d8fc7dad00262efc1479a57514",
      "tree": "041110eb1410b946d992fc6482c76ef835f25441",
      "parents": [
        "81a9915ec7dffe4e553c1a9ccf7a58d994ba3cc5"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Mar 19 12:50:14 2021 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Mar 19 19:54:49 2021 +0000"
      },
      "message": "SF: disable frame rate override by default\n\nBug: 176940105\nTest: atest FrameRateOverrideHostTest\nChange-Id: I576821aafb161fe41abbc778c0635eae77e5f37c\n"
    },
    {
      "commit": "81a9915ec7dffe4e553c1a9ccf7a58d994ba3cc5",
      "tree": "9e962309f49c7aa88458b86a2e75b6195612aa65",
      "parents": [
        "492ff41f26fda887c1facbfe6d28d10f0782d800",
        "8cbd3075e57963c7bfc2e863cca3d7d2176e3e73"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Mar 19 17:39:20 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 19 17:39:20 2021 +0000"
      },
      "message": "Merge changes from topic \"eEarlyWakeup_remove\" into sc-dev\n\n* changes:\n  SF: rename ExplicitEarlyWakeup -\u003e EarlyWakeup\n  SurfaceFlinger: remove ISurfaceComposer::eEarlyWakeup\n"
    },
    {
      "commit": "112b272ba44409e27d38ea3b3830314f39be4118",
      "tree": "ab99e5eb8243b1c0e0c0ba255fffeaf8740fa168",
      "parents": [
        "d5ecb64ef43ea1e6fb85c1abe2bd9d679bc3df9b",
        "bb100afd74c97633c0e57861bb6d2c7c6bf2bbde"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 19 15:39:19 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 19 15:39:19 2021 +0000"
      },
      "message": "Merge \"SF: add vsync id to onMessageReceived trace\" into sc-dev"
    },
    {
      "commit": "8db101095526c49a58fd54bfb9d3501ea5351027",
      "tree": "16d44170fbaf3a25181ecbb74cb632654845df3a",
      "parents": [
        "10bc3ecd4717936f37e7f6e714edcfc0300d0801"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 17:19:23 2021 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Mar 18 17:53:29 2021 -0700"
      },
      "message": "SurfaceFlinger: remove SurfaceControl level vsyncId setting\n\nFrameTimelineInfo can be set on the entire transaction, or for an\nindividual SurfaceControl. Later in the code the FrameTimelineInfo\nis unified based on the most recent vsyncId. For this reason we are\nremoving the setting of a FrameTimelineInfo on a SurfaceControl and\ninstead we use the transaction\u0027s one.\n\nTest: adb shell /data/nativetest64/SurfaceFlinger_test/SurfaceFlinger_test\nBug: 181978893\nBug: 169901895\nChange-Id: Id4a8e46d57fbda66f6d478be82313482053dce20\n"
    },
    {
      "commit": "bb100afd74c97633c0e57861bb6d2c7c6bf2bbde",
      "tree": "e90842e86a6d6cea1d14b66693b640359c194515",
      "parents": [
        "4f4734e11c4872107c074976facafc644be78e22"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Mar 18 11:48:43 2021 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Mar 18 11:49:56 2021 -0700"
      },
      "message": "SF: add vsync id to onMessageReceived trace\n\nTest: capture a systrace\nBug: 170914689\nChange-Id: I4e59478caedb9f47e276c59fbab3e7cede9c7369\n"
    },
    {
      "commit": "debd1cbcd488becc629293cfcc4fc5b2ee4ef8b2",
      "tree": "2d67513c486a69c7525de3080534d81543e98db6",
      "parents": [
        "2bbc3a88bd653c050ea270b6456747b40a44c5b3"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Mar 16 10:06:01 2021 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Mar 18 18:33:22 2021 +0000"
      },
      "message": "Remove legacy disable triple buffering config\n\nThe config changes the dequeue limit of BQ (setMaxDequeuedBufferCount) from 2 to 1,  decreasing the default size of the queue from (3 to 2).\nSome of the motivations behind this change include:\n- not applicable in most scenarios since producers in the system override this\n- breaks async mode, not well tested in other scenarios\n- simplifying some of the implementation and removes a configuration/flag.\n\nClients can still manually call setMaxDequeuedBufferCount if they wish.\n\nTest: presubmit\nFixes: 182314340\nChange-Id: Iea88e8a795b91ff325610cfb1eefbcfe6e434841\n"
    },
    {
      "commit": "1506b181085e1f2156283d0e7b62fe94a918427f",
      "tree": "e712ebf2d2f90c5c76600b29f9637ddb1955573d",
      "parents": [
        "3fabf687ee63461d1aad186ae540156aa7765b25"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Mon Feb 22 14:35:15 2021 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Mar 17 15:58:29 2021 +0000"
      },
      "message": "Introduce release buffer callback for BufferStateLayer\n\nCurrently BLAST clients use the TransactionCompleted callbacks to\ndetermine when to release buffers. The TransactionCompleted callback\nis overloaded. For transactions without buffers, the callback is\ncalled when the transaction is applied on the server. If the\nTransaction contains one or more buffers, the callback is called when\nall the buffers are latched and ready to be presented. If we have\nmultiple buffers on multiple transactions, where one or more buffers\nmaybe dropped, the pending callbacks are called together. This may\ndelay signaling the client when a buffer can be released.\n\nTo fix this, we introduce a new buffer release callback that is\ncalled as soon as a buffer is dropped by the server or when a new\nbuffer has been latched and the buffer will no longer be presented.\nThis new callback provides a graphic bufferid to identify the buffer\nthat can be released and a release fence to wait on.\n\nBlastBufferQueue has been switched to use this new callback. Other\nBLAST users continue to use the existing callback.\n\nTest: go/wm-smoke\nTest: atest ReleaseBufferCallbackTest\nBug: 178385281\n\nChange-Id: Idd88e4994e543443198a5a8cfa0e3f5f67d5d482\n"
    },
    {
      "commit": "3fabf687ee63461d1aad186ae540156aa7765b25",
      "tree": "b79e99d05e49fe196e2ce631331a9388e884ce8e",
      "parents": [
        "b6d93924dcf5777376454212c2d5964e7fb89e98",
        "22be6961e9d4579e926124c5b972c62a45da2451"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 17 02:01:53 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 17 02:01:53 2021 +0000"
      },
      "message": "Merge \"Expand setBrightness to take BrightnessInfo object\" into sc-dev"
    },
    {
      "commit": "2bbc3a88bd653c050ea270b6456747b40a44c5b3",
      "tree": "bb35b9c3c8b44daf3929d5f61f00263579242344",
      "parents": [
        "c6465a548630238bdf71a1aa3ebdb4ede7e016d6",
        "25714500c80a7c4efa5cd82ccd914a57bc5d51e6"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Tue Mar 16 13:52:44 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 16 13:52:44 2021 +0000"
      },
      "message": "Merge \"Rename crop_legacy to just crop\" into sc-dev"
    },
    {
      "commit": "c6465a548630238bdf71a1aa3ebdb4ede7e016d6",
      "tree": "499331b96a356fdb3f9db0f1b4989f8969832898",
      "parents": [
        "ead2fee4d9f20d9175c57170181bbd0b9571f60e",
        "0c268c7a42a9aea410e6831e6e3dd3bd6b0c5b92"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Mar 16 13:00:49 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 16 13:00:49 2021 +0000"
      },
      "message": "Merge \"SF: Don\u0027t override active mode with desired mode\" into sc-dev"
    },
    {
      "commit": "8cbd3075e57963c7bfc2e863cca3d7d2176e3e73",
      "tree": "29f2c19742ce4a9d6248b459dbb0a748f680e59f",
      "parents": [
        "67fba0fd7f7a83ceb8a98ea968050d18113026af"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 16:39:06 2021 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 16:45:15 2021 -0700"
      },
      "message": "SF: rename ExplicitEarlyWakeup -\u003e EarlyWakeup\n\nBug: 159125966\nTest: build\nChange-Id: I3ab95491ac5fe64b0dc56290ad05bbaf7b8e5009\n"
    },
    {
      "commit": "67fba0fd7f7a83ceb8a98ea968050d18113026af",
      "tree": "d5d6ad6f9519185a048314678a9388665eaf7741",
      "parents": [
        "99ebe3f9f63602d22d6f1028b2996bac6665dd07"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 16:13:36 2021 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 16:45:11 2021 -0700"
      },
      "message": "SurfaceFlinger: remove ISurfaceComposer::eEarlyWakeup\n\nThis flag is deprecated.\n\nTest: build\nBug: 159125966\nChange-Id: I7422ba741a25c2247097cd4530dd84da50f02fe1\n"
    },
    {
      "commit": "858944dfda6958620d9979adc38a23a98ffa1061",
      "tree": "3bff182bcaec74c40a6eb03f5b81819d2f6ebe84",
      "parents": [
        "b5ecae7bb0b9a260045752ecb16c011471b88988",
        "5690bdaa18610454b44da3ff3f31e6dc6d6ed849"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 18:11:22 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 15 18:11:22 2021 +0000"
      },
      "message": "Merge \"SF: check isVsyncValid based on the transaction submitter\" into sc-dev"
    },
    {
      "commit": "b5ecae7bb0b9a260045752ecb16c011471b88988",
      "tree": "e1e6e3e6bf2b593a49a1c4a3172f7f5af36b5eee",
      "parents": [
        "49c01d0ba280ec49cbccea8e1672aa975a3d307f",
        "c7900120feb6eb95991c66c63a21653f266ec337"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 18:11:13 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 15 18:11:13 2021 +0000"
      },
      "message": "Merge \"SF: avoid calling pendingBuffers.insert twice\" into sc-dev"
    },
    {
      "commit": "49c01d0ba280ec49cbccea8e1672aa975a3d307f",
      "tree": "d5868a91f007c0fa34e241866804a6b01455432d",
      "parents": [
        "fcddc8eaf7d0ac5328c278ea7a5faf3a39433287",
        "2f43b20dcfd50faec4dc6f55ed55471f4bc7db99"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 18:11:03 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 15 18:11:03 2021 +0000"
      },
      "message": "Merge \"SF: add traces to transactionIsReadyToBeApplied\" into sc-dev"
    },
    {
      "commit": "fcddc8eaf7d0ac5328c278ea7a5faf3a39433287",
      "tree": "14c42ae52839760508ab1516fafd3b3f908e028a",
      "parents": [
        "f5b97a8b0e0cb0e688905a5398f12949c836a190",
        "d1b485397f4cd538e6ec29cb449f90051a84eaec"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 18:10:46 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 15 18:10:46 2021 +0000"
      },
      "message": "Merge \"SurfaceFlinger: run refresh  directly after invalidate\" into sc-dev"
    },
    {
      "commit": "d1b485397f4cd538e6ec29cb449f90051a84eaec",
      "tree": "f575e879b18ecad1b12a131e72aba6c460124f64",
      "parents": [
        "9e49451732117c5a9fde142b4cb571f50eb79662"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Mar 10 16:05:16 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 15 18:10:28 2021 +0000"
      },
      "message": "SurfaceFlinger: run refresh  directly after invalidate\n\nRun the refresh immediately after invalidate as there is no point going\nthru the message queue again, and to ensure that we actually refresh\nthe screen instead of handling other messages that were queued us already\nn the MessageQueue.\n\nBug: 182214053\nTest: SF unit tests\nTest: Launch an app and observe syatraces\nChange-Id: Iff647415d46c4b155b20b60b9e7cc07253339100\n"
    },
    {
      "commit": "25714500c80a7c4efa5cd82ccd914a57bc5d51e6",
      "tree": "c3dd39356b17acb77c166c943478118033f3d30d",
      "parents": [
        "f5b97a8b0e0cb0e688905a5398f12949c836a190"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Feb 11 10:01:08 2021 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Mar 15 10:49:31 2021 -0500"
      },
      "message": "Rename crop_legacy to just crop\n\ncrop_legacy and crop should do the same thing so there\u0027s no need for two\nseparate requests.\n\nTest: go/wm-smoke\nTest: SurfaceFlinger_test\nBug: 170765639\n\nChange-Id: I74a740d06d15f7cde9775557e65ad1e3a508bd61\n"
    },
    {
      "commit": "132bfbf52787161f465528c60c58ef595ffd8d15",
      "tree": "d0cf0a9c2ca170fd26e37b26b155147a73657ed5",
      "parents": [
        "88682d4f8aa73ff7b1baceee4b9e252f97f0eb1f",
        "f1b7c7be8130bd86c827a2acc05fa4aa58344e52"
      ],
      "author": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Mon Mar 15 01:36:38 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 15 01:36:38 2021 +0000"
      },
      "message": "Merge \"Prevent waiting synchronous case if transaction applied first\" into sc-dev"
    },
    {
      "commit": "5690bdaa18610454b44da3ff3f31e6dc6d6ed849",
      "tree": "7daddbaab53fc3af5e4866a71db7d9d0b92482d9",
      "parents": [
        "c7900120feb6eb95991c66c63a21653f266ec337"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Mar 12 15:01:18 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Mar 12 15:01:32 2021 -0800"
      },
      "message": "SF: check isVsyncValid based on the transaction submitter\n\nisVsyncValid is used to throttle applications to a lower frame rate than\nthe display refresh rate. With the current implementation of BlastSync\nwe may get a single transaction that contains layers from different\napplications, we may cause to throttle unindended applications\n(such as SystemUI). Instead, we are checking the transaction submitter\nfor whether we should throttle the transaction or not.\n\nBug: 182587984\nTest: atest FrameRateOverrideHostTest\nChange-Id: I7dd0c4c1ac945d6142afcdc8ba62c5a48a6dbb00\n"
    },
    {
      "commit": "c7900120feb6eb95991c66c63a21653f266ec337",
      "tree": "300f00cf524b4ac4a68586e5ac2e9ed7e1f82601",
      "parents": [
        "2f43b20dcfd50faec4dc6f55ed55471f4bc7db99"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Mar 12 13:51:01 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Mar 12 13:52:10 2021 -0800"
      },
      "message": "SF: avoid calling pendingBuffers.insert twice\n\nag/13806579 accidently added another call to pendingBuffers.insert which\nis incorrect.\n\nBug: 181978893\nTest: SF unit tests\nChange-Id: I3e7df528f8dcb1ccd8c5a83c51b23b8433a049d3\n"
    },
    {
      "commit": "2f43b20dcfd50faec4dc6f55ed55471f4bc7db99",
      "tree": "cac82e02e776a6302ed890aea429209ac3bc8920",
      "parents": [
        "30c6ac31bd18b9ea045cf39b125a5fb145300248"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Mar 12 12:34:52 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Mar 12 12:35:08 2021 -0800"
      },
      "message": "SF: add traces to transactionIsReadyToBeApplied\n\nAdd more trace points to understand why a transaction is not ready\nto be applied.\n\nBug: 182587984\nTest: systrace\nChange-Id: I78faf93cd0f360fb4939445a02f7cbc1843c307f\n"
    },
    {
      "commit": "c04b9206d9942fbff1642eea1599f68743dced6b",
      "tree": "2c79f6f654da95c2374c7a86b183086e2ac62131",
      "parents": [
        "f73e801e72b6548e22dac668fe958dbe3445e781",
        "79bf8a9d9ca8ead36032cf7546b900d196f99c88"
      ],
      "author": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Fri Mar 12 20:21:32 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 12 20:21:32 2021 +0000"
      },
      "message": "Merge changes I0b1cb7ac,I1a5eb572 into sc-dev\n\n* changes:\n  SurfaceFlinger: Check both queues in transactionFlushNeeded\n  BufferStateLayer: shouldPresentNow is always true\n"
    },
    {
      "commit": "22be6961e9d4579e926124c5b972c62a45da2451",
      "tree": "fca673d7ef87947c9ab33bd216160551022c7530",
      "parents": [
        "9281250cbb191a3862bad5b1b740f2e0031c887d"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 10 12:59:54 2021 -0500"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Mar 12 13:34:22 2021 -0500"
      },
      "message": "Expand setBrightness to take BrightnessInfo object\n\nPass SDR \u0026 HDR brightness independently along with\ncalibrated nits value\n\nBug: 182312559\nTest: builds \u0026 boots\n\nChange-Id: If6119c06a30c8f709e1f3982da035a9e088c4e87\n"
    },
    {
      "commit": "f1b7c7be8130bd86c827a2acc05fa4aa58344e52",
      "tree": "4b92c4af3af7d2489097babd3f8ad74515086d92",
      "parents": [
        "870da0041ca5ef9f2c4c54ff5282acf95373ed5e"
      ],
      "author": {
        "name": "arthurhung",
        "email": "arthurhung@google.com",
        "time": "Wed Mar 03 17:42:23 2021 +0800"
      },
      "committer": {
        "name": "arthurhung",
        "email": "arthurhung@google.com",
        "time": "Fri Mar 12 20:04:42 2021 +0800"
      },
      "message": "Prevent waiting synchronous case if transaction applied first\n\nCurrently, transaction would be queued and apply in the main thread,\nif a given transaction would wish to apply synchronously. We may wait\nit in binder thread until the transaction has been applied, but if\n\u0027applyTransactionState\u0027 comes first, it would cause redundant waiting.\n\nTo prevent this, we use the CountDownLatch in transaction to wait the\nsynchronous state, it will wait until transactions applied and committed.\n\nBug: 181480169\nTest: libsurfaceflinger_unittest SurfaceFlinger_test libgui_test\nChange-Id: I1fe56296810cdeadeae5b37ae9b4bd00d9e689c3\n"
    },
    {
      "commit": "79bf8a9d9ca8ead36032cf7546b900d196f99c88",
      "tree": "917b8bf0892138d1531b3cb372f45680aaf450b0",
      "parents": [
        "6a5dc1fa8128964a102ae3d7ec460127b0bcf8fc"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu Mar 11 16:24:28 2021 -0800"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu Mar 11 16:45:37 2021 -0800"
      },
      "message": "SurfaceFlinger: Check both queues in transactionFlushNeeded\n\ntransactionFlushNeeded is called from handleMessageTransaction to\ndeal with an edge case in timing. First note that we are not holding\nthe state lock in handleMessageTransaction, and so a binder thread\ncould be adding transactions to the queue. If a Binder thread\nadds a transaction to the queue in-between the calls to\nflushTransactionQueues and handleTransaction then its\naddition of the eTransactionFlushNeeded flag will be cleared out\nwhen handleTransaction consumes eTransactionMask. The code in\nthe transactionFlushNeeded conditional was added to handle this\ncondition, but transactionFlushNeeded was only checking the\npending transaction queue. If there were a a transaction added\nto the mTransactionQueue (binder thread-\u003emain thread communication\nqueue) during this interval, we wouldn\u0027t pick it up from\ntransactionFlushNeeded and we wouldn\u0027t reapply the flag. Recent\nchanges seem to have agitated this condition and we are receiving\na lot of dogfood bugs, so deploying this as a hopeful quick fix. A\nfollow-up CL will rework this brittle flag system with something\neasier do understand.\n\nBug: 180194022\nTest: Existing tests pass\nChange-Id: I0b1cb7acf7576e38ea076c7f3b921cbce25775bc\n"
    },
    {
      "commit": "0c268c7a42a9aea410e6831e6e3dd3bd6b0c5b92",
      "tree": "86a90c8f9647bf97d64b7cc8c8e3e572f67acd47",
      "parents": [
        "06c667b0963e48a682e8528b976ad9ed25c9cc2c"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Wed Mar 10 18:22:46 2021 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Thu Mar 11 16:06:33 2021 +0100"
      },
      "message": "SF: Don\u0027t override active mode with desired mode\n\ngetDynamicDisplayInfo().activeDisplayModeId should\nnot return the upcoming mode if we are in the process\nof a mode change.\n\nBug: 180090041\nTest: presubmit\nTest: atest DisplayTest\nChange-Id: I8b2b80f5ce1f57e4652d8794fd40a1f78715af6f\n"
    },
    {
      "commit": "cf69b996705e8cf02fe0880ce4f0ebf562fc2cff",
      "tree": "b6f401e47b8eda97028921a996f4a0eea24e5129",
      "parents": [
        "9e49451732117c5a9fde142b4cb571f50eb79662",
        "29d16cb549098b01d88b09457a97c48f9028c56a"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Mar 09 02:11:05 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 09 02:11:05 2021 +0000"
      },
      "message": "Merge changes Ie6cff82f,I0f95f2a3 into sc-dev\n\n* changes:\n  SurfaceFlinger: check transaction timings even if it doesn\u0027t have a buffer\n  SurfaceFlinger: get nextPredictedPresentTime directly from frame timeline\n"
    },
    {
      "commit": "29d16cb549098b01d88b09457a97c48f9028c56a",
      "tree": "cc723c49d0979e33a4c648118bc6348feff28983",
      "parents": [
        "43752eba5a28f2b923cded40b3d6e6d1db968a08"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 08 13:19:21 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 08 13:20:04 2021 -0800"
      },
      "message": "SurfaceFlinger: check transaction timings even if it doesn\u0027t have a buffer\n\nBufferless transactions should also not be applied if they are considered\nearly.\n\nBug: 181978893\nTest: launch an app and observe systraces\nTest: adb shell /data/nativetest64/SurfaceFlinger_test/SurfaceFlinger_test\nChange-Id: Ie6cff82f8316c1a299d4c9f151eaf637cb60e154\n"
    },
    {
      "commit": "43752eba5a28f2b923cded40b3d6e6d1db968a08",
      "tree": "4f414bd159073a34b5c49109e568e96380dbb947",
      "parents": [
        "a170ec6a87f2720eb9846ea75cd9807db54b12ad"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Mar 04 16:24:25 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Mar 08 13:18:56 2021 -0800"
      },
      "message": "SurfaceFlinger: get nextPredictedPresentTime directly from frame timeline\n\nag/13715677 moved the call to check whether a frame is early or not\nbefore a transaction is applied.\nThis created a bug in BufferStateLayer::nextPredictedPresentTime since\nit is checking the drawing state surface frame, which is not valid since\nthe transaction is not applied yet. This CL is fixing this by pasing the\nvsync id itself, and getting the expected present time base on that\nvsync id.\n\nChange-Id: I0f95f2a3a2efff921964a6fb5f9b50e0fcc65a85\nTest: launch an app and observe systraces\nBug: 181978893\n"
    },
    {
      "commit": "a9a68a69e441823524c8766f529a3a54328dad53",
      "tree": "00adf36934f0b508a60f2d740f2ebace38c2de6f",
      "parents": [
        "a170ec6a87f2720eb9846ea75cd9807db54b12ad"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Mar 04 19:14:50 2021 -0800"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Mar 05 19:10:57 2021 -0800"
      },
      "message": "Support task ID for fps listener rather than SurfaceControl.\n\nBug: 174956756\nTest: e2e test with dashboard cls\nChange-Id: I841af53ac820a91d270a75c5cc0ca258df0a3945\n"
    },
    {
      "commit": "44b26bda8ddfd868d4a89ddb943cb636d7ebba70",
      "tree": "73f907f1c02aca291fb08ddbc5bbc9698aae9e88",
      "parents": [
        "24939d6c4aba8452e6880b8b5b9c1bb283863713",
        "d3b5c5dbfcb6d731544e73d8df6a32bf942db764"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Wed Mar 03 13:17:24 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 03 13:17:24 2021 +0000"
      },
      "message": "Merge \"SF: Requery display modes if the active mode is not supported\" into sc-dev"
    },
    {
      "commit": "24939d6c4aba8452e6880b8b5b9c1bb283863713",
      "tree": "a948ae27f5754d0f5399845a9cd794964ed4e67a",
      "parents": [
        "ef300c1454b17b529a1e1d7b39a4ff77f5365009",
        "f22e6acbb450853a4535b1628927aa93f799c53f"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Wed Mar 03 13:17:12 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 03 13:17:12 2021 +0000"
      },
      "message": "Merge \"SF: Sequential display mode IDs\" into sc-dev"
    },
    {
      "commit": "9d517aa65734200f82bf8e079a216d738a367f77",
      "tree": "17439314883dd329bb88b90d58b25703838b4056",
      "parents": [
        "8503741e01bc6464974eec29690766860ee4ff69",
        "8eda69eb5657d1d6c519c20b1bf9e11e6f775851"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Mar 02 21:45:03 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 02 21:45:03 2021 +0000"
      },
      "message": "Merge \"Update pending buffer counts immediately\" into sc-dev"
    },
    {
      "commit": "d3b5c5dbfcb6d731544e73d8df6a32bf942db764",
      "tree": "9ddd35230c3ff3dfca10be59af6ae142a633ff9a",
      "parents": [
        "f22e6acbb450853a4535b1628927aa93f799c53f"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Thu Feb 11 18:26:14 2021 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Mar 02 15:12:37 2021 +0100"
      },
      "message": "SF: Requery display modes if the active mode is not supported\n\nSome TV devices send two hotplug events immediately one after another\nduring startup. Because we query the active display mode\nand the supported modes in two separete calls to HWC it\u0027s possible\nto get an active mode, which is not in the list of supported modes.\n\nIf this happens we requery the display modes up to 3 times. If the\nproblem still persists we throw a fatal error.\n\nBug: 175678215\nBug: 159590486\nTest: check that device boots\nTest: plug HDMI out and it\nChange-Id: I94dbadac4eb75ed659ede6299df0c3459ed6c74e\n"
    },
    {
      "commit": "f22e6acbb450853a4535b1628927aa93f799c53f",
      "tree": "ed585c6765219a0350117e85c18497c1b9fc526c",
      "parents": [
        "6025467214c00568a5f903a1c82810c5dfef35be"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Wed Feb 10 20:45:15 2021 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Mar 02 15:12:37 2021 +0100"
      },
      "message": "SF: Sequential display mode IDs\n\nIf the supported display modes differ after a hotplug\nassing the new modes new IDs. This way the old IDs will\nself invalidate.\n\nThis breaks the assumption that the modes IDs are\nequivalent to indices in the array of supported modes.\n\nBug: 159590486\nTest: manually 0. device boots in 60hz mode\n               1. switch to 50hz from app\n               2. disconnect display\n               3. reconnect display\n      dumpsys SurfaceFlinger after each step to\n      verify mode IDs change as expected\nChange-Id: I44c90e8151f31e998b43649dad73c51d6948195d\n"
    },
    {
      "commit": "e560d0c034662246f6c2d43a5ca0076c6aa2749a",
      "tree": "a979d70f21417c380b223ef664469dc407aaebb0",
      "parents": [
        "8603b1ef257259e07dd6bff0f18f85823103d1a8",
        "c8957ee4196b0332259653aa7d83b6a3ea06d61b"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Mar 02 01:07:34 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 02 01:07:34 2021 +0000"
      },
      "message": "Merge \"Change fps listener permission to allow systemui to use it.\" into sc-dev"
    },
    {
      "commit": "8603b1ef257259e07dd6bff0f18f85823103d1a8",
      "tree": "2346681c998425246c8b461f6dcd56c7eec1d5f3",
      "parents": [
        "86d048d6f0d02e568fd1f1360d13db2b3fc9d049",
        "b9df47065133f77291c8d13445cb259ebf4af3a2"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Mar 02 00:25:31 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 02 00:25:31 2021 +0000"
      },
      "message": "Merge \"Sever the link to inputflinger when system_server crashes\" into sc-dev"
    },
    {
      "commit": "c8957ee4196b0332259653aa7d83b6a3ea06d61b",
      "tree": "130794d9415a3a9bd85b6cf327d133e874c1a105",
      "parents": [
        "8f751f897e5054f5fcbe7c170df9755cb67e041d"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Mar 01 14:33:19 2021 -0800"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Mar 01 14:33:19 2021 -0800"
      },
      "message": "Change fps listener permission to allow systemui to use it.\n\nRequire READ_FRAME_BUFFER permission instead of ACCESS_SURFACE_FLINGER,\nso that systemui is allowed to listen to FPS measurements.\n\nStrictly speaking, the fps listener does not require as strict of\npermissions as screenshots because there\u0027s no on-screen content, but\nsystemui is already requesting this permission, and we probably don\u0027t\nwant arbitrary apps to backdoor into this api.\n\nBug: 174956756\nTest: end to end integration test to check that systemui does not crash\nwhen registering the listener.\n\nChange-Id: I9149618950988250ae2649ac5242d5165b5037db\n"
    },
    {
      "commit": "cd5e6384eb9d51ea6a1907952ebd3a395f0b2b39",
      "tree": "7780e4bf5540b7348f6647aaff1e5e01e75487cc",
      "parents": [
        "8f751f897e5054f5fcbe7c170df9755cb67e041d",
        "a7cda15da4b51387c322e45bc4c28122642836d3"
      ],
      "author": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Mon Mar 01 20:41:01 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 01 20:41:01 2021 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Check frameIsEarly earlier\" into sc-dev"
    },
    {
      "commit": "b9df47065133f77291c8d13445cb259ebf4af3a2",
      "tree": "1042f72ac5b22676e0065cf3beddbaa0f6adc904",
      "parents": [
        "a8bad0e28a3ba92eed11b75d1e18f00b79f70efa"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Mon Mar 01 11:53:15 2021 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Mon Mar 01 20:11:30 2021 +0000"
      },
      "message": "Sever the link to inputflinger when system_server crashes\n\nWhen system_server and inputflinger goes down, we want to clear the\nreference to the inputflinger service. This prevent SF making any\ninvalid binder calls to input. Instead the input commands will be queued up\nand sent when system_server recovers via SurfaceFlinger::bootFinished\nsignal.\n\nTest: adb shell su root kill `pid system_server` \u0026 check we have a focused window when the server recovers\nFixes: 181246754\nBug: 171130500\nChange-Id: Id9091a29b651e4ceece30c3b81b9708262132787\n"
    },
    {
      "commit": "a7cda15da4b51387c322e45bc4c28122642836d3",
      "tree": "04bcb55014064577ba1a7095e3f629b0abb05246",
      "parents": [
        "d2bed277967c45e19f2310d5c20be46235a08d78"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Fri Feb 26 17:49:41 2021 -0800"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Fri Feb 26 17:49:41 2021 -0800"
      },
      "message": "SurfaceFlinger: Check frameIsEarly earlier\n\nIf we allow the transaction to apply but then later delay\nthe buffer we may end up \u0027splitting a transaction\u0027 applying\npart of it without applying an included buffer.\n\nBug: 179712630\nTest: Existing tests pass\nChange-Id: Ia54ba0f9b34a7b676af95418181c2e0f0b807b25\n"
    },
    {
      "commit": "53c4e8aa7c347f8e187090effd15ba7d803b110a",
      "tree": "699dacdc15543fd313bc5f0196418ce8db3a29ca",
      "parents": [
        "d2bed277967c45e19f2310d5c20be46235a08d78",
        "0d995106c0fb4480ac1de5f58667d918fa9aea62"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Feb 26 23:32:32 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 26 23:32:32 2021 +0000"
      },
      "message": "Merge \"Dispatch texture destruction off of render thread for screenshots\" into sc-dev"
    },
    {
      "commit": "0d995106c0fb4480ac1de5f58667d918fa9aea62",
      "tree": "fdac62f05e2462c9170981ec9b80dbf6ea75a6f2",
      "parents": [
        "ec1691271f4732807a21fd678bfddb3c7b25c3ae"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Wed Feb 24 16:53:38 2021 -0800"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Feb 26 11:24:33 2021 -0800"
      },
      "message": "Dispatch texture destruction off of render thread for screenshots\n\nThis is only enabled when the skia threaded variant renderengine is\nenabled. This essentially defers texture deletion until after\ndrawLayers() is invoked, which shaves off time from the main SF thread.\n\nBug: 179959621\nBug: 180767535\nTest: perfetto trace\nChange-Id: I333091d8792fdd0dc01076c73af2956da9ee73df\n"
    },
    {
      "commit": "8eda69eb5657d1d6c519c20b1bf9e11e6f775851",
      "tree": "1a9f47e626809f7300309d08db51c2f39307de44",
      "parents": [
        "d2bed277967c45e19f2310d5c20be46235a08d78"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Feb 26 10:42:10 2021 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Feb 26 10:42:10 2021 -0800"
      },
      "message": "Update pending buffer counts immediately\n\nIncrement any buffer updates in the binder thread so systrace\nhas an accurate idea of when the buffers arrived on the server.\nThe buffer count will continue to be dropped when the buffers\nare dropped or latched in the main thread.\n\nTest: capture systrace and check pending buffer counts\nChange-Id: Ided1d60197db29cd490691d515443acaab864a48\n"
    },
    {
      "commit": "c738a17f1fd264c1256b7c7b301d321387dfd360",
      "tree": "1155f49e82cd0613c4ecad8b94fdddf82d614dcb",
      "parents": [
        "2740bf14f8625fccb49c4a8cdcfc63a052bfb0ba",
        "e46243a906d09b2d404e2e2e2e5d44370e903eaf"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Feb 26 06:39:56 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 26 06:39:56 2021 +0000"
      },
      "message": "Merge \"SurfaceFlinger: mExpectedPresentTime should not be updated outside the main thread\" into sc-dev"
    },
    {
      "commit": "e46243a906d09b2d404e2e2e2e5d44370e903eaf",
      "tree": "8fa83cd3ef6173be8bbd83cd2bd0cbbf68c60c01",
      "parents": [
        "e28d8aba519a41f9d1d2b04ff0fa8471a0cbee03"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Feb 23 19:33:49 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Feb 25 15:42:19 2021 -0800"
      },
      "message": "SurfaceFlinger: mExpectedPresentTime should not be updated outside the\nmain thread\n\nmExpectedPresentTime should be set only by the main thread when\ncomposition starts as it is used throughout the composition stage,\nand updates to this variable may cause SF to use inconsistent values\nfor determining the expected present time.\n\nTest: Run TouchLatency app and observe systraces\nTest: Expand notification shade and observe systraces\nBug: 178148035\nChange-Id: Ie221d7e1fb0b0965460af773d3ecf0b06b5c5d7a\n"
    },
    {
      "commit": "9dce082f0b490876293c3924a3c18405b17e7d01",
      "tree": "6b194821c0b272ebfe89f054eed4d81d3e837e88",
      "parents": [
        "79e26e175fe62e1dc31a6f587a3a9f999db59db2",
        "269dc4d22ad689f96864039d009e336dab2842e6"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Feb 25 19:48:19 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 25 19:48:19 2021 +0000"
      },
      "message": "Merge changes from topic \"sf_planner\" into sc-dev\n\n* changes:\n  SF: Add initial Planner infrastructure\n  SF: add a sysprop to control layer caching\n"
    },
    {
      "commit": "dde1abd1f9551588b69825295005cc8482bbef06",
      "tree": "47ecb335ace0cde9f0d6c8b43715d41d5e13e6f6",
      "parents": [
        "e28d8aba519a41f9d1d2b04ff0fa8471a0cbee03",
        "adebf5c63121f7986b2ee609ed4b6904e5290285"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Wed Feb 24 22:41:10 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 24 22:41:10 2021 +0000"
      },
      "message": "Merge \"Support streaming fps updates for a layer subtree to sysui via listener.\" into sc-dev"
    },
    {
      "commit": "269dc4d22ad689f96864039d009e336dab2842e6",
      "tree": "87b46fefa6181d6f577a500c2c00ad8d21d2d6b7",
      "parents": [
        "9c87defdde0d2016f8a8daebccfa31879e872306"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Fri Jan 15 15:07:43 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Feb 24 11:32:41 2021 -0800"
      },
      "message": "SF: Add initial Planner infrastructure\n\nAdds infrastructure for the SF Planner, which will support layer\ncaching/flattening and composition strategy prediction.\n\nBug: 158790260\nTest: atest libcompositionengine_test libsurfaceflinger_unittest\nChange-Id: I0d3027cea073fe25f269f3d5e83fe621dfbe7b2b\n"
    },
    {
      "commit": "6c8199f3c6ef0c321eca1051489dca0af6be6ca7",
      "tree": "9e25b0c425e72870e450d7753ff4f783f7529380",
      "parents": [
        "c1c4499c0f4349520a6a025588bf7cb96a3dfcdf",
        "24e3bbaf310320392cd44068163daee192690166"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Feb 24 18:14:08 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 24 18:14:08 2021 +0000"
      },
      "message": "Merge \"Check for any permissions before holding any sf locks\" into sc-dev"
    },
    {
      "commit": "24e3bbaf310320392cd44068163daee192690166",
      "tree": "e75d395c01d4f0f1a56e686b44281836f3890c77",
      "parents": [
        "a8109d468ad5beb766e385ae213398ad0c97c23b"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Feb 23 14:19:36 2021 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Feb 23 14:24:09 2021 -0800"
      },
      "message": "Check for any permissions before holding any sf locks\n\nAlso fixes an incorrect permissions check in setClientState to\ncheck a cached value since it is now called on the main thread.\n\nTest: presubmit tests\nFixes: 180180131\n\nChange-Id: I87f2dc0683780166fec8738265c74d8d706a8575\n"
    },
    {
      "commit": "329808e195760ea0b1984b7878693da457837a55",
      "tree": "d3f7bf604fb274370a02025399188a7441995719",
      "parents": [
        "7dc57eff26cb36da4e7e92e74217855d40a9d56a",
        "b173f7599a8f93786342d27167facf7eae02845e"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Feb 23 18:54:18 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 23 18:54:18 2021 +0000"
      },
      "message": "Merge \"SF: Move ALLM and GameContentType to DynamicDisplayInfo\" into sc-dev"
    },
    {
      "commit": "adebf5c63121f7986b2ee609ed4b6904e5290285",
      "tree": "f53553e3e66657f270a208f9555023b24a8a0e87",
      "parents": [
        "ec1691271f4732807a21fd678bfddb3c7b25c3ae"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Jan 05 12:57:36 2021 -0800"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Feb 23 10:31:31 2021 -0800"
      },
      "message": "Support streaming fps updates for a layer subtree to sysui via listener.\n\nThe supported flow is:\n* A binder listener is registered with SurfaceFlinger that is associated\nwith a task\u0027s SurfaceControl.\n* Every frame, for every listener that is registered, the fps for each\nlayer subtree is computed and reported back to each listener via\nonFpsUpdated.\n* Fps for the layer subtree is computed via FrameTimeline: the layer IDs\nfor the subtree are gathered into a set, and FrameTimeline internally\nfinds all DisplayFrames containing at least one layer, then obtains the\npresent time for each of those frames, then computes the aggregated fps\nfrom those frames. Pragmatically, this should correspond with the last\nhalf second of activity for high refresh rate devices.\n\nNo heuristics are used to select the \"correct\" layer from the layer\nsubtree. If a game is rendering to two layers at a cadence of 30fps but\noffset by one 60hz vsync, then the reported fps will be 60fps because\nboth layers will be counted on the same linear timeline.\n\nNo rate limiting is applied in this patch either. The caller is able to\nhack in rate-limiting by immediately unregistering the listener after a\nFPS callback is dispatched, and then reregistered. Architecturally, it\nis not hard to add in rate-limiting at the SurfaceFlinger level, but\nthat can be added in a follow-up patch since this patch is already\nlarge.\n\nBug: 174956756\nTest: libsurfaceflinger_unittest\nTest: E2E verification with custom listener outputting to logcat\nChange-Id: I792bc19cad18b6aee6c6e644bca9da40a0f15099\n"
    },
    {
      "commit": "b173f7599a8f93786342d27167facf7eae02845e",
      "tree": "f13d93cfb55b70020880b458b778df40d219ab89",
      "parents": [
        "228f46b5b9c3eac674aceb579a718cd459165f2e"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Feb 16 19:38:36 2021 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Feb 23 13:13:58 2021 +0100"
      },
      "message": "SF: Move ALLM and GameContentType to DynamicDisplayInfo\n\nALLM and Game content type support may change after a hotplug,\nfor that reason we move them to DynamicDisplayInfo.\n\nBug: 180108954\nTest: flash a device and manually test that the values are\n   properly piped to DisplayManager\nChange-Id: I05810c620b241e204d2c01618bb8a4069c41d32d\n"
    },
    {
      "commit": "4ab66f469c72a352fe78656cf8faa7c2a118a7ce",
      "tree": "c6cf6511bcdf385c0bf168a28a9359854b631a8f",
      "parents": [
        "a8109d468ad5beb766e385ae213398ad0c97c23b",
        "beba6f0a81de3145552713c2aee75c34fa0a8cdb"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 23 01:32:32 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 23 01:32:32 2021 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Add ClientCache dumps\" into sc-dev"
    },
    {
      "commit": "af9b2ae5602aafa7e7db9bb50f770c5bf5af580e",
      "tree": "621c6f877deba567dce061a0d04dc9165691ef99",
      "parents": [
        "8a6910f1b7b3cd7ae3cf0dc79d45484911c25b70",
        "228f46b5b9c3eac674aceb579a718cd459165f2e"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Mon Feb 22 18:28:27 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 22 18:28:27 2021 +0000"
      },
      "message": "Merge \"Introduce DynamicDisplayInfo\" into sc-dev"
    },
    {
      "commit": "228f46b5b9c3eac674aceb579a718cd459165f2e",
      "tree": "593f9b053f2e8371e8b1bfd4eaad11894b70e3c4",
      "parents": [
        "8c9d2483cad988a5e84ad8c3108f8143cd9cbf3a"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Thu Jan 28 21:11:45 2021 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Mon Feb 22 16:44:08 2021 +0100"
      },
      "message": "Introduce DynamicDisplayInfo\n\nIn this CL we introduce the getDynamicDisplayInfo call\non ISurfaceComposer which replaces the existing\n - getDisplayModes\n - getActiveDisplayMode\n - getColorModes\n - getActiveColorMode\n - getHdrCapabilities\n\nThis way all display properties can be queried atomically.\n\nThe current DisplayInfo class is moved to the androd::ui\nnamespace and it\u0027s renamed to StaticDisplayInfo.\n\nui::DisplayMode is now LightFlattenable and the mode ID is\nint32_t instead of size_t in order to prevent serialization\nproblems.\n\nAdditionally we add the ID field to ui::DisplayMode. This\nway we no longer need the supported display IDs to be\nfrom 0 to N-1.\n\nBug: 159590486\nBug: 180539476\nTest: presubmit, manually test that device boots\nChange-Id: I52b170913ce47cb5df2e8417e6cc95d395df1fda\n"
    },
    {
      "commit": "2db024a2f71ab8df0ba41a4a739b2f84cc216222",
      "tree": "f09924fd040a274f23466a9cb6593d496adf0142",
      "parents": [
        "85d57a85ecb0be9ab1edc05ce5c66f9c8e6a49b0",
        "2b9fc2534e3d501b3481c325cc3faa4f74a85029"
      ],
      "author": {
        "name": "Evan Rosky",
        "email": "erosky@google.com",
        "time": "Sat Feb 20 01:46:25 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 20 01:46:25 2021 +0000"
      },
      "message": "Merge \"Unrotate inputwindows into rotation display grew-up in\" into sc-dev"
    },
    {
      "commit": "2b9fc2534e3d501b3481c325cc3faa4f74a85029",
      "tree": "663bf27f1ffdbdbda49f484bb908a1c5fdb71fb3",
      "parents": [
        "021885b03abe889a724412a45457ee4ae002e0d4"
      ],
      "author": {
        "name": "[1;3C",
        "email": "erosky@google.com",
        "time": "Thu Feb 04 16:16:50 2021 -0800"
      },
      "committer": {
        "name": "Evan Rosky",
        "email": "erosky@google.com",
        "time": "Wed Feb 17 17:55:59 2021 -0800"
      },
      "message": "Unrotate inputwindows into rotation display grew-up in\n\nThis way inputflinger internally works within one coordinate\nspace at all times and only transforms coordinates for dispatch\nto targets\n\nThis is behind a flag:\n   adb shell setprop persist.debug.per_window_input_rotation 1\n\nBug: 179274888\nTest: phone should work as before\nChange-Id: I503f9beea9863193801aa6422a416382374e48c8\n"
    },
    {
      "commit": "beba6f0a81de3145552713c2aee75c34fa0a8cdb",
      "tree": "f9b3dc0b0f7711dd59935b7591e6b4db3dbaaaf1",
      "parents": [
        "7381d4840a469be409390009c2aa1b11b1d7edf1"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Feb 10 21:06:27 2021 -0800"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Tue Feb 16 14:40:30 2021 -0800"
      },
      "message": "SurfaceFlinger: Add ClientCache dumps\n\nCan be useful in debugging buffer leaks.\n\nBug: 176691195\nTest: Existing tests pass\nChange-Id: I8b318f272a7da3dde76d9153b21ced94127f0d8b\n"
    },
    {
      "commit": "7013b6f31163d9850fffec36f9dfc1ea61877a42",
      "tree": "69804a26549039836f316755038b4b34e5a5c4d9",
      "parents": [
        "e06403fa179494d6c5cafd0b4ffce767413eb14c"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Feb 12 11:16:54 2021 -0800"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Feb 12 11:32:58 2021 -0800"
      },
      "message": "Check status codes of GraphicBuffers on allocation\n\nWe\u0027re getting reports of buffers transiently missing usage bits when\nallocated from SurfaceFlinger causing strange issues. Fatal logging when\nthere is an allocation error will hopefully aid in triaging future bug\nreports.\n\nBug: 157562905\nBug: 179786581\nTest: build, boots\nChange-Id: I715295c0b6b3450e71181d93391dd99616f89d26\n"
    },
    {
      "commit": "e06403fa179494d6c5cafd0b4ffce767413eb14c",
      "tree": "ad831a7b59787328f5283b164a4ebd98e72da460",
      "parents": [
        "3c18744b3b5f8e5700ab90877ca41bedfc721349",
        "363faf0f14c25316109fce22a7effd577216fbc6"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Feb 11 19:31:44 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 11 19:31:44 2021 +0000"
      },
      "message": "Merge changes Ic348cf9f,Icfd4cecf into sc-dev\n\n* changes:\n  Add deadline histograms into timestats\n  Plumb refresh and render rates into shared timeline\n"
    },
    {
      "commit": "1c69780efbb60608767a28a0887f2cb548fa2002",
      "tree": "e3ac9f7ffebbd3d4ba24921f73311a09ddbf2ec8",
      "parents": [
        "70091d6660ae38137971ebed061c3aedad775937",
        "cdb4ed7743f5abfa4e9a785b14a50ca25c906f3f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 10 05:42:36 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 10 05:42:36 2021 +0000"
      },
      "message": "Merge \"Add plumbing for sending stretch effect to SF\" into sc-dev"
    },
    {
      "commit": "d486b821b2534d73fcdb33c0456f441fd9b6f6f3",
      "tree": "06c605fe6fe4792e199543cee2397c25a5259a65",
      "parents": [
        "42c3aefc765bc1aba9aad9be0cd2afa1c33862f3",
        "564f9deb6d5c9ee27bd6a84f7c6e4544ad9e174a"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Feb 09 22:28:39 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 09 22:28:39 2021 +0000"
      },
      "message": "Merge \"SurfaceFlinger: expose vsync id extra buffers\" into sc-dev"
    },
    {
      "commit": "7d436ecfc55ebf0ff69caa8d05a8f4eb63fb72f4",
      "tree": "644b186f7d1c645614bc916a5db8123a311856f8",
      "parents": [
        "4cd01842d4b1ba10eed64fd947c03b53c4fe3105"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Wed Jan 27 20:40:50 2021 -0800"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Feb 09 09:18:15 2021 -0800"
      },
      "message": "Plumb refresh and render rates into shared timeline\n\n* Make the overridden frame rate from the Scheduler public so that\nSurfaceFlinger can access it for each uid.\n* Add the display refresh rate on each display frame\n* Add the application rendering rate on each SurfaceFrame created\n* If there is no application rendering rate, then set it to the display\nrefresh rate.\n* Plumb all those metrics into TimeStats.\n* Change global metrics to increment for every SurfaceFrame instead of\nevery DisplayFrame, so that the rendering rate dimension can be\naccurately captured.\n\nBug: 172937287\nTest: builds, boots, timestats dump\nChange-Id: Icfd4cecfdfa5d6c434661cab91c624eb08e8baea\n"
    },
    {
      "commit": "cdb4ed7743f5abfa4e9a785b14a50ca25c906f3f",
      "tree": "8bf8137c4876131f2605515811ae76da60864462",
      "parents": [
        "e5d7b701a35e9b94383d9924ce1b1ee15de1c43f"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Feb 04 13:39:33 2021 -0500"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Feb 08 18:19:47 2021 -0500"
      },
      "message": "Add plumbing for sending stretch effect to SF\n\nBug: 179047472\nTest: builds \u0026 boots, doesn\u0027t do anything yet\nChange-Id: Ib8cccdde518f0591c2f2ee3416684442f37a1e06\n"
    },
    {
      "commit": "4cd01842d4b1ba10eed64fd947c03b53c4fe3105",
      "tree": "026af3dcdc5efe92f65139fc4d068a1a29716cc2",
      "parents": [
        "7381d4840a469be409390009c2aa1b11b1d7edf1",
        "a7fe3048aaaf8a45337c7355326f2c6b68b70fb0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 08 21:56:15 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 08 21:56:15 2021 +0000"
      },
      "message": "Merge \"Rename DisplayConfig to DisplayMode\" into sc-dev"
    },
    {
      "commit": "7381d4840a469be409390009c2aa1b11b1d7edf1",
      "tree": "a88bd5163773f3e058b81a4106295c908b11e8bc",
      "parents": [
        "4d09948642c4a35d4082bc2b26c0967c3def272a",
        "9a803c3e842f0bd56b461cc7db912c2f4c09e39f"
      ],
      "author": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Mon Feb 08 20:33:23 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 08 20:33:23 2021 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Emit TransactionCompleted callbacks directly.\" into sc-dev"
    },
    {
      "commit": "ca344844d5cde52289b3b60563f69f906052b224",
      "tree": "0a41379801e50f01df90432a48c426ac45116afb",
      "parents": [
        "bc4c5f4e10d9e9db95ba879e29de852bbbdacba4",
        "b9a7dabfc3f6896986b54cf6b21bf1a483391256"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Feb 08 06:22:38 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 08 06:22:38 2021 +0000"
      },
      "message": "Merge \"Fix Transaction tracking for FrameTimeline\" into sc-dev"
    },
    {
      "commit": "564f9deb6d5c9ee27bd6a84f7c6e4544ad9e174a",
      "tree": "5b1bf6c5e2bcd532f055f53a568e3b9cf4de3d1a",
      "parents": [
        "b7f2bccb3e19207b7b5c59fa8eafe83fc0e29263"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Feb 03 18:34:33 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Feb 05 12:31:14 2021 -0800"
      },
      "message": "SurfaceFlinger: expose vsync id extra buffers\n\nExpose a function for clients to call and query the number\nof extra buffers needed when vsync id is passed with the buffer.\n\nTest: launch an app and observe systrace\nTest: SF unit tests\nBug: 178148035\nChange-Id: Icbeec66073feeae9768f0dcc45831b26144ab6f6\n"
    },
    {
      "commit": "a7fe3048aaaf8a45337c7355326f2c6b68b70fb0",
      "tree": "8c784e9a818c84f8e5f5953a41edc20b4f0f0abe",
      "parents": [
        "c00282a5df6e7c00bec0befcb98fd4ae9e33da43"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Fri Jan 29 21:02:08 2021 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Fri Feb 05 20:50:20 2021 +0100"
      },
      "message": "Rename DisplayConfig to DisplayMode\n\nThis CL continues the raneming of display \"configs\" to\ndisplay \"modes\". The goal of this is to have the same\nnames as in the java code and the public display APIs.\n\nAdditionally in this CL we move DisplayConfig (from libui)\nto the namespace android::ui. This is to prevent conflict\nwith the SurfaceFlinger\u0027s internal android::DisplayMode.\nThis is consistent with the neighboring classes which\nare also in the ui namespace.\n\nAlso the type of the parameter defaultMode of\n{s,g}etDesiredDisplayModeSpecs is changed to size_t\nfor consistency with the rest of the code. Appropriate\nerror handling is added for this.\n\nBug: 159590486\nBug: 179158858\nTest: presubmit\nChange-Id: I31e5be1f2223a9ec9340789ce3dc5738eceaf40f\n"
    },
    {
      "commit": "f3ba25b218301ee76fa614c799f7029dda921111",
      "tree": "222a7e656d051c8c625b657bee5c7bbf58d64b16",
      "parents": [
        "096f5c88b42e136072515ff2329f2ba7fdfdbf91",
        "12f62a02141c1fe38315d730486cc1eac75437ad"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Feb 04 20:58:21 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 04 20:58:21 2021 +0000"
      },
      "message": "Merge \"Check transaction queues when dropping or queuing buffers\" into sc-dev"
    },
    {
      "commit": "b9a7dabfc3f6896986b54cf6b21bf1a483391256",
      "tree": "75874dfc21dba55ca11071292290893c78abd70f",
      "parents": [
        "c00282a5df6e7c00bec0befcb98fd4ae9e33da43"
      ],
      "author": {
        "name": "Adithya Srinivasan",
        "email": "adsrini@google.com",
        "time": "Thu Jan 14 23:49:46 2021 +0000"
      },
      "committer": {
        "name": "Adithya Srinivasan",
        "email": "adsrini@google.com",
        "time": "Thu Feb 04 18:27:41 2021 +0000"
      },
      "message": "Fix Transaction tracking for FrameTimeline\n\nThe current setup only supports one SurfaceFrame per DrawingState for\nTransactions. This becomes problematic if more than one Transaction is\nsubmitted for the same vsync, on the same layer. On top of this, the\nBlast transactions can have a buffer that could result in a buffer drop.\n\nThis change adds the support to hold multiple SurfaceFrames in the\nLayer\u0027s State. It also adds a bufferSurfaceFrame that\u0027s intended only\nfor Blast Transactions with a Buffer. All other Transactions are tracked\nin the bufferlessSurfaceFrames.\n\nAdditionally, this change also adds a lastLatchTime. It is needed for\nclassifying BufferStuffing properly.\n\nBug: 176106798\nTest: open any app from the launcher and at the same time check dumpsys\nChange-Id: Id3b8369ca206f8b89be3041e5fc018f1f1be1d23\nMerged-In: Id3b8369ca206f8b89be3041e5fc018f1f1be1d23\n"
    },
    {
      "commit": "9a803c3e842f0bd56b461cc7db912c2f4c09e39f",
      "tree": "50f848015ba3652b72dde523ef9c3fde8b061ffc",
      "parents": [
        "c5515fccae31bcec3c9861512008e8684a0f173b"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu Jan 14 16:57:58 2021 -0800"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Feb 03 17:05:51 2021 -0800"
      },
      "message": "SurfaceFlinger: Emit TransactionCompleted callbacks directly.\n\nTransaction complete callbacks (BLAST Buffer release callbacks), are\nemitted from a TransactionCompletedThread. There\u0027s no clear reason\nfor this behavior, as the actual runtime is exceedingly minimal. This\nopens us to scheduling delays when we call\nTransactionCompletedThread.sendCallbacks. In this CL we both remove the\nthreaded nature of TransactionCompletedThread, and also take advantage\nof it running on the main thread to reduce some unnecessary copying and\nfurther reduce its runtime.\n\nBug: 176691195\nTest: Existing tests pass\nChange-Id: Ib1661df24c4a2ee39fc28c29a395158ce0ee7b7f\n"
    },
    {
      "commit": "12f62a02141c1fe38315d730486cc1eac75437ad",
      "tree": "db883a894cb003178cdde98d26fdeefacd663f90",
      "parents": [
        "4b1a37bbd205ef397b79f24c0c42500778e507bf"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Feb 03 16:23:16 2021 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Feb 04 00:32:42 2021 +0000"
      },
      "message": "Check transaction queues when dropping or queuing buffers\n\nWhen checking if a transaction is ready to be presented, we need to\nconsider the buffers in the current transaction queue. The current\nstate is only updated after the transactionIsReadyToBeApplied check.\n\nWithout this fix, we were incorrectly dropping buffers that did not\nhave presentation timestamps.\n\nTest: atest SurfaceViewBufferTests\nTest: go/wm-smoke\nBug: b/178148035\nChange-Id: Idb108063ea2694f4a5ab5bbc9fc039f26579a16b\n"
    },
    {
      "commit": "b2ce9986fce6b4ef09eee167dcb71427e75ba5b2",
      "tree": "37868bce5def628a97dc02ade6b986a827df71ef",
      "parents": [
        "74e21077da73a8df2b291608bbb2758f4e2779b6",
        "045b70051322dcce2f9519b6113f349ef50d41fa"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Wed Feb 03 13:13:17 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 03 13:13:17 2021 +0000"
      },
      "message": "Merge \"SF: Don\u0027t cache display modes in HWComposer\" into sc-dev"
    },
    {
      "commit": "d39555c1ecd2d0bf6dbe2e21b332ea761bb906c4",
      "tree": "67f51b5f68191597080e40332c7085b5ac312b64",
      "parents": [
        "1ee455e941a2ec81c8bc92af45ac3ce72ad73349",
        "e11d575505f99facc0bd2b73bf42b511b420a70a"
      ],
      "author": {
        "name": "Galia Peycheva",
        "email": "galinap@google.com",
        "time": "Wed Feb 03 05:49:40 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 03 05:49:40 2021 +0000"
      },
      "message": "Merge \"Revert \"Add permission check for blurs in SurfaceFlinger\"\" into sc-dev"
    },
    {
      "commit": "a73115b7c6601b3a5fe3dfac68b1af5d8eaae328",
      "tree": "1dccfe273f270cefd354d676d3d1b4e32732eedc",
      "parents": [
        "58144273809dc92c36f901190cc825e1739de2bd",
        "8ba8b076a0335155a57a9e8004614c302d07c154"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Tue Feb 02 23:12:36 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 02 23:12:36 2021 +0000"
      },
      "message": "Merge \"Remove detachChildren\" into sc-dev"
    },
    {
      "commit": "045b70051322dcce2f9519b6113f349ef50d41fa",
      "tree": "948915ac2e8e86af256b97c4793e8bcfbef817c0",
      "parents": [
        "ca5d8908341cdd58936ba179d5e64d98c4db9b92"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Thu Jan 07 16:56:24 2021 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Feb 02 16:10:30 2021 +0100"
      },
      "message": "SF: Don\u0027t cache display modes in HWComposer\n\nThe display modes should be stored only in DisplayDevice.\nHaving the state also in HWComposer is unnesesary and hard to\nkeep in sync with SF, e.g. during hotplug processing of\ndisplays which can change their supported modes.\n\nAny HWC calls which need to validate their parameters need\nto go through display device. This additinally makes the\ncode more undestandable.\n\nBug: 159590486\nTest: presubmit\nChange-Id: I40b03c09a5fd6092fca0682d602deb70db022fa5\n"
    },
    {
      "commit": "e11d575505f99facc0bd2b73bf42b511b420a70a",
      "tree": "81c7e32af8bced6041400a9a710faeae5ec54a27",
      "parents": [
        "ca5d8908341cdd58936ba179d5e64d98c4db9b92"
      ],
      "author": {
        "name": "Galia Peycheva",
        "email": "galinap@google.com",
        "time": "Fri Jan 22 13:50:16 2021 +0000"
      },
      "committer": {
        "name": "Galia Peycheva",
        "email": "galinap@google.com",
        "time": "Tue Feb 02 10:22:15 2021 +0100"
      },
      "message": "Revert \"Add permission check for blurs in SurfaceFlinger\"\n\nRevert \"Remove public usages of FLAG_BLUR_BEHIND\"\n\nRevert \"Add pid and uid to SF::setClientStateLocked\"\n\nRevert \"Add USE_BACKGROUND_BLUR to cts expected permissions\"\n\nRevert submission 13350963-blur_system_api\n\nReason for revert: This topic made blurs a system api. API council voted against that and we will instead aim to make it public for S. None of these changes are relevant in that case.\n\nReverted Changes:\nI3683db296:Remove public usages of FLAG_BLUR_BEHIND\nI23b21b603:Add USE_BACKGROUND_BLUR to cts expected permission...\nId21f03793:Add pid and uid to SF::setClientStateLocked\nIf5d8344a5:Add permission for blur SystemApi\nI70d1e1715:Add permission check for blurs in SurfaceFlinger\nIcf98c3607:Make window background blurs SystemApi\nI0b881ec6e:Make BackgroundBlurDrawable a SystemApi\n\nBug: 177523043\nTest: m\nChange-Id: I4645b0483df69f4e5e970835fb3a232eb89c8f06\nMerged-In: I4645b0483df69f4e5e970835fb3a232eb89c8f06\n"
    },
    {
      "commit": "58144273809dc92c36f901190cc825e1739de2bd",
      "tree": "e17fba8044bf7580c00def3df954a33196ba9390",
      "parents": [
        "ca5d8908341cdd58936ba179d5e64d98c4db9b92"
      ],
      "author": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Sat Jan 16 03:43:53 2021 +0000"
      },
      "committer": {
        "name": "arthurhung",
        "email": "arthurhung@google.com",
        "time": "Tue Feb 02 17:08:38 2021 +0800"
      },
      "message": "Introduce SurfaceFlinger Queued Transaction\n\nImplements the transaction queue to store the transaction updated from\n\u0027setTransactionState\u0027, and apply these queued transactions in the main\nthread. That would prevent holding the state lock between binder thread\nand main thread.\n\n- The setTransactionState won\u0027t call \u0027applyTransactionState\u0027 directly.\n- The queue is protected by queue lock, apply/get states will still be\n  protected by state lock.\n- drain and apply transaction queue should be triggered in main thread.\n- Sync transaction will wait after the condition broadcast, protected\n  by stack lock.\n\nTest: atest libsurfaceflinger_unittest SurfaceFlinger_test libgui_test\nTest: atest SurfaceControlTest UiAutomationTest\nTest: manual, rotate behavior, seamless rotation, wm-smoke\nBug: 166236811\nBug: 177355824\nChange-Id: Ie54a9cc6cdf514df613fba0dff95f6752d1134e2\n"
    },
    {
      "commit": "782536816d4d963b2c3dd21d3313d57f436c6e81",
      "tree": "67a16fb421b5275122bde8908ad09ab16f0c2aed",
      "parents": [
        "b89b51a0a1926ea7e33e6f0b89bea42609a7b617",
        "fc434acf530cbde198c8936bf1bc09fad5861031"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Mon Feb 01 23:09:26 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 01 23:09:26 2021 +0000"
      },
      "message": "Merge \"Add inputEventId to SurfaceFrame\" into sc-dev"
    },
    {
      "commit": "b89b51a0a1926ea7e33e6f0b89bea42609a7b617",
      "tree": "bffda58b8e0f936f70f041f690e3c462fb865452",
      "parents": [
        "87eb2c419ef230366ccbdbe980c4f49b7a70f372",
        "17ac24b6c1252f88ccaf7089fa68bee3e1ef7ed9"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Mon Feb 01 21:57:28 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Feb 01 21:57:28 2021 +0000"
      },
      "message": "Merge \"Added new arguments for screenshot request\" into sc-dev"
    },
    {
      "commit": "ab7a201e6ace9520b3f6e8768684d8ae3165c8d6",
      "tree": "f71e3c85a9ebefa98f41f57d68c7b583023e82a3",
      "parents": [
        "3a532048e89008c79ff5621e006b02a6778925eb",
        "bc384965313eaeb7d50b8755a87fc7ac0d673536"
      ],
      "author": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Sat Jan 30 03:27:46 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 30 03:27:46 2021 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Null guard for setRelativeLayer\" into sc-dev"
    },
    {
      "commit": "3a532048e89008c79ff5621e006b02a6778925eb",
      "tree": "a7c120c2037bba3bafbf45a69245e1e48117fc67",
      "parents": [
        "599f26d10d0b653fb97033700eaf24b7ae40a256",
        "819636cd1328bd0907493058fab4d799f8bb075c"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Sat Jan 30 02:04:14 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 30 02:04:14 2021 +0000"
      },
      "message": "Merge \"Ensure that expected present time is in the future\" into sc-dev"
    },
    {
      "commit": "17ac24b6c1252f88ccaf7089fa68bee3e1ef7ed9",
      "tree": "6c7b771ea9ca8b1c0d9b2810f3741c3807a035e9",
      "parents": [
        "99599940f68158aeef735d8763980d0dbd397b51"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Jan 28 18:50:05 2021 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Fri Jan 29 15:10:32 2021 -0800"
      },
      "message": "Added new arguments for screenshot request\n\nAdded frameScaleX and frameScaleY to replace frameScale to allow callers\nto specify an X and Y scale separately.\n\nAdded grayscale flag to allow the caller to take the screenshot\nin grayscale.\n\nTest: ScreenCaptureTest.CaptureWithGrayscale\nBug: 155825630\nChange-Id: Iea043b7074707df897d80bf057d7cc3870afad89\n"
    },
    {
      "commit": "90d17479efe34b355f3666cabe3dd7e34a429bff",
      "tree": "7293ef405efdccdee3afcdeb5161cafbaf38f77f",
      "parents": [
        "99599940f68158aeef735d8763980d0dbd397b51",
        "a903d03540b9ad9a8c36c3d73ead9aed58dc716a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 29 22:06:55 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 29 22:06:55 2021 +0000"
      },
      "message": "Merge \"SF: Query display modes only once during display creation / update\" into sc-dev"
    },
    {
      "commit": "819636cd1328bd0907493058fab4d799f8bb075c",
      "tree": "80a8ceff08914eac01bd547d09edc7e8d54153cf",
      "parents": [
        "99599940f68158aeef735d8763980d0dbd397b51"
      ],
      "author": {
        "name": "Snild Dolkow",
        "email": "snild@sony.com",
        "time": "Fri Jan 22 14:42:08 2021 +0100"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Jan 29 19:23:46 2021 +0000"
      },
      "message": "Ensure that expected present time is in the future\n\nonMessageInvalidate() sets mExpectedPresentTime to a value originating\nfrom the vsync event that scheduled it. If handling of the invalidate\nis delayed, this value will be in the past, which is clearly not a\nplausible present time. Because of this, queued frames may incorrectly\nbe ignored as \"too early\".\n\nThis has caused problems in screen-on animations: even though the first\nframe is drawn and ready, SurfaceFlinger shows an old frame. This looks\nparticularly bad with a fade-from-black animation: the old frame flashes\nby before the first frame of the animation shows.\n\nHere\u0027s an example timeline of how this problem could manifest:\n\n 1000 ms    INVALIDATE queued with expectedVSyncTimestamp \u003d 1010ms\n 1013 ms    SF calls setPowerMode()\n 1014 ms    SystemUI queues new NotificationShade frame\n 1255 ms    setPowerMode() returns; invalidate can now be handled\n 1256 ms    invalidate runs; mExpectedPresentTime set to 1010ms\n 1257 ms    handlePageFlip() skips NotificationShade frame; \"too early\"\n 1259 ms    refresh runs, composits prehistoric NotificationShade frame\n\nIt\u0027s a bit of a race: if SystemUI manages to queue its new frame before\nthe INVALIDATE message\u0027s timestamp, there won\u0027t be a problem.\n\nTo solve this, let\u0027s check that the expected present time is in the\nfuture, and pick the nearest future vsync point if it\u0027s not. In order\nto not break frame miss detection, mScheduledPresentTime is introduced\nand used instead of mExpectedPresentTime for jank calculations.\n\nFixes: 178415552\nTest: manual on Xperia device; flash of old frame is gone\nTest: compiles on aosp/redfin\nChange-Id: I095f1dd08374fd1d14552cd1af90d95e9718b4dd\n"
    },
    {
      "commit": "fc434acf530cbde198c8936bf1bc09fad5861031",
      "tree": "2f22c6a51fe8cd66f106004d9b438f52c8eeccf2",
      "parents": [
        "99599940f68158aeef735d8763980d0dbd397b51"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Jan 13 10:28:00 2021 -1000"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Jan 29 18:48:01 2021 +0000"
      },
      "message": "Add inputEventId to SurfaceFrame\n\nSurfaceFrame will now be aware of the id of the input event that caused\nthe current frame.\n\nThe flow of input event id is inputflinger -\u003e app -\u003e surfaceflinger.\nHere, we are adding the \u0027inputEventId\u0027 parameter to the\n\u0027setFrameTimelineVsync\u0027 call. This call will now be responsible for\nsetting two pieces of information: the vsync id, and the input event id.\nSince it will no longer be limited to the vsync id, we rename this call\nto \"setFrameTimelineInfo\".\n\nOnce the inputEventId is stored in SurfaceFrame, we will add a binder\ncall to send the frame timing information to inputflinger (separate,\nfuture CL). This will allow input to reconstruct the entire sequence of\nevents (at what time was input event getting processed in system_server,\napp, and surfaceflinger) and will provide the ability to measure\nend-to-end touch latency.\n\nIn a separate change, we will also add ATRACE calls to allow manual /\nscript-based latency analysis for local debugging. We will now know\nwhich input event is being processed in surfaceflinger.\n\nBug: 169866723\nBug: 129481165\nDesign doc: https://docs.google.com/document/d/1G3bLaZYSmbe6AKcL-6ZChvrw_B_LXEz29Z6Ed9QoYXY/edit#\nTest: atest WMShellUnitTests SurfaceParcelable_test libgui_test IPC_test SurfaceFlinger_test\n\nChange-Id: If7e0eee82603b38b396b53ad7ced660973efcb50\nMerged-In: If7e0eee82603b38b396b53ad7ced660973efcb50\n"
    },
    {
      "commit": "99599940f68158aeef735d8763980d0dbd397b51",
      "tree": "b8620b3a33b7d51223a4a22707d1bab2669de793",
      "parents": [
        "31999efbac943af5c43c64a6929d5fe5857c6532"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jan 27 20:27:23 2021 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Jan 29 18:03:58 2021 +0000"
      },
      "message": "SurfaceFlinger: move sync_wait for screen capture to client\n\nFree up time from the SF\u0027s main thread by moving the fence waiting\nto the client.\n\nTest: Observe systrace of region sample thread\nTest: adb shell screencap\nTest: Recents takes the screenshot\nTest: Rotate device\nTest: Volume + power down for screenshot\nBug: 178649983\nChange-Id: I0a4991c013375b1f354e0728a06ca30a835b0422\n"
    },
    {
      "commit": "31999efbac943af5c43c64a6929d5fe5857c6532",
      "tree": "596a67ae387127da902645f1029b1d298ba40b63",
      "parents": [
        "aebf2476c302a93fe177a8e9f1824c530d9f216b",
        "f6eddb6b42a9548f1298e899ea06a7a042182783"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 29 17:52:52 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 29 17:52:52 2021 +0000"
      },
      "message": "Merge \"Enable backpressure for BufferStateLayer\" into sc-dev"
    },
    {
      "commit": "a903d03540b9ad9a8c36c3d73ead9aed58dc716a",
      "tree": "4c4562b7e37cda1c334c5c112067d65d9f14d096",
      "parents": [
        "1c3cd7709e55c5f04817cf4d86214878ac3ff8f3"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Dec 29 20:35:13 2020 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Fri Jan 29 18:00:27 2021 +0100"
      },
      "message": "SF: Query display modes only once during display creation / update\n\nCurrently HWComposer::getActiveMode / getModes is called multiple\ntimes when creating or updating a display. This is unnecessary\nand risky because the getActiveMode may return a different value\nif a hotplug event has ocured in between.\n\nIn this CL we call getActiveMode and getModes only once and propagate\nthe values using DisplayDeviceState.\n\nBug: 159590486\nTest: presubmit\nChange-Id: I97418163426a0ae19f79bc2912a7d725c953ad01\n"
    },
    {
      "commit": "1c3cd7709e55c5f04817cf4d86214878ac3ff8f3",
      "tree": "762429f64f67b6f44e2cebb290795097a01e22ac",
      "parents": [
        "52bf7808c6a0df79b7c74be4960c191b4ac679df",
        "12c9e5af8375e8cd32ab6aebb180566c19d796e1"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Fri Jan 29 14:37:41 2021 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 29 14:37:41 2021 +0000"
      },
      "message": "Merge changes Id05d2eac,I3d8bcbf8 into sc-dev\n\n* changes:\n  SF: Add DisplayDevice::initiateModeChange\n  SF: Store display modes in DisplayDevice\n"
    },
    {
      "commit": "12c9e5af8375e8cd32ab6aebb180566c19d796e1",
      "tree": "b64cca247f846e1c26af03d3b3a1544852f6b2ec",
      "parents": [
        "5801c9495dabca7e33068f278479e7b73e51749c"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Thu Jan 07 00:25:35 2021 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Thu Jan 28 21:52:55 2021 +0100"
      },
      "message": "SF: Add DisplayDevice::initiateModeChange\n\nThis CL creates DisplayDevice::initiateModeChange which calls\nHWC::setActiveConfigWithConstraints. SF should call DisplayDevice\ninstead of directly calling HWComposer.\nThis is a step towards removing the cached display modes from\nthe HWComposer class.\n\nTest: presubmit\nBug: 159590486\nChange-Id: Id05d2eacbbb6ed335fe205231b85e8af9a8ccd91\n"
    },
    {
      "commit": "5801c9495dabca7e33068f278479e7b73e51749c",
      "tree": "572ae22e6b6ed53d9fb5f4fef6b20dc699dd8f97",
      "parents": [
        "814bc2250c245ddc03f505e8d0424aae66b3567f"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Thu Dec 17 17:00:13 2020 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Thu Jan 28 21:52:52 2021 +0100"
      },
      "message": "SF: Store display modes in DisplayDevice\n\nMake DisplayDevice the source of truth for display modes\nand call HWComposer only on hotplug in order to populate\nthe state of DisplayDevice. Additionally rename s/config/mode\nin DisplayDevice.\n\nBug: 159590486\nBug: 175678215\nTest: atest libsurfaceflinger_unittest\nChange-Id: I3d8bcbf8f74d910213e0cbe3bcdd839323076e56\n"
    },
    {
      "commit": "f6eddb6b42a9548f1298e899ea06a7a042182783",
      "tree": "3c3cfcc5c4589cc80069a25de8a362f7f5434599",
      "parents": [
        "dd5bfa93b0c6633b7372c87fc8d7a83a73a5cd1c"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Jan 27 22:02:11 2021 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Jan 28 11:54:57 2021 -0800"
      },
      "message": "Enable backpressure for BufferStateLayer\n\nThe default behaviour of buffer state layer is to drop older\nbuffers if there are newer buffers that are ready to be presented.\n\nWhen emulating BufferQueue behavior via the adapter, we want\nto queue up buffers without any present timestamps. To solve this,\nwe introduce a layer state flag to keep the buffer in the transaction\nqueue if there is already a buffer that is ready to be applied.\n\nTest: atest SurfaceViewBufferTests:BufferPresentationTests\nBug: 176967609\nChange-Id: I33f6347bd1c7a2d80dc4214e596bb864abe8c6bf\n"
    },
    {
      "commit": "8ba8b076a0335155a57a9e8004614c302d07c154",
      "tree": "6d63463f350df1ab7414b89239a0ca543bf8e05b",
      "parents": [
        "263aff5505f0efdcc8f36db3150b8e1c9137c765"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Jan 25 14:55:46 2021 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Jan 27 18:23:37 2021 -0800"
      },
      "message": "Remove detachChildren\n\nSince there are no longer callers of detachChildren, remove code and\ntest that involve detachChildren\n\nTest: Builds and remaining tests pass\nBug: 177557720\nChange-Id: Id5b7120b7f2c289d4e7ffb5565b29e2be18d6587\n"
    }
  ],
  "next": "bc384965313eaeb7d50b8755a87fc7ac0d673536"
}
