)]}'
{
  "log": [
    {
      "commit": "f4dca6bc7c6e51046135bd70fceea795296d6c20",
      "tree": "47e3a959c6fe795387c79499ed8f94005a097e94",
      "parents": [
        "0d83872951243cc6f3dcd3c65f33b23a1f2c8374",
        "a052071b719c5fe933892dcc96e8fc1cbe791269"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 15 22:05:28 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 15 22:05:28 2019 +0000"
      },
      "message": "Merge \"surfaceflinger: initialize ActiveConfigInfo fields.\""
    },
    {
      "commit": "a052071b719c5fe933892dcc96e8fc1cbe791269",
      "tree": "bd9beda1a7a2f03e9669c1e6e4454b9a3ebcfb05",
      "parents": [
        "19143968d70f10f72327d0eca4152758268dcdad"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Nov 14 15:38:04 2019 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Nov 14 18:37:55 2019 -0800"
      },
      "message": "surfaceflinger: initialize ActiveConfigInfo fields.\n\nPreviously, the two ActiveConfigInfo fields in SurfaceFlinger are\nuninitialized upon construction, and when run with debugging code that\nslows down open, we reliably hit a case where setRefreshRateType is\ncalled on an uninitialized RefreshRateType, leading to explosion.\n\nTest: booted with libfdtrack\nChange-Id: I14520775f8660fee6545d8a354a04ed3674a1597\n"
    },
    {
      "commit": "c4def15ae32be3949d3cf40a4314c165c6be76f5",
      "tree": "5d88f0044daff1d44b2dca96308d7613881c69cd",
      "parents": [
        "7618ed32d33610761b14083866d34eaa4540fd9b"
      ],
      "author": {
        "name": "Nataniel Borges",
        "email": "natanieljr@google.com",
        "time": "Thu Sep 26 15:20:00 2019 +0200"
      },
      "committer": {
        "name": "Nataniel Borges",
        "email": "natanieljr@google.com",
        "time": "Tue Nov 12 16:01:19 2019 +0100"
      },
      "message": "[DO NOT MERGE] Log Winscope tracing with the frame composition time\n\nCurrently the tracing log takes the current timestamp for the log entry.\nHowever, the tracing start after the frame is composed. On winscope\nthis result in the trace entry being linked to the incorrect video\nframe (screenrecord). Now we obtain the frame composition time (before\nthe frame is send to the video recorder) and use this time for the log\nentry.\n\nTest: Log a SF trace and screen recording. Open both on winscope.\nChange-Id: I81a88ef7a81a084f2ecf75bf5574a1118301a48e\n"
    },
    {
      "commit": "5b47bbc7da3ee6f50e75eaf443176ff1bc4384d6",
      "tree": "2aae7c31b0d55a5386a5248f42b36a3e3922986c",
      "parents": [
        "968fc9aa0577dd7cd97cd3416803d2eba4ae021f"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jul 24 18:05:56 2019 -0700"
      },
      "committer": {
        "name": "Nick Desaulniers",
        "email": "ndesaulniers@google.com",
        "time": "Tue Nov 05 15:50:19 2019 -0800"
      },
      "message": "SurfaceFlinger: prevent division by 0 in Layer::fillInputInfo\n\nCheck if scale is 0 before trying to apply it on the window scale.\n\nBug: 137560795\nBug: 139945549\nTest: Set Window Scale Animation to off from developer options menu\nChange-Id: Id372d75de5787f62a9cce7c22699216e135bd0f6\nMerged-in: I7ae84e2838b1562ff62cdd94484bedba954e1f33\nSigned-off-by: Nick Desaulniers \u003cndesaulniers@google.com\u003e\n"
    },
    {
      "commit": "968fc9aa0577dd7cd97cd3416803d2eba4ae021f",
      "tree": "78ec8af4d1e6726381f482e2771782684a91f5d2",
      "parents": [
        "d7ed6b5f34ac9b30be6aff15694e1365d50e6f0a"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jul 24 18:09:29 2019 -0700"
      },
      "committer": {
        "name": "Nick Desaulniers",
        "email": "ndesaulniers@google.com",
        "time": "Tue Nov 05 15:50:03 2019 -0800"
      },
      "message": "Revert \"SurfaceFlinger: debug layer bounds inset\"\n\nRevert the debug patch as layer seems to ve valid.\nInstead validate the input to avoid an overflow.\n\nBug: 137560795\nBug: 139945549\nTest: boot\n\nThis reverts commit 38172ad8cf4a3dc3ee801cb295de891050993438.\nMerged-in: Ia1687bca84361dc8f665b9c0f893b8f40c5362e1\nChange-Id: I07905d1e69b8c0a7dd23e620252fc7c133ed666e\nSigned-off-by: Nick Desaulniers \u003cndesaulniers@google.com\u003e\n"
    },
    {
      "commit": "efad7639c003cc9dc6fce992402eacff5559c510",
      "tree": "ada6643022bca72677e5c55c34c6dbe5907ea631",
      "parents": [
        "1f39e870d250cd91ba960058438ea6bdf94d1412",
        "8ba0cadc7de8f7c65d58eac5878ca0a18d363c96"
      ],
      "author": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Mon Oct 21 15:50:26 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Oct 21 15:50:26 2019 -0700"
      },
      "message": "Merge \"Update the OWNERS file for TimeStats\"\nam: 8ba0cadc7d\n\nChange-Id: Iad9cdbd9a44e045eecbba3d9c74f769466e7a705\n"
    },
    {
      "commit": "a5a8bbd1ab6462951bcc3688995cc1ca4872dc4d",
      "tree": "33bcf3a0df835cb987b33934cc623942c7c0b2a4",
      "parents": [
        "95e8de25761a8c5f5bdf7054dfdf0df38d483d65"
      ],
      "author": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Mon Oct 21 13:53:24 2019 -0700"
      },
      "committer": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Mon Oct 21 13:53:24 2019 -0700"
      },
      "message": "Update the OWNERS file for TimeStats\n\nBug: 140266250\nTest: build\nChange-Id: I9129634d362ca9168feeb8afb277fc05c7210649\n"
    },
    {
      "commit": "0883f45f03defad3146090c4e3c0482afe7d3d5a",
      "tree": "e768571bd536fd162f81b9382a5dd50db1f354c9",
      "parents": [
        "0f74c737d10f9b0381b035e0620ff2fd06f92522",
        "ac5b759433eb5f8667e9c5330233b95bb30855fc"
      ],
      "author": {
        "name": "LuK1337",
        "email": "priv.luk@gmail.com",
        "time": "Wed Sep 25 22:52:56 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Sep 25 22:52:56 2019 -0700"
      },
      "message": "Merge \"surfaceflinger: Pass proper transform orientation to setProjection()\"\nam: ac5b759433\n\nChange-Id: Ia239410c281e62195951d55514a5aa9b2c03d693\n"
    },
    {
      "commit": "ac5b759433eb5f8667e9c5330233b95bb30855fc",
      "tree": "a948a72d12024c890b1c77a4bd2b13b75dd7bb69",
      "parents": [
        "6f30b0626e353b6c486c6cc367b59d0c72359281",
        "a4adfb19df934fd1e5f4f4b1a1c815ee209f02e0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 26 05:32:50 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 26 05:32:50 2019 +0000"
      },
      "message": "Merge \"surfaceflinger: Pass proper transform orientation to setProjection()\""
    },
    {
      "commit": "6f30b0626e353b6c486c6cc367b59d0c72359281",
      "tree": "2bca2f567c8653e50b6c4b62edeecd29989be4fa",
      "parents": [
        "5dd4cec081ffbbd39b50510c055c784e4968e3bc",
        "54de25d696cd592a515ae49b110f196b9f53c7d7"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Sep 25 21:21:49 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 25 21:21:49 2019 +0000"
      },
      "message": "Merge changes from topic \"b/138397514\"\n\n* changes:\n  SurfaceFlinger: get present time from SF and not from Scheduler\n  [SurfaceFlinger] correct present time for negative phase offsets\n  [SurfaceFlinger] Some dispsync fixes for early event firing\n  [SurfaceFlinger] fix permanently enabling early offsets.\n"
    },
    {
      "commit": "a533b92720c7504fff3ee9010078b6567c7b54fb",
      "tree": "5db1f9e24d689a1a0ed85baa97c68c675e9e90e6",
      "parents": [
        "52d123c9603550ab46845ad22c85cd633dc0218e",
        "3289d4616b1910c23f5e7c32fb42951b7d3a3ff6"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Wed Sep 25 06:19:06 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Sep 25 06:19:06 2019 -0700"
      },
      "message": "Merge changes from topic \"flicker-move\"\nam: 3289d4616b\n\nChange-Id: I0012d9529835ac4dc00b90df36e38631cd00b40b\n"
    },
    {
      "commit": "52d123c9603550ab46845ad22c85cd633dc0218e",
      "tree": "59c9872806ebb119946231d9870e3419e98a8913",
      "parents": [
        "175ae231cf4762f86445563d3f7ae9b3b890eb70",
        "b57b01e59d10f943a2ea6039a7c097bdbbcf02e7"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Sep 25 06:18:53 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Sep 25 06:18:53 2019 -0700"
      },
      "message": "Fix locking issues with proto dumps\nam: b57b01e59d\n\nChange-Id: I7a3e71d68b394357da98de6a9705f0d4cc180791\n"
    },
    {
      "commit": "54de25d696cd592a515ae49b110f196b9f53c7d7",
      "tree": "f75cafdc10336e91ef73abcdbfea7d9f4845f93e",
      "parents": [
        "2b2bbd3975f8931d7d79c7ef4cb4f28deef46588"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jun 12 17:11:12 2019 -0700"
      },
      "committer": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Tue Sep 24 10:56:48 2019 -0700"
      },
      "message": "SurfaceFlinger: get present time from SF and not from Scheduler\n\nSF hold the most accurate expected present time as it also knows\nwhether we are operating at negative offset and which vsync\nwe are targeting.\n\nBug: 133241520\nBug: 134589085\nTest: systrace when scrolling\nChange-Id: I934df3a8bf807b0e52555765a6861f252b69c0d1\nMerged-In: I934df3a8bf807b0e52555765a6861f252b69c0d1\n"
    },
    {
      "commit": "2b2bbd3975f8931d7d79c7ef4cb4f28deef46588",
      "tree": "692818af9f5f475a164401ac4ab8b5ee4fefa1be",
      "parents": [
        "1265a9060ea431cc815fbf7b39b17dbc61f6fa71"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Jun 06 13:28:34 2019 -0700"
      },
      "committer": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Tue Sep 24 10:56:35 2019 -0700"
      },
      "message": "[SurfaceFlinger] correct present time for negative phase offsets\n\nDispSync::expectedPresentTime returns the expected presentation time for\nthe current frame, but when we\u0027re in negative offsets we are targetting\nthe following frame instead.\n\nBug: 133241520\nBug: 134589085\nTest: systrace when flinging through news\nChange-Id: I7cc05a0b9e8e9b5c3e8d0c4b1d59b0a7dabd43d4\nMerged-In: I7cc05a0b9e8e9b5c3e8d0c4b1d59b0a7dabd43d4\n"
    },
    {
      "commit": "1265a9060ea431cc815fbf7b39b17dbc61f6fa71",
      "tree": "1f8f4affdcb0764d92b8ea558845171e1505a678",
      "parents": [
        "2e11af0bd0954a422cfdff375951d775d87621d4"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue May 21 00:51:01 2019 -0700"
      },
      "committer": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Tue Sep 24 10:56:21 2019 -0700"
      },
      "message": "[SurfaceFlinger] Some dispsync fixes for early event firing\n\n* Fix lastEventTime for listeners so that they don\u0027t fire early.\n* Properly set mHasFired for listeners so that if the dispsync model\nis currently being updated that mHasFired is always set to true\nif lastEventTime is after the most recent vsync reference.\n\nBug: 132678707\nBug: 130684082\nTest: systrace\nChange-Id: I5b860336f12b742cc67665776290939b61e7e3af\nMerged-In: I5b860336f12b742cc67665776290939b61e7e3af\n"
    },
    {
      "commit": "2e11af0bd0954a422cfdff375951d775d87621d4",
      "tree": "86b8efda369f9b88f2b9d37d4e2d544fdfba889c",
      "parents": [
        "b5f8331e88468625a58fa161935acd083ffa9c85"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon May 20 18:32:22 2019 -0700"
      },
      "committer": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Tue Sep 24 10:56:05 2019 -0700"
      },
      "message": "[SurfaceFlinger] fix permanently enabling early offsets.\n\n* Add notion of intended period in DispSync, and use that to detect\nwhether the simulated period will be changed.\n* Propagate that signal to setDesiredActiveConfig, so that we don\u0027t fall\ninto early offsets unnecessarily, which can cause early offsets to\nalways be enabled.\n\nBug: 132678707\nTest: systrace\nTest: swappy test app\nTest: scrolling through google news\nChange-Id: I18df1b9d949cd534ecbf1c8891b6f88eab8be399\nMerged-In: I18df1b9d949cd534ecbf1c8891b6f88eab8be399\n"
    },
    {
      "commit": "6bfe2640a1bf832041f8dbde266b0384e018846e",
      "tree": "a3477bdd95e3a2a3b010a3f3475f630890c28c67",
      "parents": [
        "b57b01e59d10f943a2ea6039a7c097bdbbcf02e7"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Jun 07 14:53:14 2019 -0700"
      },
      "committer": {
        "name": "Nataniel Borges",
        "email": "natanieljr@google.com",
        "time": "Tue Sep 24 12:27:48 2019 +0200"
      },
      "message": "Fix surface tracing thread sync issues\n\nTracing thread was incorrectly reading the drawing state while it was being\nupdated by the surface flinger main thread. Move the notify to after\ncomposition.\n\nFixes: 134752356\nTest: capture surface flinger trace\nChange-Id: I2d77334f616cb4c34e6a57c84ca97425f7983152\nMerged-In: I32a59475ced80d7eaa062181c732ce0f9a81cca5\n"
    },
    {
      "commit": "b57b01e59d10f943a2ea6039a7c097bdbbcf02e7",
      "tree": "5c18cce838420723205bea90921e0ce5b200c0fc",
      "parents": [
        "b5f8331e88468625a58fa161935acd083ffa9c85"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Mon Sep 16 18:22:19 2019 +0200"
      },
      "committer": {
        "name": "Nataniel Borges",
        "email": "natanieljr@google.com",
        "time": "Tue Sep 24 12:27:28 2019 +0200"
      },
      "message": "Fix locking issues with proto dumps\n\nProto dumps are generated from:\n - binder threads when generating bugreports or triggering dumpstate\n - main thread when mLayerStats is enabled\n - tracing thread when winscope tracing is enabled.\n\nThe binder thread reads current state while the other threads reads drawing state.\n\nThe writeToProto function accesses a mix of current and drawing states. mPendingState should\nonly be accessed with the mStateLock held and the visible regions should be read from the main\nor tracing threads. This causes some invalid access issues.\n\nTo make the locking requirements clear, this change\n1. moves drawing specific data to a new function\n2. copies mPendingState so we can dump the copy safely in main thread\n3. dumps drawing data from binder threads by posting a message onto the main thread\n\nBug: 138318680\nTest: adb shell dumpsys SurfaceFlinger, winscope\n\nChange-Id: Ib2b49aedf06ee5a262d3162366ddf75d08432e05\nMerged-In: I8bb93e9b9f81faec59585b770eb7ba0fbcd9b51b\n"
    },
    {
      "commit": "a4adfb19df934fd1e5f4f4b1a1c815ee209f02e0",
      "tree": "12f61db99bfeb94bf6092fd94c5907c5a4096770",
      "parents": [
        "b5f8331e88468625a58fa161935acd083ffa9c85"
      ],
      "author": {
        "name": "LuK1337",
        "email": "priv.luk@gmail.com",
        "time": "Wed Sep 18 18:44:49 2019 +0200"
      },
      "committer": {
        "name": "LuK1337",
        "email": "priv.luk@gmail.com",
        "time": "Mon Sep 23 01:59:51 2019 +0200"
      },
      "message": "surfaceflinger: Pass proper transform orientation to setProjection()\n\n* Without adding display install orientation,\n  the orientation passed to setProjection()\n  is incorrect thus screen contents aren\u0027t\n  rendered properly.\n\nChange-Id: Ieba6992bd6148c0480a2cae681c85bed75de30f1\n"
    },
    {
      "commit": "994ab60292103797de37f59f8aacdf846dbba5a6",
      "tree": "9602c1e7a8bfcbe14eeec1b66dd76eea7110c4d9",
      "parents": [
        "a741edcd861d0fd627005702a97992095d69f398",
        "52c9985c8d0b29d37002b544b191ecfbd386023f"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Thu Sep 19 04:36:10 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 19 04:36:10 2019 -0700"
      },
      "message": "Merge \"Remove unnecessary dependencies on libsigchain.\"\nam: 52c9985c8d\n\nChange-Id: I17026c3df4817e9509a88d1bcc9cfdf2cf1fe98e\n"
    },
    {
      "commit": "26d90cb819697e898c113850fa4ca8d2211d32e9",
      "tree": "a4855060efd0d2122418131b581420877468850f",
      "parents": [
        "343ac1d4bc4eae042c61bdf33e75d906264a9633"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jul 18 12:54:28 2019 -0700"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Wed Sep 18 22:25:05 2019 +0100"
      },
      "message": "Remove unnecessary dependencies on libsigchain.\n\nsurfaceflinger was required to link against libsigchain to dlopen\nlibart.so for a debugging option that was removed in change\nIb9a129329f7bd8d67b954e58810807c683b20b48. gpuservice accidentally\nlinked against it, presumably due to copy/paste from the surfaceflinger\nAndroid.bp file.\n\nBug: http://b/120782499\nBug: http://b/135284876\nTest: treehugger\nChange-Id: I593c5483c8c096ac95f310c68f53000e06621d8b\nMerged-In: I593c5483c8c096ac95f310c68f53000e06621d8b\n"
    },
    {
      "commit": "8d5eb54030fde43bdceca1929534a67881a8c129",
      "tree": "dfc682111300e77f2c171e90f6166994e4a2f5b7",
      "parents": [
        "7a46cda5f50b0948a4fd66070d661617fe7ee59e",
        "13286c3b510661eb5f1ffbdad5e5a6881a1dbb5e"
      ],
      "author": {
        "name": "Pierre Couillaud",
        "email": "pierre.couillaud@broadcom.com",
        "time": "Mon Sep 16 12:42:33 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 16 12:42:33 2019 -0700"
      },
      "message": "Merge \"SurfaceFlinger: retain the sideband layer information for composition\"\nam: 13286c3b51\n\nChange-Id: I1f6da21a5e3401e05cb5be3c87d56503f7d6de98\n"
    },
    {
      "commit": "dae83cfcff5c581b8f143432ca0c27e6cb2cc24e",
      "tree": "b449b3e01225be7ab3dc01dfc78bff05ca4bc7a6",
      "parents": [
        "b99cafae0f5a32e0a8a24efe130f45767c275146"
      ],
      "author": {
        "name": "Ian Kasprzak",
        "email": "iankaz@google.com",
        "time": "Thu Sep 12 20:27:58 2019 -0700"
      },
      "committer": {
        "name": "Ian Kasprzak",
        "email": "iankaz@google.com",
        "time": "Thu Sep 12 20:30:08 2019 -0700"
      },
      "message": "[DO NOT MERGE] Fix aosp_arm64-eng (checkbuild).\n\nUpdate SurfaceFlingerProperties-current.txt to be compatible.\n\nBUG: 140906153\nTest: Local build with checkbuild\nChange-Id: Ia25c7546bab0abb05c6189e9f7b8d5e0ae7d9b92\n"
    },
    {
      "commit": "d66b6c2f0355573456be65905407da92d79205c7",
      "tree": "7033d62be29f9c44a2f5730ca724ad5eeb333173",
      "parents": [
        "ebbe2c45fb7b98868411f58b31cb5f9e791a24de"
      ],
      "author": {
        "name": "Pierre Couillaud",
        "email": "pierre.couillaud@broadcom.com",
        "time": "Tue Aug 27 13:43:22 2019 -0700"
      },
      "committer": {
        "name": "Pierre Couillaud",
        "email": "pierre@broadcom.com",
        "time": "Thu Sep 12 13:29:04 2019 -0700"
      },
      "message": "SurfaceFlinger: retain the sideband layer information for composition\n\nwhen present, the sideband layer stream information is not saved into\nthe BufferQueueLayer::mSidebandStream, during \"latchSidebandStream\".\n\nthis subsequently leads to such layer being marked as non visible in the\ncomposition stack and to be drop from advertisement to hardware composer\neven though a sideband layer is defined in the rest of the framework.\n\nthis seems to be a regression introduced during android 9 to android 10\nrevamp of the SurfaceFlinger for buffer latching.  latching a sideband layer is actually harmless since there is no buffer associated with it that need to be waited on from the gpu side.\n\nthe fix proposed here allows to maintain the knowledge of the sideband\nlayer and make it visible in the composition stack for hardware composer to handle adequately.\n\nfor illustration purposes, the relevant snippet of the layer composition\nstack are posted here from \"dumpsys SurfaceFlinger\", highlighting the\nissue with \"\u003e\u003e\u003e\".\n\n[before]:\n\n* compositionengine::Layer 0xa959b34c (SurfaceView - \u003ctruncated\u003e)\n    frontend:\n      isSecure\u003dfalse geomUsesSourceCrop\u003dfalse geomBufferUsesDisplayInverseTransform\u003dfalse\n               geomLayerTransform 0x00000000 (ROT_0 ) 0x00 (IDENTITY )\n    1.0000  0.0000  0.0000\n    0.0000  1.0000  0.0000\n    0.0000  0.0000  1.0000\n\n      geomBufferSize\u003d[0 0 -1 -1] geomContentCrop\u003d[0 0 -1 -1] geomCrop\u003d[0 0 -1 -1] geomBufferTransform\u003d0\n        Region geomActiveTransparentRegion (this\u003d0xa959b3f8, count\u003d1)\n    [  0,   0,   0,   0]\n      geomLayerBounds\u003d[0.000000 0.000000 0.000000 0.000000]\n      blend\u003dINVALID (0) alpha\u003d1.000000\n\u003e\u003e\u003e   type\u003d0 appId\u003d0 composition type\u003dINVALID (0)\n      buffer: buffer\u003d0x0 slot\u003d-1\n\u003e\u003e\u003e   sideband stream\u003d0x9b509900\n      color\u003d[0 0 0]\n      dataspace\u003dUNKNOWN (0) hdr metadata types\u003d0 colorTransform\u003d\u003ctruncated\u003e\n\n[after]:\n\n* compositionengine::Layer 0xa9a5034c (SurfaceView - \u003ctruncated\u003e)\n    frontend:\n      isSecure\u003dfalse geomUsesSourceCrop\u003dtrue geomBufferUsesDisplayInverseTransform\u003dfalse\n               geomLayerTransform 0x00000000 (ROT_0 ) 0x00 (IDENTITY )\n    1.0000  0.0000  0.0000\n    0.0000  1.0000  0.0000\n    0.0000  0.0000  1.0000\n\n      geomBufferSize\u003d[0 0 -1 -1] geomContentCrop\u003d[0 0 -1 -1] geomCrop\u003d[0 0 1920 1080] geomBufferTransform\u003d0\n        Region geomActiveTransparentRegion (this\u003d0xa9a503f8, count\u003d1)\n    [  0,   0,   0,   0]\n      geomLayerBounds\u003d[0.000000 0.000000 1920.000000 1080.000000]\n      blend\u003dNONE (1) alpha\u003d1.000000\n\u003e\u003e\u003e   type\u003d1 appId\u003d10064 composition type\u003dSIDEBAND (5)\n      buffer: buffer\u003d0x0 slot\u003d-1\n\u003e\u003e\u003e   sideband stream\u003d0x9a1472b0\n      color\u003d[0 0 0]\n      dataspace\u003dUNKNOWN (0) hdr metadata types\u003d0 colorTransform\u003d\u003ctruncated\u003e\n\nBug: 140128098\nrefs #SWANDROID-6178\n\nSigned-off-by: Pierre Couillaud \u003cpierre.couillaud@broadcom.com\u003e\n"
    },
    {
      "commit": "6a5fab707b47d2e2390973c1c59d2666380fe8b8",
      "tree": "8274871db2580e4008678444dc66dca7a910e519",
      "parents": [
        "ed8a1acbc129c8641b92df4c85be6d9580d9d7df",
        "76cc73e91c8be1be49ca7264d21178b0c60ccec8"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Sep 11 20:31:36 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 11 20:31:36 2019 +0000"
      },
      "message": "Merge \"Merge qt-r1-dev-plus-aosp-without-vendor (5817612) into stage-aosp-master\" into stage-aosp-master"
    },
    {
      "commit": "7a10a4f54357031d076e30601432ea1b1553b098",
      "tree": "7b0d021e7b1182bfc9cf778d6597ad6fcc9f90fe",
      "parents": [
        "c3ba3a0019615cb3c2b52f2f125b87b0154ee052"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Fri Sep 06 12:09:08 2019 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Sep 09 10:46:17 2019 -0700"
      },
      "message": "Remove libhwbinder/libhidltransport deps\n\nSince these were combined into libhidlbase.\n\nBug: 135686713\nTest: build only (libhwbinder/libhidltransport are empty)\nChange-Id: Iec1802ce9226570d3a02cc5242f7ca72e1370635\n"
    },
    {
      "commit": "76cc73e91c8be1be49ca7264d21178b0c60ccec8",
      "tree": "0a7fa5c19d5d29d40aab5181e0ee02e4f73f0362",
      "parents": [
        "b9a4f9efdd42eaaf495b9433db2fc5db3a813b94",
        "5d5329644df97df2718a63c29345fdc17a75b9b5"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Sun Sep 08 22:07:47 2019 -0700"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Sun Sep 08 22:07:47 2019 -0700"
      },
      "message": "Merge qt-r1-dev-plus-aosp-without-vendor (5817612) into stage-aosp-master\n\nBug: 135460123\nChange-Id: I02a643052e3023ac029cdec76ee24dfa99d82b29\nMerged-In: Ied9a812f235e2a5146381b0ac8c602db1c6035f5\n"
    },
    {
      "commit": "8d4c2137300c18c7eabeb829d2ae88f6f197f977",
      "tree": "b2ea27c336bbb3912235ca6d162c8994a07e675f",
      "parents": [
        "d483db1fba2bb59bcda91d6375e367dceabf4032",
        "2173449d9dccb15b87c9df5d373dc32e1dcabed6"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Aug 23 06:45:15 2019 +0000"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Fri Aug 23 06:45:15 2019 +0000"
      },
      "message": "DO NOT MERGE - Merge build QP1A.190711.019 into stage-aosp-master\n\nBug: 139893257\nChange-Id: I760b21ca5c15067de39e3d9963041c05ce7121db\n"
    },
    {
      "commit": "512d12fb5919de1db5ce7be456c1fc0bfce1bdd1",
      "tree": "97a7d5d1f83ed399134f2aca7c3ec365dd76f569",
      "parents": [
        "9d588cee02ffd3cc6ed6a1491f98809901035e20"
      ],
      "author": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Tue Jul 30 18:24:39 2019 +0900"
      },
      "committer": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Tue Aug 20 17:32:13 2019 +0900"
      },
      "message": "Implement sysprop_library API stability check\n\nsysprop_library now checks the API stability itself, cutting dependency\non java_sdk_library. Under the directory {module_dir}/api,\n{module_name}-current.txt and {module_name}-latest.txt hold API\nsignatures.\n\nWhen sysprop_library is built, or a user run \"m {module_name}-check-api\"\ncommand, API check is performed. First, current.txt must have exactly\nsame signature with built sysprop_library module. Second, current.txt\nmust be compatible with latest.txt.\n\nBuild system emits a handy error message to generate/update those API\nfiles, in case of missing or mismatching. Also, a script file for\nfreezing API files is introduced.\n\nBug: 131637873\nTest: 1) m \u0026\u0026 boot blueline\nTest: 2) m {sysprop_library} performs API check\nTest: 3) manual test for check-api, freezing api\nChange-Id: I7812db716ca42055caa70385c71a90de49fc1afc\nMerged-In: I7812db716ca42055caa70385c71a90de49fc1afc\n(cherry picked from commit 0bbb2a1e5a5d8a67591b731a2497dd0ce0305a26)\n"
    },
    {
      "commit": "9d588cee02ffd3cc6ed6a1491f98809901035e20",
      "tree": "d4deee30045be55128592bfd2e3f096ae7bc3f07",
      "parents": [
        "73523fdcb32bf22d55bad91c7068be7808a81fb2"
      ],
      "author": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Sat Jun 08 20:47:59 2019 +0900"
      },
      "committer": {
        "name": "Inseob Kim",
        "email": "inseob@google.com",
        "time": "Tue Aug 20 17:28:16 2019 +0900"
      },
      "message": "Change surfacefliger properties scopes to public\n\nFor sysprop_library, System scope and Public scope are identical from\nnow on, and only Public or Internal scope are suppose to be used. This\nchanges existing system scopes to public, and has no effect on code\nlevel.\n\nBug: 131637873\nTest: mma\nChange-Id: Ib285432d66fbe9ca99d94edb41b424937f04b26d\nMerged-In: Ib285432d66fbe9ca99d94edb41b424937f04b26d\n(cherry picked from commit 44f34c55fc98247129b696109c4661570ab73dd2)\n"
    },
    {
      "commit": "0c2b98740df710c69a4aafd5270ae601cb5769ef",
      "tree": "cea5bee3406e60e047d73d530ba1961136502300",
      "parents": [
        "9b9e099b9386196d66fe0ff60b3254e9ca8a4e81",
        "575149f8f04136759e34d298966dd5e9a84b1cde"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Sat Aug 17 00:24:29 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Aug 17 00:24:29 2019 -0700"
      },
      "message": "Merge \"Remove test image\" into qt-r1-dev\nam: 575149f8f0\n\nChange-Id: I4bdc3ca1bf5b1a69e8361b0e031b5da49130bd81\n"
    },
    {
      "commit": "63edd27c0843a7c9b4268b86c3b991d78607f888",
      "tree": "ab5ad9aa85e22bbdc5f35f6c3b1901c969cfb519",
      "parents": [
        "9939d091ec7da4436ce247699c6781075e840af2"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Aug 15 18:24:55 2019 -0700"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Aug 15 18:25:12 2019 -0700"
      },
      "message": "Remove test image\n\nBug: 139427228\nTest: builds\nChange-Id: I72ff075bbf878c39a17803b2d74181fbe045a3fb\n"
    },
    {
      "commit": "e92f785c7c8f165b8f57a939732feb4420c1f21a",
      "tree": "04ddcd8971404e20d05b8faabeeca994af6fcfbf",
      "parents": [
        "c83671c60d0144cb228c3a1b7212c71e3e37ce8e",
        "35de0f7adea6ae73b497960972f80cc126a10bd1"
      ],
      "author": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Wed Aug 14 12:04:07 2019 -0700"
      },
      "committer": {
        "name": "Xin Li",
        "email": "delphij@google.com",
        "time": "Wed Aug 14 12:04:07 2019 -0700"
      },
      "message": "DO NOT MERGE - Merge qt-dev-plus-aosp-without-vendor (5713463) into stage-aosp-master\n\nBug: 134405016\nChange-Id: I4dd4276ada501f1ad20936d2e84a740807bce5f6\n"
    },
    {
      "commit": "b453a500e956cad26f33b3f2626f6ce569ee31ca",
      "tree": "e48fd3b22961cdfdb69fd23cdaee1d393b017bca",
      "parents": [
        "e3d722e6d2e80361d4bb3b0d6e4d8f68095af7f9",
        "9939d091ec7da4436ce247699c6781075e840af2"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Aug 12 15:51:50 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 12 15:51:50 2019 -0700"
      },
      "message": "Merge \"[SurfaceFlinger] Callback to renderengine when erasing BLAST buffers\" into qt-r1-dev\nam: 9939d091ec\n\nChange-Id: I88ca1b317fa8e07606a0946b6f3fe729442e6fa1\n"
    },
    {
      "commit": "9939d091ec7da4436ce247699c6781075e840af2",
      "tree": "26ca075efa955930fe700285c5975eda5c949885",
      "parents": [
        "cdd0f9d88e8dec40629f60726212e26397a76475",
        "4545a8a3ffece9db0732cb9183ed253dc22e8216"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 12 22:23:35 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 12 22:23:35 2019 +0000"
      },
      "message": "Merge \"[SurfaceFlinger] Callback to renderengine when erasing BLAST buffers\" into qt-r1-dev"
    },
    {
      "commit": "4545a8a3ffece9db0732cb9183ed253dc22e8216",
      "tree": "144ace6c6f0a625e521752ff12fa1ed8e4fd9c08",
      "parents": [
        "2a7a3bfec713dac55a482c60e977333b63cb7de5"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Aug 08 20:05:32 2019 -0700"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Aug 12 22:23:20 2019 +0000"
      },
      "message": "[SurfaceFlinger] Callback to renderengine when erasing BLAST buffers\n\nOtherwise we may leak if BufferStateLayer is destroyed first.\n\nBug: 137514000\nTest: Over 61 hours, ran: while [ true ]; do am start -n \\\ncom.android.chrome/com.google.android.apps.chrome.Main \\\nhttp://m.youtube.com; sleep 10; input tap 740 740 ; sleep 10; input \\\nkeyevent HOME; sleep 0.5; am force-stop com.android.chrome; sleep 0.5; \\\ndone\nTest: Over \u003e30 minutes: while [ true ]; do am start -n \\\ncom.android.chrome/com.google.android.apps.chrome.Main \\\nhttp://m.youtube.com; sleep 10; input tap 740 740; \\\nsleep 1; content insert --uri content://settings/system --bind \\\nname:s:user_rotation --bind value:i:1; sleep 4; content insert --uri \\\ncontent://settings/system --bind name:s:user_rotation --bind value:i:0; \\\nsleep 5; input keyevent HOME; sleep 0.5; \\\nam force-stop com.android.chrome; sleep 0.5; done\nTest: CtsViewTestCases:ASurfaceControlTest\nTest: CtsViewTestCases:SurfaceControlTest\nTest: Transaction_test\n\nChange-Id: I743eb8bd9887d17e08b6f1b8e8ec5874359df175\n"
    },
    {
      "commit": "e3d722e6d2e80361d4bb3b0d6e4d8f68095af7f9",
      "tree": "8ac63742d80a02bab6eaf6db0de356ab3614d107",
      "parents": [
        "45c1fa79bfd2e326dca906e1085cbf6ffc610013",
        "cdd0f9d88e8dec40629f60726212e26397a76475"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Aug 12 09:41:47 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 12 09:41:47 2019 -0700"
      },
      "message": "SurfaceFlinger: clamp frame refresh duration to min refresh duration\nam: cdd0f9d88e\n\nChange-Id: I3488b0d39e2ad75435b65cac6a254afccf00db02\n"
    },
    {
      "commit": "cdd0f9d88e8dec40629f60726212e26397a76475",
      "tree": "28e1909736dc6c759cbd0eab7d9934acaf82009a",
      "parents": [
        "2a7a3bfec713dac55a482c60e977333b63cb7de5"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Aug 09 10:44:59 2019 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Aug 09 23:42:31 2019 +0000"
      },
      "message": "SurfaceFlinger: clamp frame refresh duration to min refresh duration\n\nSome applications may send doubles frames which are scheduled to be\npresented very close to each other. In this case to avoid calculating\na very high fps for the layer, clamp the refresh duration to the minimal\nvalue allowed for the layer.\n\nTest: YouTube play \"YouTube 60fps Tester\" video.\nBug: 139209733\nChange-Id: I4bcdfad65b57782ec6e346e8d884bfb6e2abac4d\n"
    },
    {
      "commit": "6b5df8afecb898c494c74d0ee88140e3bb617ee9",
      "tree": "7637aefd7d6fa114e55ebe16f7f9f90e190c017c",
      "parents": [
        "7135b5f6f40a648b0f24a7e125b1cd42dfcc77cb",
        "53fcce5af1ee0ab14a10166cf8d17202433808d8"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Aug 05 21:22:17 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 05 21:22:17 2019 -0700"
      },
      "message": "Merge \"[RenderEngine] add an ImageManager thread\" into qt-r1-dev\nam: 53fcce5af1\n\nChange-Id: Ib3c66f8c66105f6901c8a5ab5559951def52c3da\n"
    },
    {
      "commit": "16a9940abee8752d8566e6c7b52b22d10693512b",
      "tree": "15e409af9c1246d67dfb3188b977468413e91b8f",
      "parents": [
        "4ede27d7bc1e0bbe8d17db3a8d850af6c1c95931"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Jul 29 16:37:30 2019 -0700"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Aug 05 14:44:52 2019 -0700"
      },
      "message": "[RenderEngine] add an ImageManager thread\n\nPrior to this change, EGLImage management would be performed by both\nbinder threads and the main rendering thread in a synchronized manner.\nBut because of BufferQueue implementation details, it\u0027s possible for an\napp\u0027s Surface to be disconnected (destroying all backing EGLImages per\nthe disconnect api spec), while still latching and presenting the most\nrecently queued image (which requires recreating the EGLImage on the\nmain thread), which can cause jank in some scenarios such as app-launch.\n\nTo mitigate this, defer EGLImage creation and destruction to a separate\nthread behind RenderEngine so that creating the EGLImage should never be\ndone on the main thread. So scenarios such as app-launch avoid jank by\nperforming the EGLImage creation asynchronously with the main thread, so\nthat the creation is done by the time RenderEngine needs to start\nrendering.\n\nBug: 136806342\nBug: 137191934\nTest: Launching photos app shows no bindExternalImage* calls\nduring the rendering path\nTest: librenderengine_test\nChange-Id: Ib809e36267b5604bbbedd4089d15666b22cabc95\n"
    },
    {
      "commit": "d6ef51cae82c1bb7be4391e3f74977c2c1c543bf",
      "tree": "24118ff593e5d924c83519447544de08f681d36b",
      "parents": [
        "731fa96898654dd0400cf5dd9bc1beb0b688f90f",
        "6cabc2a4edf74d132ad66c21189ee7d0e7886dd7"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Thu Jul 25 17:49:45 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 25 17:49:45 2019 -0700"
      },
      "message": "Merge \"Merge damage region when dropping an app buffer\" into qt-r1-dev\nam: 6cabc2a4ed\n\nChange-Id: I0c3083bd7d187f6917299733299ba0378c984bb6\n"
    },
    {
      "commit": "44685cb3f0e53c0f0b5f260891b9dd78d25410d4",
      "tree": "c7078c63f08c1f9c9af3c5cdaaa743309bede78b",
      "parents": [
        "74d87f731e55d0241b0b6d098ac5161ca42887d1"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Tue Jul 23 16:19:31 2019 -0700"
      },
      "committer": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Wed Jul 24 16:37:35 2019 -0700"
      },
      "message": "Merge damage region when dropping an app buffer\n\nWhen we decide to drop a buffer from a buffer queue, make sure to merge\nthe damage region from the dropped buffer into the current damage\nregion. Otherwise we\u0027ll pass the wrong damage region to hardware\ncomposer and get broken rendering.\n\nBug: 136158117\nTest: Wrote a new test in Transaction_test.cpp to repro the problem and\nconfirm the fix works.\n\nChange-Id: Icdc61e1be3297450f2869c496dad1453fb6dca6d\n"
    },
    {
      "commit": "a269e21f75b1f13abf2aa65f2234fde3b5a5d663",
      "tree": "ddabdb04e6b80e520598ceeb4279e163c7ce2b7b",
      "parents": [
        "eeae637ea47f6cef0dc53381d52fd78e11f2c6d3"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Jul 22 13:07:26 2019 -0700"
      },
      "committer": {
        "name": "android-build-team Robot",
        "email": "android-build-team-robot@google.com",
        "time": "Wed Jul 24 02:22:05 2019 +0000"
      },
      "message": "SurfaceFlinger: add a sysprop for GL backpressure\n\nIn some devices where SF misses a frame in GL comp, HWC queue may\nget stuffed. This causes application to block longer on dequeueBuffer\nwhich leads to jank.\n\nTest: 1. Open Camera\n      2. Swipe horizontally to go back to previous app.\n\nBug: 138083790\nChange-Id: I4c5963cb7ba7f9b10254c77dc7117ca3acac81cf\n(cherry picked from commit 4658e11cbe1abae691454ddcf93a06763d1bf828)\n"
    },
    {
      "commit": "2a4c6108bbf72d135358e00882fae49f5ba079b5",
      "tree": "d04aac7fa6f5987eb1fcec79b5288949b18cf065",
      "parents": [
        "8793fdaa8c93199abb98446ce15e67875d883354",
        "74d87f731e55d0241b0b6d098ac5161ca42887d1"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jul 23 15:53:20 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 23 15:53:20 2019 -0700"
      },
      "message": "SurfaceFlinger: add a sysprop for GL backpressure am: 4658e11cbe\nam: 74d87f731e\n\nChange-Id: I7a9faf248d9b87edbc8018afbeb81c6db6d03146\n"
    },
    {
      "commit": "74d87f731e55d0241b0b6d098ac5161ca42887d1",
      "tree": "75b9852adc1cfd8ce613638180520d218279d882",
      "parents": [
        "b71fc342522265407ac22a2e9b996737ce8dc805",
        "4658e11cbe1abae691454ddcf93a06763d1bf828"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jul 23 15:43:19 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 23 15:43:19 2019 -0700"
      },
      "message": "SurfaceFlinger: add a sysprop for GL backpressure\nam: 4658e11cbe\n\nChange-Id: I3162bfbd6070dfeb179deaeb4b9358a027737ce5\n"
    },
    {
      "commit": "8793fdaa8c93199abb98446ce15e67875d883354",
      "tree": "80348097418c9dc6e48dbb07d6cab85c1bac2be8",
      "parents": [
        "6425fce93c880d5f685a74f059b75c0b010ce639",
        "b71fc342522265407ac22a2e9b996737ce8dc805"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jul 23 13:23:35 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 23 13:23:35 2019 -0700"
      },
      "message": "Merge \"SurfaceFlinger: calculate expected present once\" into qt-r1-dev\nam: b71fc34252\n\nChange-Id: If8ca7a48a2414cc731e3185dce7173fe3028c01b\n"
    },
    {
      "commit": "b71fc342522265407ac22a2e9b996737ce8dc805",
      "tree": "889fb93d9022fd2639de9ddfafd459666a812924",
      "parents": [
        "60513c4b8a95b637e3b4fe194d9d7bdf82da7d46",
        "7c03ce6508a7887e732abe03dc2dd53e146c008e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 23 19:52:44 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 23 19:52:44 2019 +0000"
      },
      "message": "Merge \"SurfaceFlinger: calculate expected present once\" into qt-r1-dev"
    },
    {
      "commit": "6425fce93c880d5f685a74f059b75c0b010ce639",
      "tree": "0df3c3ceb4aff021bbfbcd367bb938b9f10cd5b7",
      "parents": [
        "ca589398450485c922a62b9d6a3a0baca11e9c38",
        "60513c4b8a95b637e3b4fe194d9d7bdf82da7d46"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Jul 23 12:11:06 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 23 12:11:06 2019 -0700"
      },
      "message": "Merge \"[SurfaceFlinger] Exclude first vsync duration from period calculation\" into qt-r1-dev\nam: 60513c4b8a\n\nChange-Id: I2474f32bee4edf707e239864829f5c2d6ae9b6d3\n"
    },
    {
      "commit": "60513c4b8a95b637e3b4fe194d9d7bdf82da7d46",
      "tree": "6bb171e266cae5cdc6b51ec0db52e78f49e767c9",
      "parents": [
        "cd5c497f9d261ceb67d29602ab5e1184dc4f4bf8",
        "94390a32e24ac0f9286e11efd9ae5232ac3b9ac3"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Jul 23 18:46:58 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 23 18:46:58 2019 +0000"
      },
      "message": "Merge \"[SurfaceFlinger] Exclude first vsync duration from period calculation\" into qt-r1-dev"
    },
    {
      "commit": "5783949f65fb11f27b3c413fef832361075739a7",
      "tree": "72d2ccfcc25be4b8237c617844634278311bb72c",
      "parents": [
        "71a410774d39d47f20bbbb9f00ba499415629142",
        "cd5c497f9d261ceb67d29602ab5e1184dc4f4bf8"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jul 23 09:55:51 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 23 09:55:51 2019 -0700"
      },
      "message": "Merge \"libgui: add EGL Image Tracking for debug\" into qt-r1-dev\nam: cd5c497f9d\n\nChange-Id: I543bbd859b26ffc3ca8fd1d7c35a9c701e646371\n"
    },
    {
      "commit": "cd5c497f9d261ceb67d29602ab5e1184dc4f4bf8",
      "tree": "3ff0a50b0e2f253a241e89ca93a160447ccd555e",
      "parents": [
        "c35a17bcb96950e88f4b0cb4f76a6e31af7b28a5",
        "a3b08efc43acebe8c15d31175ff04eeba6270913"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 23 16:45:32 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 23 16:45:32 2019 +0000"
      },
      "message": "Merge \"libgui: add EGL Image Tracking for debug\" into qt-r1-dev"
    },
    {
      "commit": "7c03ce6508a7887e732abe03dc2dd53e146c008e",
      "tree": "a62c9789330b0fb3c5703fcd0140b93a9dd7b4ca",
      "parents": [
        "ddb5f84005c03cb000d9f2ad042347e8d0e336de"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Jul 19 10:59:45 2019 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jul 23 09:35:29 2019 -0700"
      },
      "message": "SurfaceFlinger: calculate expected present once\n\nCalculate the expected present time in the beginning of the frame\nand use the same value across the frame composition.\n\nBug: 137873466\nTest: App transitions\nChange-Id: I0b41c62796f6150702e8d50ec7d28838d3a5aa87\n"
    },
    {
      "commit": "4658e11cbe1abae691454ddcf93a06763d1bf828",
      "tree": "ddabdb04e6b80e520598ceeb4279e163c7ce2b7b",
      "parents": [
        "a92f294522951ae80e660d0745ca9e8d725ee660"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Jul 22 13:07:26 2019 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jul 23 01:41:52 2019 +0000"
      },
      "message": "SurfaceFlinger: add a sysprop for GL backpressure\n\nIn some devices where SF misses a frame in GL comp, HWC queue may\nget stuffed. This causes application to block longer on dequeueBuffer\nwhich leads to jank.\n\nTest: 1. Open Camera\n      2. Swipe horizontally to go back to previous app.\n\nBug: 138083790\nChange-Id: I4c5963cb7ba7f9b10254c77dc7117ca3acac81cf\n"
    },
    {
      "commit": "9e35550692ef91dbeed91d628a0a4c188a3ad8e3",
      "tree": "21fc356db8bcf0a24451d829ab350ebd7e4ab52d",
      "parents": [
        "829f3fc76765edbbf3546e0fb453c1ebcf0fe5c7",
        "e35878cea23ab8fe657ba1a62f33f819e2649168"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Jul 22 13:54:56 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 22 13:54:56 2019 -0700"
      },
      "message": "Merge \"SurfaceFlinger: tune LayerHistory to be less aggressive\" into qt-r1-dev\nam: e35878cea2\n\nChange-Id: I0444901a32973003a9ceed4c5afd153affe17d56\n"
    },
    {
      "commit": "e35878cea23ab8fe657ba1a62f33f819e2649168",
      "tree": "a47990a34b0654fafe770dedd66f07d2d99d7695",
      "parents": [
        "38172ad8cf4a3dc3ee801cb295de891050993438",
        "cab4c2f2673034356de895fa661aa3dc979ff20e"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Jul 22 20:26:28 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 22 20:26:28 2019 +0000"
      },
      "message": "Merge \"SurfaceFlinger: tune LayerHistory to be less aggressive\" into qt-r1-dev"
    },
    {
      "commit": "cab4c2f2673034356de895fa661aa3dc979ff20e",
      "tree": "81a62c08e28099afd2efde5dbba3114a6d95f5c5",
      "parents": [
        "ddb5f84005c03cb000d9f2ad042347e8d0e336de"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Jul 12 16:59:39 2019 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Jul 22 10:27:20 2019 -0700"
      },
      "message": "SurfaceFlinger: tune LayerHistory to be less aggressive\n\nIncrease the thresholds to mark layer as \"relevant\" to be less agressive\nwhen changing refresh rate based on content.\n\nBug: 136558136\nTest: 1) put icons in drawer/folder on homescreen\n2) tap drawer to expand\n3) tap homescreen to contract drawer\n4) goto 2), repeating quickly.\nTest: libsurfaceflinger_unnittest\n\nChange-Id: I2a9b696f267d93720408a41dceb4acb7dc80bd69\n"
    },
    {
      "commit": "a3b08efc43acebe8c15d31175ff04eeba6270913",
      "tree": "1d4e5bcb7c91442bacbc4980731dabb23fea22e1",
      "parents": [
        "ddb5f84005c03cb000d9f2ad042347e8d0e336de"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Jul 15 18:43:10 2019 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Jul 22 09:55:15 2019 -0700"
      },
      "message": "libgui: add EGL Image Tracking for debug\n\nTrack EGL images allocated by libgui to help debug memory leaks\n\nTest: monkey\nBug: 137514000\nChange-Id: I0b193c0fdb7a4c07d7c2e5d06063e3dc01b5a57b\n"
    },
    {
      "commit": "94390a32e24ac0f9286e11efd9ae5232ac3b9ac3",
      "tree": "baa5182ecb47deddbe85759ba23247d97878fcd1",
      "parents": [
        "7f01518eae5ce54d1b4bfc682c1c7b68bac89cb5"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Jul 16 13:20:19 2019 -0700"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Jul 19 16:26:27 2019 -0700"
      },
      "message": "[SurfaceFlinger] Exclude first vsync duration from period calculation\n\nSome displays don\u0027t exit from idle state immediately when vsync is\nenabled through the kernel idle timer, so exclude the first vsync period\ninstead of just the first sample.\n\nBug: 136197211\nTest: Scrolling through settings\nChange-Id: I899fec289c8b08cfaa3264f7f6291a6fac489ab8\n"
    },
    {
      "commit": "c17e1913c9ec9225ce70733bfd2424fac8b5cc0d",
      "tree": "11fb0b418e41cf087b04c96a49e0ffe8d09591b5",
      "parents": [
        "26246805e99b6c0d95c63bc5b0a3e1e79466eb13",
        "38172ad8cf4a3dc3ee801cb295de891050993438"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jul 18 16:19:57 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 18 16:19:57 2019 -0700"
      },
      "message": "SurfaceFlinger: debug layer bounds inset\nam: 38172ad8cf\n\nChange-Id: Ib2091bf76ee3f2d3787e3c04565c649aa2434f62\n"
    },
    {
      "commit": "38172ad8cf4a3dc3ee801cb295de891050993438",
      "tree": "fe360df193adad3f8907b3515f86991f9a90962f",
      "parents": [
        "ddb5f84005c03cb000d9f2ad042347e8d0e336de"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jul 16 16:10:28 2019 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jul 18 12:48:21 2019 -0700"
      },
      "message": "SurfaceFlinger: debug layer bounds inset\n\nThis is a debug change to make sure layer bounds will not overflow after\nan inset operation.\n\nBug: 137560795\nTest: manual tests\nChange-Id: Ifd9a8d84877e7f4c1f62c0419b0f86294ab576af\n"
    },
    {
      "commit": "78a54762e5e9e316492571ac02418b70938585dd",
      "tree": "432e4ab8c392514e6a7cc7c568370c4ad3b98414",
      "parents": [
        "8c21676750963609632ed25017c0db98b8ac30fc",
        "ddb5f84005c03cb000d9f2ad042347e8d0e336de"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Jul 16 17:11:32 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 16 17:11:32 2019 -0700"
      },
      "message": "Merge \"[SurfaceFlinger] Don\u0027t touch hw vsync in DEFAULT RR with kernel timeout\" into qt-r1-dev\nam: ddb5f84005\n\nChange-Id: Ide6d7999704e46e1ec35644b68fcd5ee34382b40\n"
    },
    {
      "commit": "ddb5f84005c03cb000d9f2ad042347e8d0e336de",
      "tree": "14ffe87f322be24d489e888ad36c2d8696f1d29a",
      "parents": [
        "7f882c4b23fa9d36def6991fc16b288c3f1fc500",
        "7f01518eae5ce54d1b4bfc682c1c7b68bac89cb5"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Jul 16 23:45:06 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 16 23:45:06 2019 +0000"
      },
      "message": "Merge \"[SurfaceFlinger] Don\u0027t touch hw vsync in DEFAULT RR with kernel timeout\" into qt-r1-dev"
    },
    {
      "commit": "8c21676750963609632ed25017c0db98b8ac30fc",
      "tree": "32c6228c044e7bdf35137a4322d2faf479382b00",
      "parents": [
        "4b241f2dd0609fb9a18bba789c240a1a374a78b4",
        "7f882c4b23fa9d36def6991fc16b288c3f1fc500"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jul 16 15:54:30 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 16 15:54:30 2019 -0700"
      },
      "message": "Merge \"SurfaceFlinger: add display power state timer\" into qt-r1-dev\nam: 7f882c4b23\n\nChange-Id: I5e0cfe910d26fbddeb9b9a9daea37fb1ded2d7d5\n"
    },
    {
      "commit": "4b241f2dd0609fb9a18bba789c240a1a374a78b4",
      "tree": "9081bf242a851069aab8eef44f5acf5898f797aa",
      "parents": [
        "233dd5e703d58a2c48ae17e9d09251de50181fd0",
        "3a49f6f506ce9f17b721d4cc8243781c3f91f149"
      ],
      "author": {
        "name": "Daniel Solomon",
        "email": "solomondaniel@google.com",
        "time": "Tue Jul 16 15:49:43 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 16 15:49:43 2019 -0700"
      },
      "message": "Merge \"SF: Update forced composition color space along with color mode\" into qt-r1-dev\nam: 3a49f6f506\n\nChange-Id: I24450b4b1ca7fcaad09c2a0e7afebc27b4a8d526\n"
    },
    {
      "commit": "7f882c4b23fa9d36def6991fc16b288c3f1fc500",
      "tree": "9af6a7f0a49cd9c6954ce1cc3cbf76b6af0c0c0c",
      "parents": [
        "3a49f6f506ce9f17b721d4cc8243781c3f91f149",
        "24363178b53efbc7a794bc72fe3b6e5fa4078ce6"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jul 16 22:40:52 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 16 22:40:52 2019 +0000"
      },
      "message": "Merge \"SurfaceFlinger: add display power state timer\" into qt-r1-dev"
    },
    {
      "commit": "3a49f6f506ce9f17b721d4cc8243781c3f91f149",
      "tree": "764c8d2ca37082cb8babd032a1fb965a658ca7c4",
      "parents": [
        "a91e361dc695978f80f8d419da84ffdbb66f54e9",
        "7c7ede2f3f23d509b0e15ceba4f889ca1beac28e"
      ],
      "author": {
        "name": "Daniel Solomon",
        "email": "solomondaniel@google.com",
        "time": "Tue Jul 16 22:28:00 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 16 22:28:00 2019 +0000"
      },
      "message": "Merge \"SF: Update forced composition color space along with color mode\" into qt-r1-dev"
    },
    {
      "commit": "24363178b53efbc7a794bc72fe3b6e5fa4078ce6",
      "tree": "d4a54e87c4939106c184e267860825325eeba7ca",
      "parents": [
        "5119d1adf3062d9380bdf3f08d32af34b26c5021"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Jul 12 12:37:57 2019 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jul 16 00:38:23 2019 +0000"
      },
      "message": "SurfaceFlinger: add display power state timer\n\nComing out of DOZE mode might result in unstable HWVsync which may\nconfuse FPS detection logic to set the desired refresh rate.\nTo mitigate that, this change introduces a new timer that will provide\na grace period when coming out of DOZE while in this grace period refresh\nrate will stay in PERFORMANCE.\n\nTest: Toggle DOZE by hitting the power button and collect systrace\nBug: 135550670\nChange-Id: Ib8ec3c9550336d691dd3868405d20b98aa983302\nMerged-In: Ib8ec3c9550336d691dd3868405d20b98aa983302\n"
    },
    {
      "commit": "7f01518eae5ce54d1b4bfc682c1c7b68bac89cb5",
      "tree": "fc39b77f4ec257765718654f822d82e89b9d4b4a",
      "parents": [
        "11b359d023022b8078067cc3be7c22f95fe02234"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Jul 11 13:56:22 2019 -0700"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Jul 15 12:02:36 2019 -0700"
      },
      "message": "[SurfaceFlinger] Don\u0027t touch hw vsync in DEFAULT RR with kernel timeout\n\nAs a power optimization, hw vsync shouldn\u0027t be enabled when the kernel\ntimer resets if the display is going to run at 60hz anyways.\n\nBug: 136197211\nTest: systrace when scrolling at peak refresh rate of 60hz.\nChange-Id: Ic7df3e7b735f79b183cdd91f770de83082e491b4\n"
    },
    {
      "commit": "7c7ede2f3f23d509b0e15ceba4f889ca1beac28e",
      "tree": "a56e57048ea45f815a849146143f479091859fbf",
      "parents": [
        "ee07312a52bef52f1a96572e101f7e6e3b00abd8"
      ],
      "author": {
        "name": "Daniel Solomon",
        "email": "solomondaniel@google.com",
        "time": "Thu Jul 11 16:35:40 2019 -0700"
      },
      "committer": {
        "name": "Daniel Solomon",
        "email": "solomondaniel@google.com",
        "time": "Fri Jul 12 13:08:19 2019 -0700"
      },
      "message": "SF: Update forced composition color space along with color mode\n\nCurrently, a forced composition color space (ColorMode) can be set by\nthe device via a persistent property. However, this property is read\nonly during init, while some DisplayColorSetting values, which can\nchange during runtime, require a specific ColorMode to be set\nsimultaneously.\n\nThis change adds the ability to specify a ColorMode in the same binder\ntransaction that is used to set DisplayColorSetting. If a ColorMode is\nunspecified during the transaction, the current forced ColorMode is\nunchanged.\n\nBug: 137140317\nBug: 137053654\nChange-Id: I35bb292fbe70f944f509f7d34ef965adb66ca059\n"
    },
    {
      "commit": "369d1f5d13dc422a44b1eeeba31b118bec0effbf",
      "tree": "d13bc64c30577944886681a92f2ec42e62cb8966",
      "parents": [
        "ba0112f52fefc7a21cfeccf016285877031a4799"
      ],
      "author": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Wed Jul 10 15:32:50 2019 -0700"
      },
      "committer": {
        "name": "android-build-team Robot",
        "email": "android-build-team-robot@google.com",
        "time": "Fri Jul 12 04:10:15 2019 +0000"
      },
      "message": "blast: fix leak on BufferStateLayer death\n\nSurfaceFlinger can occasionally leak graphic buffers.\n\nThe leak happens when:\n1) a transaction comes in and is placed in a queue\n2) Chrome crashes\n3) the parent layer is cleaned up\n4) the child layer is told to release its buffer because it is\n        no longer on screen\n5) the transaction is applied with sets a callback handle on the\n        layer which has a sp\u003c\u003e to the layer\n\nTo fix this, the callback handle should not have a sp\u003c\u003e to layer.\nIt is safe for the callback handle can have wp\u003c\u003e to the layer.\nThe client side has a sp\u003c\u003e so during normal operation, SurfaceFlinger\ncan promote the wp\u003c\u003e. The only time the promote will fail is if the\nclient side is dead. If the client side is dead, there is no one\nto send a callback to so it doesn\u0027t matter if the promote fails.\n\nBug: 135951943\nTest: https://buganizer.corp.google.com/issues/135951943#comment34\nChange-Id: I756ace14c90b03a6499a3187d235b42d91cdd05a\n(cherry picked from commit 0e24a8385a63be6a799da902e1d5ffcbb7519c2a)\n"
    },
    {
      "commit": "7879cacc5a7fc2b66c9de3ebbf0488ab60ef54b4",
      "tree": "82f971d45fc5e409430d7933bacfe174de1689ee",
      "parents": [
        "85cf819944f9ebe9876d20971ca356ebb2cf4169",
        "f5d22cff90452f40bbc22e2856212fa5f9dabbfd"
      ],
      "author": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Thu Jul 11 13:21:43 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 11 13:21:43 2019 -0700"
      },
      "message": "Merge \"blast: fix leak on BufferStateLayer death\" into qt-dev am: 6990af63ff\nam: f5d22cff90\n\nChange-Id: I186aae898e02fbf36d95a5971fe23247db13a045\n"
    },
    {
      "commit": "f5d22cff90452f40bbc22e2856212fa5f9dabbfd",
      "tree": "efa047502af5e5fa08fa7cdfbde52dc557c2f4ba",
      "parents": [
        "187d2d812711188df2fc649e276f7cb6d0fb81e4",
        "6990af63ff06297ffa0373daa32a196c29d99b95"
      ],
      "author": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Thu Jul 11 13:10:45 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 11 13:10:45 2019 -0700"
      },
      "message": "Merge \"blast: fix leak on BufferStateLayer death\" into qt-dev\nam: 6990af63ff\n\nChange-Id: I113891d2681f25b44bd1a71a4cc072103eecb102\n"
    },
    {
      "commit": "6990af63ff06297ffa0373daa32a196c29d99b95",
      "tree": "d13bc64c30577944886681a92f2ec42e62cb8966",
      "parents": [
        "e377b272429fef443b0f498568cbccf111950ba0",
        "0e24a8385a63be6a799da902e1d5ffcbb7519c2a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 11 19:43:00 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 11 19:43:00 2019 +0000"
      },
      "message": "Merge \"blast: fix leak on BufferStateLayer death\" into qt-dev"
    },
    {
      "commit": "85cf819944f9ebe9876d20971ca356ebb2cf4169",
      "tree": "d36bc1e5d2ee97a92b8433fee60c50d51be2193a",
      "parents": [
        "a3e5aa3011487f18ac2ebbf8fd14554fb53ea1c6",
        "187d2d812711188df2fc649e276f7cb6d0fb81e4"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jul 11 10:21:33 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 11 10:21:33 2019 -0700"
      },
      "message": "SurfaceFlinger: store fps instead of duration in LayerInfo\nam: 187d2d8127\n\nChange-Id: Id46be2838e525bf32829b4c28ef7ab751714a5c8\n"
    },
    {
      "commit": "a3e5aa3011487f18ac2ebbf8fd14554fb53ea1c6",
      "tree": "9b6a11198c44dcc0aacf8e4a886a7fcd763e0627",
      "parents": [
        "a87e278a6ac5606eb2ba1b8782c8197c2ecac6de",
        "11b6a70c6f6780f2f878ed3e103b5ffbb0b8fc26"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jul 11 10:20:47 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 11 10:20:47 2019 -0700"
      },
      "message": "SurfaceFlinger: correct negative offset when refresh rate changes\nam: 11b6a70c6f\n\nChange-Id: I042964c89c2e8f31389c66d5ee2d10640f5de2cc\n"
    },
    {
      "commit": "187d2d812711188df2fc649e276f7cb6d0fb81e4",
      "tree": "950bab5651ca4c787d1eeb902f463c6303a65cac",
      "parents": [
        "11b6a70c6f6780f2f878ed3e103b5ffbb0b8fc26"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jul 10 16:18:48 2019 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jul 10 18:25:59 2019 -0700"
      },
      "message": "SurfaceFlinger: store fps instead of duration in LayerInfo\n\nTo get a better average of the content fps, we switch to store the\nmomentarily fps rate instead of the refresh duration.\nFor example:\n\nFrame#0 at 0ms\nFrame#1 at 100ms\nFrame#2 at 111ms\nFrame#3 at 122ms\nAverage based on duration is AVERAGE(100, 11, 11) \u003d 40.6ms (25fps)\nAverage based on fps is AVERAGE(10, 90, 90) \u003d 63fps\n\nTest: app launch\nBug: 136558136\nChange-Id: Icab848dd1f312498590f9735b8881ecdf0d24113\n"
    },
    {
      "commit": "0e24a8385a63be6a799da902e1d5ffcbb7519c2a",
      "tree": "13c980bfbda1d330ac8b7cc3b2fba846e80f9862",
      "parents": [
        "ccf624a3045223c295a4db5a6f36a5d89ced4dbc"
      ],
      "author": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Wed Jul 10 15:32:50 2019 -0700"
      },
      "committer": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Wed Jul 10 15:38:37 2019 -0700"
      },
      "message": "blast: fix leak on BufferStateLayer death\n\nSurfaceFlinger can occasionally leak graphic buffers.\n\nThe leak happens when:\n1) a transaction comes in and is placed in a queue\n2) Chrome crashes\n3) the parent layer is cleaned up\n4) the child layer is told to release its buffer because it is\n        no longer on screen\n5) the transaction is applied with sets a callback handle on the\n        layer which has a sp\u003c\u003e to the layer\n\nTo fix this, the callback handle should not have a sp\u003c\u003e to layer.\nIt is safe for the callback handle can have wp\u003c\u003e to the layer.\nThe client side has a sp\u003c\u003e so during normal operation, SurfaceFlinger\ncan promote the wp\u003c\u003e. The only time the promote will fail is if the\nclient side is dead. If the client side is dead, there is no one\nto send a callback to so it doesn\u0027t matter if the promote fails.\n\nBug: 135951943\nTest: https://buganizer.corp.google.com/issues/135951943#comment34\nChange-Id: I756ace14c90b03a6499a3187d235b42d91cdd05a\n"
    },
    {
      "commit": "93cf1d5d451237d0600dbe4e9e158567eba1815d",
      "tree": "da8f582958847ec8b2f723f85b5b7c2c8f2878c2",
      "parents": [
        "590fe3073006122a140b735b585dfd8a0e747795",
        "42b3beb51f7f3e97762ed1db7ebc0decbfa56bb4"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jul 10 13:31:25 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 10 13:31:25 2019 -0700"
      },
      "message": "SurfaceFlinger: add allowed display configs to dumpsys\nam: 42b3beb51f\n\nChange-Id: I299358022ab30d03bb31262eac22f3d862de08f2\n"
    },
    {
      "commit": "590fe3073006122a140b735b585dfd8a0e747795",
      "tree": "341f2dccee6288176de72f77d408d10eb1ed39a4",
      "parents": [
        "028e9d5cc1609868ab19cb8e07f9193c61c1f57c",
        "6b40b59d99e36ab8b83d312a35dbf364946fd728"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Jul 10 11:22:16 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 10 11:22:16 2019 -0700"
      },
      "message": "Merge \"Hold onto linked binder.\" am: 5e343ea8db am: 6915a76f1d\nam: 6b40b59d99\n\nChange-Id: I5d8b1097991fd7d94d617933904f08e8e745b6b1\n"
    },
    {
      "commit": "6b40b59d99e36ab8b83d312a35dbf364946fd728",
      "tree": "45dd6ceb8e3107f1ee34db6c887c7e33b32c6223",
      "parents": [
        "16fba9486da3d12e9db81cc202bf4ef73f17c748",
        "6915a76f1d5c6a098579e11984ee773c52bd88d0"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Jul 10 10:54:11 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 10 10:54:11 2019 -0700"
      },
      "message": "Merge \"Hold onto linked binder.\" am: 5e343ea8db\nam: 6915a76f1d\n\nChange-Id: Ib1ab9dc28081d9e911441a3476edfc75c0b6fac6\n"
    },
    {
      "commit": "11b6a70c6f6780f2f878ed3e103b5ffbb0b8fc26",
      "tree": "3b71ecbb459e0d3a42c9bad2e7ffbf1e57bef3c8",
      "parents": [
        "42b3beb51f7f3e97762ed1db7ebc0decbfa56bb4"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jun 27 11:24:19 2019 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jul 10 10:47:38 2019 -0700"
      },
      "message": "SurfaceFlinger: correct negative offset when refresh rate changes\n\nVsyncModulator sets the phase offset on DispSync source only when it\nchanges. However, negative offsets depends on the vsync period so setting\nthe same negative offset might result in a different wake up time\ni.e. -5ms on 60Hz is 11ms after the previous vsync where on 90Hz is\n6ms after the previous vsync.\n\nTest: UI-Bench\nBug: 135283780\nBug: 135297302\nChange-Id: I6a05cd48d563a51d2ee38927c23d4946dd142f4b\n"
    },
    {
      "commit": "6915a76f1d5c6a098579e11984ee773c52bd88d0",
      "tree": "1670e7b04c265341561cb44e3397651a359f6de0",
      "parents": [
        "e1dcef20148af6cd19b4a4c82de0d98e88d7bf19",
        "5e343ea8dbdb900b103420a672e56e95e82cf568"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Jul 10 10:35:06 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 10 10:35:06 2019 -0700"
      },
      "message": "Merge \"Hold onto linked binder.\"\nam: 5e343ea8db\n\nChange-Id: Ia5161cd420445ac2b9bfe9e2154ab40c3d7b4491\n"
    },
    {
      "commit": "42b3beb51f7f3e97762ed1db7ebc0decbfa56bb4",
      "tree": "0d04a4ea6fa441639fa5875997a1b508dc1fa080",
      "parents": [
        "ee07312a52bef52f1a96572e101f7e6e3b00abd8"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jul 09 18:09:52 2019 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jul 09 18:10:05 2019 -0700"
      },
      "message": "SurfaceFlinger: add allowed display configs to dumpsys\n\nDump the allowed display configs from SurfaceFlinger to help with\ndebugging issues where the refresh rate does not match the policy.\n\nTest: adb shell dumpsys SurfaceFlinger\nBug: 136503733\nChange-Id: I74ec7d08901ad9edb1a3706249e8809574bf1e5f\n"
    },
    {
      "commit": "aa590417ff6342623a04c9e9d7f0894d8372f07d",
      "tree": "79ca78e744c75669a58dd2f290db848e887d8176",
      "parents": [
        "a048deca2228c5cf8744714aaf28fac066a91a56",
        "ee07312a52bef52f1a96572e101f7e6e3b00abd8"
      ],
      "author": {
        "name": "Thierry Strudel",
        "email": "tstrudel@google.com",
        "time": "Mon Jul 08 17:34:09 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jul 08 17:34:09 2019 -0700"
      },
      "message": "Merge \"SF: enable device-specific dataspace for color space agnostic surfaces\" into qt-r1-dev\nam: ee07312a52\n\nChange-Id: I062d55854fede9feeae4d1b96faae71c68a7f092\n"
    },
    {
      "commit": "ee07312a52bef52f1a96572e101f7e6e3b00abd8",
      "tree": "38b8fabe766b6adc71b5591b61622b51f7f2302d",
      "parents": [
        "fe43c1b8e42b8f84e0cfab8bc0cd6a629e972038",
        "da901bfc4f15723f0a7567ecd09742fd166df2f0"
      ],
      "author": {
        "name": "Thierry Strudel",
        "email": "tstrudel@google.com",
        "time": "Tue Jul 09 00:15:22 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 09 00:15:22 2019 +0000"
      },
      "message": "Merge \"SF: enable device-specific dataspace for color space agnostic surfaces\" into qt-r1-dev"
    },
    {
      "commit": "a904bb9522b97c19acab9b67eb043549985cf857",
      "tree": "7486b594bb34b67f88ecad780f19cc7fcc34d61b",
      "parents": [
        "e416f707865e0a5ffedf13a1c91495146adc895c"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 02 17:37:23 2019 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Jul 08 23:13:48 2019 +0000"
      },
      "message": "Hold onto linked binder.\n\nunlinkToDeath is no longer required, (this change in behavior is to\navoid leaks) so holding onto window manager here (still calling\nunlinkToDeath to avoid a log, but may for instance remove all\nunlinkToDeath calls in the future).\n\nBug: 134576445\nTest: boot\nChange-Id: I78259964b564d87c4bb9be254ee46d3ce04db5ad\n"
    },
    {
      "commit": "b873551d2433cd3bf3be53df7eabda001d2629ec",
      "tree": "e7a4a16e063a77b07722df7e47dc2b037b48ecff",
      "parents": [
        "e3b2036a57fc5a9980c3250fac6a1dddf9f886ee",
        "fe43c1b8e42b8f84e0cfab8bc0cd6a629e972038"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Jul 03 19:29:05 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 03 19:29:05 2019 -0700"
      },
      "message": "Merge \"SurfaceFlinger: Hide Z order relatives when relativeOf is hiddenByPolicy.\" into qt-dev am: e377b27242\nam: fe43c1b8e4\n\nChange-Id: I7a4372f1d7e14373d97529809fade0f1bfe69e17\n"
    },
    {
      "commit": "e3b2036a57fc5a9980c3250fac6a1dddf9f886ee",
      "tree": "53084c38525bc7efb9daac8a21e208d00646a6b4",
      "parents": [
        "3f4989a062c7ad4bfa7b76e0720995998ba46c89",
        "5bb9322330b5ba75876aa804ade536654093557b"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Wed Jul 03 19:26:43 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 03 19:26:43 2019 -0700"
      },
      "message": "Merge \"SF: delay region sampling when short on time\" into qt-r1-dev\nam: 5bb9322330\n\nChange-Id: I35442a3b89cad706cf85993e698d0ea7932462cc\n"
    },
    {
      "commit": "3f4989a062c7ad4bfa7b76e0720995998ba46c89",
      "tree": "2705ef09bdd8b1566c5d8698327b80b5ccb8f5dc",
      "parents": [
        "de39187634f2e11f3dbf01110feb43466ffb2c1f",
        "9275c965d8effb03e8ccbfd16eb92f16ff6d083c"
      ],
      "author": {
        "name": "Thierry Strudel",
        "email": "tstrudel@google.com",
        "time": "Wed Jul 03 19:14:47 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 03 19:14:47 2019 -0700"
      },
      "message": "Merge \"Surfaceflinger: adjust content detection fps selection\" into qt-r1-dev\nam: 9275c965d8\n\nChange-Id: If337fd17b70a2608b174c373719fb069050e2ab5\n"
    },
    {
      "commit": "fe43c1b8e42b8f84e0cfab8bc0cd6a629e972038",
      "tree": "4851ee5f99fec6f504f34c963d3080b0cc3dfe8a",
      "parents": [
        "5bb9322330b5ba75876aa804ade536654093557b",
        "e377b272429fef443b0f498568cbccf111950ba0"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Jul 03 18:37:08 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 03 18:37:08 2019 -0700"
      },
      "message": "Merge \"SurfaceFlinger: Hide Z order relatives when relativeOf is hiddenByPolicy.\" into qt-dev\nam: e377b27242\n\nChange-Id: I4fe9a5fc2bc640c96fd378d5ffbb7c1ec8a21035\n"
    },
    {
      "commit": "c86c0440d80ad9064a2d6dd861f5618923778c60",
      "tree": "9e9050048e31e1e2bcd4597e3c6af83c40cc7168",
      "parents": [
        "95cab05f2cdfda1c03f2eab6429d61ed803898c6",
        "e377b272429fef443b0f498568cbccf111950ba0"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Jul 03 18:33:16 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 03 18:33:16 2019 -0700"
      },
      "message": "Merge \"SurfaceFlinger: Hide Z order relatives when relativeOf is hiddenByPolicy.\" into qt-dev\nam: e377b27242\n\nChange-Id: Ib56adbf78cf09848d8905e04d8720b6b6047d59e\n"
    },
    {
      "commit": "da901bfc4f15723f0a7567ecd09742fd166df2f0",
      "tree": "398f9450270c04716ad841464f4b2dd6b8772b93",
      "parents": [
        "57e206513f87b5af6b0a32ca6e9f245cd5b78040"
      ],
      "author": {
        "name": "Yichi Chen",
        "email": "yichichen@google.com",
        "time": "Fri Jun 28 14:58:27 2019 +0800"
      },
      "committer": {
        "name": "Yichi Chen",
        "email": "yichichen@google.com",
        "time": "Thu Jul 04 08:41:18 2019 +0800"
      },
      "message": "SF: enable device-specific dataspace for color space agnostic surfaces\n\nTo reduce the DPU loading in color conversion, we enable device-specific\ndataspace for color space agnostic surfaces. Since the type of surfaces\nusually provide gray-level surfaces to users, it can be acceptable to\nignore the color conversion on them.\n\nBug: 134783740\nBug: 135140940\nTest: Check ScreenDecorOverlays in expected dataspace\nTest: Play HDR video on B1 and C2 and check dataspace\nChange-Id: I7b11e11d2015eb5c8dfdc372e2c7ffcb40a2ac1d\n"
    },
    {
      "commit": "5bb9322330b5ba75876aa804ade536654093557b",
      "tree": "a05ae5ad3b3177feb1a5a783f3e7e42affecaeb3",
      "parents": [
        "9275c965d8effb03e8ccbfd16eb92f16ff6d083c",
        "84be783ff179fd6589bd01091f08f174f1f6a95d"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Wed Jul 03 20:01:40 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 03 20:01:40 2019 +0000"
      },
      "message": "Merge \"SF: delay region sampling when short on time\" into qt-r1-dev"
    },
    {
      "commit": "09be73f64603ef71074d9fbf553fec5c7652d283",
      "tree": "bad619d3dc87ee8caa4cc9cca3605a84662d7e8c",
      "parents": [
        "c8801bd5ab76239a011345b5f5a064f820d563fc"
      ],
      "author": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Tue Jul 02 14:29:18 2019 -0700"
      },
      "committer": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Wed Jul 03 05:29:34 2019 +0000"
      },
      "message": "Surfaceflinger: adjust content detection fps selection\n\nSelect the FPS with minimal error in the first pass and then adjust\nbased on ratio/margin.\n\nThe CL changes content driven FPS selection logic,\nbefore the change, the code switch to 90hz configs\nwhen mContentRefreshRate \u003e 64 and with the CL it will\nswitch to 90hz when mContentRefreshRate \u003e 75. The second\npass to select 90hz when mContentRefreshRate is 45fps\nis kept as is. It also simplified and removed 5% margin\nin the first pass.\n\n\nTest: boot and take SF trace\nBug: 136472613\nChange-Id: I4445386a301b7fcdd22d71bd49f45540cc414174\n"
    },
    {
      "commit": "1c5481ea27625ae9ecb2f386bc115d479fdf50c4",
      "tree": "233efcedeb306471eaa8425cbeb19d597f3c2af7",
      "parents": [
        "37131865d03edbbeb7e5a59dbbf3f75b19b7641a"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Jul 01 14:42:27 2019 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Jul 01 15:04:38 2019 -0700"
      },
      "message": "SurfaceFlinger: Hide Z order relatives when relativeOf is hiddenByPolicy.\n\nNow that we are using relative Z for the SurfaceView background we\nencounter yet another edge case. During Surface preservation we reparent\nthe SurfaceView from one WindowStateAnimator to a second. When we reparent\nit we hide the old surface and show the new one. However at this time\nthe background is still relative to the OLD surface, which is Z ordered\non top of the new Surface. To fix this we ensure that if a layers relative\nZ parent is hidden by policy the layer is also invisible.\n\nBug: 136061599\nTest: TransactionTest#HideRelativeParentHidesLayer\nChange-Id: I941fb9060dab79dba89300a5c86d6ea1a69f577d\n"
    },
    {
      "commit": "ed9eae2f16ce2b62bfd9aa18dd528a1e96ef5e83",
      "tree": "fb8c689d653cd4ad82c6412095416715f6cdb480",
      "parents": [
        "87d4caef508a20b554594e0a1cfe9899971537cb",
        "c775e762f415eece48a70b5e4f2b9950910ab3d9"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Fri Jun 28 20:18:27 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Jun 28 20:18:27 2019 -0700"
      },
      "message": "Merge \"SF: Don\u0027t bump to PERFORMANCE refresh rate with infrequent updates\" into qt-r1-dev\nam: c775e762f4\n\nChange-Id: Icd86eaa823153b5d03bc59c5ecab3ae369f502b8\n"
    },
    {
      "commit": "ad083c40b7593e0cc9283588ac710ddf2124337a",
      "tree": "470fc76320e78c64e25343285a70af817d3fc4d0",
      "parents": [
        "57e206513f87b5af6b0a32ca6e9f245cd5b78040"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Wed Jun 26 16:28:08 2019 -0700"
      },
      "committer": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Fri Jun 28 11:29:46 2019 -0700"
      },
      "message": "SF: Don\u0027t bump to PERFORMANCE refresh rate with infrequent updates\n\nTesting scenario:\n1. Set brightness around 50%-55%, set dark theme.\n2. Open Chrome.\n3. Click search bar.\n4. Can see the cursor show up.\nNotice the flickering of the screen.\n\nExplanation:\nKernel idle timer detects inactivity after 100ms, and turns the refresh rate to 60Hz.\nWhen a cursor update happens (every 500ms), SF receives a new frame, notifies kernel,\nthe refresh rate bumps to 90Hz. After 100ms the kernel again decreases the refresh rate to 60Hz.\n\nDesired goals:\nStop the flickering (eg. changing between 60-90Hz too often).\nContinue having low battery impact.\n\nSolution in this AG:\nAdd logic to SF to detect infrequent updates (for all layers). Description of the algorithm:\n1) Store the timestamp of the last two buffers.\n2) If the first buffer is older than 250 ms, detect inactivity, go into DEFAULT refresh rate.\n3) EXIT: on touch event, layer requests 2 or more frames in less than 250ms.\nNOTE: if the application is explicitly requesting 90Hz, SF does not override that. Idle kernel\nstill kicks in, and the flickering happens.\n\ntested on Chrome v74 Beta, and messaging app.\n\nTest: manual, b/135009095\nBug: 135718869\nChange-Id: I72d8cd48b3ec900989afcf0fab1cdc3046b87274\n"
    },
    {
      "commit": "2343d6340d935c23bf6a960c010c2707a8ed4d0a",
      "tree": "ba8e9e534675ca0afa79e6e0f730ec8123eb1694",
      "parents": [
        "25e884b7cb7644310ca37f2475fc07f369b8fdd6",
        "56d8b6252cf5284f878d883b4b6038fe37f6b1d3"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Jun 24 13:18:31 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jun 24 13:18:31 2019 -0700"
      },
      "message": "Merge \"[SurfaceFlinger] Fix screenshot orientation in landscape\" into qt-dev am: feb6af0eaf\nam: 56d8b6252c\n\nChange-Id: Ic412e24496c2ed54d0904ecb94aef0e6dd5173ee\n"
    },
    {
      "commit": "57e206513f87b5af6b0a32ca6e9f245cd5b78040",
      "tree": "df8fa61d5b24790270430bb624e792e5cc2a8a73",
      "parents": [
        "b796a031fdf2fbf1cb472c26de3766b2858c6c9b",
        "feb6af0eaf391e16c95bf45273f2d37bebdadc43"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Jun 24 13:17:31 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jun 24 13:17:31 2019 -0700"
      },
      "message": "Merge \"[SurfaceFlinger] Fix screenshot orientation in landscape\" into qt-dev\nam: feb6af0eaf\n\nChange-Id: I4166bbfdf23e37e5b77fccc80dd7d09698014a3c\n"
    },
    {
      "commit": "25e884b7cb7644310ca37f2475fc07f369b8fdd6",
      "tree": "e22a658c924265c2f38c833609f91c3c975b8d26",
      "parents": [
        "e5b87e0d073457b6e79d559d18f7db49561dd25d",
        "b796a031fdf2fbf1cb472c26de3766b2858c6c9b"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Jun 24 13:14:51 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jun 24 13:14:51 2019 -0700"
      },
      "message": "Merge \"[SurfaceFlinger] Store current offsets in VSyncModulator.\" into qt-r1-dev\nam: b796a031fd\n\nChange-Id: I9b79e18080f268c7c5a886e221fd12a402f1d019\n"
    }
  ],
  "next": "e5b87e0d073457b6e79d559d18f7db49561dd25d"
}
