)]}'
{
  "log": [
    {
      "commit": "186e41ea39a4de173565fb7d366f1f5b4dae5166",
      "tree": "b2601d888da6c0313b52954824b1bd87476d14e2",
      "parents": [
        "98c5445943edadd07512edba8d8c243c90792724",
        "432911091c487d52f0ddc708b0d30db6d3dcae74"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Wed Jul 18 15:14:16 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jul 18 15:14:16 2018 -0700"
      },
      "message": "Merge \"Do not block on allocating buffers am: 0a3e784701\" into pi-dev-plus-aosp\nam: 432911091c\n\nChange-Id: I9c95caa9a7bf0949679809aaa490327795fa981f\n"
    },
    {
      "commit": "0a3e7847012108f047a6582ebfb88026d640277f",
      "tree": "38f6fc2edc609a577b6b9a33740aa0a00cc5a75f",
      "parents": [
        "9885bd4b3faf93a5651f069e52cbb346418e6ca5"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Tue Jul 17 13:48:33 2018 +0200"
      },
      "committer": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Tue Jul 17 16:57:06 2018 +0200"
      },
      "message": "Do not block on allocating buffers\n\nThere is really no point in doing that because this can be done\nin an async way such that the first and subsequent dequeueBuffer\nstill don\u0027t block because at that point allocation is very likely\ndone.\n\nFurthermore, avoid calling setAsyncMode initially, as it will also\nblock RT on buffer allocation. However, the default is false in\nany case, so we really don\u0027t need to call it.\n\nAlso, only allocate one buffer at a time and don\u0027t block in\ndequeueBuffer on allocating buffers. It will likely have one buffer\navailable already, and there is no point in waiting for other\nbuffers to be allocated.\n\nTest: Press home with memory contention, observe less delay.\nTest: General smoke testing for increased jank\nBug: 111517695\nChange-Id: I9deb435013b2503178d2fe032151c1aaedd667af\n"
    },
    {
      "commit": "48a619f8332e06ea1cd96d82719cdf5e05c69630",
      "tree": "1cfb2416e90aeaea3cbf97cf8c9e3d8223276ffe",
      "parents": [
        "dfde511980f96cf583eda87e0ee24026d94caa31"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Tue Jun 05 16:34:59 2018 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Tue Jun 05 16:34:59 2018 -0700"
      },
      "message": "Replace NULL/0 with nullptr\n\nFixes -Wzero-as-null-pointer-constant warning.\n\nclang-tidy -checks\u003dmodernize-use-nullptr -p compile_commands.json -fix ...\n\nTest: m\nBug: 68236239\nChange-Id: I3a8e982ba40f9b029bafef78437b146a878f56a9\n"
    },
    {
      "commit": "dbd961590b9b49e4fbf9cb9b868c7a4323be3517",
      "tree": "d3022683c1ebfe33de97ddb1e1cc24eb6999cb9d",
      "parents": [
        "a8cbd47495b4bbf8977388d371ae9e3a71652639"
      ],
      "author": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Thu Feb 08 14:22:53 2018 -0800"
      },
      "committer": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Thu Feb 08 14:42:38 2018 -0800"
      },
      "message": "swapchain: add query for MaxBufferCount\n\nThe current vkCreateSwapchainKHR use the hard coded maxImageCount from\nGetPhysicalDeviceSurfaceCapabilitiesKHR, which results in possible\nconflicts with the maxBufferCount set by BufferQueueConsumer. Thus add\na query to grab the consumer set maxBufferCount into maxImageCount of\nsurface capability.\n\nTest: adb shell setprop debug.hwui.renderer skiavk\nTest: open Play store search and click on apps\nBug: b/71894146\nChange-Id: Iba75d977b13a849b62e6c4f259f7ca519ac26db8\n"
    },
    {
      "commit": "1dbf0e3b2fd19581657ec4e7fadb93a5b81f297e",
      "tree": "4022c1abcdb24a1889367280cb67ad224e2f589f",
      "parents": [
        "989fc50a1a52c57c218c9ccc681847c6c120d892"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Feb 07 14:40:08 2018 -0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Feb 07 14:51:32 2018 -0800"
      },
      "message": "libgui: fix a race in BufferQueueProducer::allocateBuffers\n\nBug: 72902195\nTest: boots\nChange-Id: I2edb2420c1b909ed91ccae8179fc413b6828d2cb\n"
    },
    {
      "commit": "5c6e46353676b4fd647317fde28c413d8ffe3565",
      "tree": "7dfd0f945db8ab01ab1ebfd7cfa4079a04a6c58b",
      "parents": [
        "131d3760a0437fac08ff4cc384640b7ca1802d17"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Jan 11 08:54:38 2018 -0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Jan 22 12:18:24 2018 -0800"
      },
      "message": "surfaceflinger: always advertise HDR10 when wide color is available\n\nFor HWC that already adversises HDR10 support, this has no effect.\nOtherwise, SurfaceFlinger will insert HDR10 into HdrCapabilities\nwhen wide color is supported.\n\nSurfaceFlinger simulates HDR10 support by switching the color mode\nto DISPLAY_P3 and forcing client composition for HDR10 layers.  It\nalso has a special path to treat RGBA_1010102/BT2020_PQ as\nY410/BT2020_PQ in RenderEngine when the buffer is from media.\n\nTest: manual\nChange-Id: Ib5f18e0100f5610ee65218108bdb9843baccbe98\n"
    },
    {
      "commit": "9bad0d7e726e6b264c528a3dd13d0c58fd92c0e1",
      "tree": "54e7e08b63095230ab9b146c1b1882b3ad7fa15f",
      "parents": [
        "e85d368c4e61b2b8a860d833d28d85e2922396f8"
      ],
      "author": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Tue Dec 19 12:34:34 2017 -0700"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Jan 04 13:01:35 2018 -0800"
      },
      "message": "Add plumbing for HDR metadata\n\nAllow a ANativeWindow client to send HDR metadata to SurfaceFlinger.\nThe metadata can be queried with\nBufferLayerConsumer::getCurrentHdrMetadata.\n\nWritten by Courtney.  Updated by olv@.\n\nBug: 63710530\nTest: builds\nChange-Id: I23192d4750950664b57863a533bffd72397255b4\n"
    },
    {
      "commit": "6030eaa504cda1df2515e428611f4cf8a6c84c33",
      "tree": "a16415a1cdae2248b24b28c20dd13f834294753b",
      "parents": [
        "87d7e196ef0b733ff19dc4c63c04774afd7de35f",
        "64c9a3ee48208183f90ed9b2c5112ef796cce6e2"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Aug 10 15:16:33 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 10 15:16:33 2017 +0000"
      },
      "message": "Merge \"libgui: support 64-bit BQ consumer usage\" into oc-mr1-dev\nam: 64c9a3ee48\n\nChange-Id: I683b14b9070e0536217f67f6f4369bdecd8114be\n"
    },
    {
      "commit": "e2786ea5aec3a12d948feb85ffbb535fc89c0fe6",
      "tree": "e5e0e87d4093b1888e5f5767493cc4f08c97990e",
      "parents": [
        "27a7c02f0ca4afa27cd1516b342ab485df03c15b"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Aug 07 10:36:08 2017 -0700"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Aug 08 15:25:51 2017 -0700"
      },
      "message": "libgui: support 64-bit BQ consumer usage\n\nAdd NATIVE_WINDOW_GET_CONSUMER_USAGE64.  Support 64-bit consumer\nusage flags in BufferItemConsumer and GLConsumer.\n\nIn H2BGraphicBufferProducer::getConsumerUsage, however, we will\nissue a warning and return 32-bit consumer usage.  We will need a\nHIDL interface version bump to fix it.\n\nBug: 35215313\nTest: manual\nChange-Id: I1f8884a7db71bbdb269d05b94443ddec2ff46f8a\n"
    },
    {
      "commit": "cb057c2e6bf23b43df49282c0db26b663e4535f7",
      "tree": "13c5977423159cd4e0be6bc3b2936c398b6004c7",
      "parents": [
        "10288989e36fee33e50e2a79bc6111b47cd729bb"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Aug 03 15:48:25 2017 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Aug 03 17:38:27 2017 -0700"
      },
      "message": "Fix clang-tidy performance warnings in frameworks/native.\n\n* Use const reference parameter type to avoid unnecessary copy.\n* Use more efficient overloaded string methods.\n* Use const reference type for loop index variables to avoid unnecessary copy.\n\nBug: 30407689\nBug: 30411878\nBug: 30413223\nTest: build with WITH_TIDY\u003d1\n\nChange-Id: I75ed62e2cb9939878b8932ed512ceb7e241edd6f\n"
    },
    {
      "commit": "a2eb34cfbe089deb9a519e9702e17d9dfe26f9e8",
      "tree": "292e7d3fb3a109268e8e5304b789023b10ecbbbf",
      "parents": [
        "8cbab7c3c93c1bc9364a81726f02eeacc4a9356b"
      ],
      "author": {
        "name": "Ian Elliott",
        "email": "ianelliott@google.com",
        "time": "Tue Jul 18 11:05:49 2017 -0600"
      },
      "committer": {
        "name": "Ian Elliott",
        "email": "ianelliott@google.com",
        "time": "Mon Jul 31 15:34:11 2017 +0000"
      },
      "message": "Have the Surface class track the buffer age.\n\nHave the Surface class track the buffer age, so that Surface::query()\ncan return the buffer age without having to use a binder call to\nBufferQueueProducer::query().  The idea is for\nBufferQueueProducer::dequeueBuffer() to return the value, which the\nSurface class will cache for later use by Surface::query().\n\nBug: b/27903668\nTest: Use systrace to no ensure query binder call after dequeueBuffer.\nChange-Id: I106a7bd27461d381f0bd84df70d804de56a128ab\n(cherry picked from commit d11b044864be525a1646f93106ab496195bb8239)\n"
    },
    {
      "commit": "d11b044864be525a1646f93106ab496195bb8239",
      "tree": "259c69333b05790f7b79031ea50475977e1765e3",
      "parents": [
        "dba34b72c40dbb354fe7dc67e43123ea30900915"
      ],
      "author": {
        "name": "Ian Elliott",
        "email": "ianelliott@google.com",
        "time": "Tue Jul 18 11:05:49 2017 -0600"
      },
      "committer": {
        "name": "Ian Elliott",
        "email": "ianelliott@google.com",
        "time": "Thu Jul 27 08:51:35 2017 -0600"
      },
      "message": "Have the Surface class track the buffer age.\n\nHave the Surface class track the buffer age, so that Surface::query()\ncan return the buffer age without having to use a binder call to\nBufferQueueProducer::query().  The idea is for\nBufferQueueProducer::dequeueBuffer() to return the value, which the\nSurface class will cache for later use by Surface::query().\n\nBug: b/27903668\nTest: Use systrace to no ensure query binder call after dequeueBuffer.\nChange-Id: I106a7bd27461d381f0bd84df70d804de56a128ab\n"
    },
    {
      "commit": "ad74480d6d9b15878bb14701aa81e73f86f70c75",
      "tree": "ce5b9c9f173181c9b45ec7a108bb3938adfc29bb",
      "parents": [
        "b4f7493fbdb1d9d5b437a1dcb82e98b1531f4e3e"
      ],
      "author": {
        "name": "Ian Elliott",
        "email": "ianelliott@google.com",
        "time": "Wed Jul 26 21:46:43 2017 +0000"
      },
      "committer": {
        "name": "Ian Elliott",
        "email": "ianelliott@google.com",
        "time": "Wed Jul 26 21:46:43 2017 +0000"
      },
      "message": "Revert \"Have the Surface class track the buffer age.\"\n\nThis reverts commit b4f7493fbdb1d9d5b437a1dcb82e98b1531f4e3e.\n\nChange-Id: I9a783c8e768637bd73ac53a856e5f42703dcd82b\n"
    },
    {
      "commit": "b4f7493fbdb1d9d5b437a1dcb82e98b1531f4e3e",
      "tree": "e6aef13bfd9d4ee5f0fb956e0715c95bc27801ac",
      "parents": [
        "b8b53824fb8b38c24072b482a18a95b4a55d8943"
      ],
      "author": {
        "name": "Ian Elliott",
        "email": "ianelliott@google.com",
        "time": "Tue Jul 18 11:05:49 2017 -0600"
      },
      "committer": {
        "name": "Ian Elliott",
        "email": "ianelliott@google.com",
        "time": "Tue Jul 25 14:18:53 2017 -0600"
      },
      "message": "Have the Surface class track the buffer age.\n\nHave the Surface class track the buffer age, so that Surface::query()\ncan return the buffer age without having to use a binder call to\nBufferQueueProducer::query().  The idea is for\nBufferQueueProducer::dequeueBuffer() to return the value, which the\nSurface class will cache for later use by Surface::query().\n\nBug: b/27903668\nTest: Use systrace to no ensure query binder call after dequeueBuffer.\n\nChange-Id: I7a4d79d02ea68781b464a463f0ecdf64978b7fb8\n"
    },
    {
      "commit": "b209c12155da92f2756c016eda55636c1d8952c1",
      "tree": "5cbd5b95507d052a2f1a1bb7d6f0ac57e5779c3a",
      "parents": [
        "91768a2bfe0bea433a93a4c98151eec011329414",
        "fd43dc6723e721c41fb5e0d84258672a036cc006"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Jun 14 08:13:01 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jun 14 08:13:01 2017 +0000"
      },
      "message": "Merge changes Ibc1444b8,I14c200d1 into oc-dev\nam: fd43dc6723\n\nChange-Id: Iae111bcc2770c1e75aba29021e31d07ff89243ab\n"
    },
    {
      "commit": "2672decb92fa24ef012cbbd3690c120530fa3cd3",
      "tree": "b3cc68a6ce90b8aac7a1c2d86c3295154aad6ab8",
      "parents": [
        "2563c0f3b0aa07309d42c0d739880884b8131080"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jun 13 16:39:11 2017 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Jun 13 16:39:11 2017 -0700"
      },
      "message": "BufferQueueProducer: Call onBuffersReleased() in detachNextBuffer\n\nLike detachBuffer(), detachNextBuffer() needs to inform the consumer,\nwho generally has a cache of buffer items, that a buffer is no longer\nowned by the buffer queue.\n\nOtherwise the consumer layer can leak the buffer reference until\nconsumer teardown/disconnect.\n\nTest: Camera CTS is fine, using a camera app shows correct memory\n  behavior\nBug: 62591036\n\nChange-Id: I14c200d13e60dbbe21261343941f84fb786db117\n"
    },
    {
      "commit": "cb496acbe593326e8d5d563847067d02b2df40ec",
      "tree": "be669654542a7fe19d85d17d89e092b1880ccb3e",
      "parents": [
        "177759a90584489b1b77cdaf3818ebdb79b1b9bf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 22 14:21:00 2017 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 26 15:16:36 2017 -0700"
      },
      "message": "use 64-bits usage bits almost everywhere\n\nRevert \"Revert \"use 64-bits usage bits almost everywhere\"\"\nThis reverts commit 1671de0068de40f57288628d4b757a1c84962a62.\n\nTest: manual, build\nBug: 33350696\nBug: 38466700\nChange-Id: Ia2f51b97137dba754b1938dfb1e235f4babc8a88"
    },
    {
      "commit": "371957bfe71efa7d55006d73a9e1d6b80da45081",
      "tree": "e53c154352f0c40123eef666cd467606aea9cd7b",
      "parents": [
        "0beacddfb718788b8663c33bbbe52190070681af",
        "cc09fccf625216eb35b90fdd22c27e4f54b06636"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu May 25 21:32:25 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 25 21:32:25 2017 +0000"
      },
      "message": "libgui: fix BQ buffer allocation error checking am: feec3b1a49\nam: cc09fccf62\n\nChange-Id: I5203cd613cb764a8d72d98532d43ec7826f79c57\n"
    },
    {
      "commit": "feec3b1a49dbf48bc792d39d004b42cf2c72b14c",
      "tree": "2ad321e3c23920a1732e09a212c4592e4c97c764",
      "parents": [
        "d8ac4fd17a71b8b523121186b8a03212cd5122fe"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu May 25 09:34:56 2017 -0700"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu May 25 10:31:05 2017 -0700"
      },
      "message": "libgui: fix BQ buffer allocation error checking\n\nThe error path was broken since we moved away from\nIGraphicBufferAlloc.\n\nBug: 37956614\nTest: simulate buffer allocation failures\nChange-Id: I1e1ec840fafd3075b84126c6dbf6194568175a42\n"
    },
    {
      "commit": "1671de0068de40f57288628d4b757a1c84962a62",
      "tree": "a85bb3071a1156a735de48621b9d1f3e91402629",
      "parents": [
        "175d98757d7d9003d4f64756cf4c2b366ba77e97"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Sun May 21 22:21:13 2017 +0000"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Sun May 21 22:21:13 2017 +0000"
      },
      "message": "Revert \"use 64-bits usage bits almost everywhere\"\n\nBug: 38466700\n\nThis reverts commit 175d98757d7d9003d4f64756cf4c2b366ba77e97.\n\nChange-Id: I5f08a4ca91511775cd52250d10a0220b258b8368\n"
    },
    {
      "commit": "175d98757d7d9003d4f64756cf4c2b366ba77e97",
      "tree": "525b9df51a5ce2d0eb7d2bd1a2ed6730b283369b",
      "parents": [
        "5c865e5d25501f4edd2af960efbd28c3822b22db"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 15 18:00:34 2017 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 19 14:39:55 2017 -0700"
      },
      "message": "use 64-bits usage bits almost everywhere\n\nTest: manual, build\nBug: 33350696\nChange-Id: Ida33c2a902155044651158467bb99d664e958c41"
    },
    {
      "commit": "c5cd20733795a0fe1f1ba228ec099c4c7e6dbaa7",
      "tree": "2d4d46edb478cc906ede23ba31faa2d9799a4b76",
      "parents": [
        "2c201405acc3101fec6b501c56be85bc1d876f0c"
      ],
      "author": {
        "name": "Jammy Yu",
        "email": "jammy.yu@mstarsemi.com",
        "time": "Wed Feb 22 16:41:38 2017 -0800"
      },
      "committer": {
        "name": "Shuzhen Wang",
        "email": "shuzhenwang@google.com",
        "time": "Tue May 16 14:43:14 2017 -0700"
      },
      "message": "Fix error BufferQueue attaching flow.\n\nFix error BufferQueue attaching flow. Because BufferQueue attaching\nbuffer flow doesn\u0027t set mNeedsReallocation to false, it will case\nSurface client to request buffer for attached buffer to cause unsync\nbuffer states with ACodec. So, for attaching buffer by Producer, we\nneed to set mNeedsReallocation to false in BufferQueue. And Surface\nclient will not request buffer again for attached buffer to cause\nsome missing frames.\n\nBug: 38238747\nIssue: 34897483\nTest: GTS\nChange-Id: I25f9fff4b5d1f7052ab3be612cf34879fd17c27c\n"
    },
    {
      "commit": "6a3c05bcfab588fd99dd8d619a53d15374e99507",
      "tree": "30e5edaa74ea3dff07579a5a9cd39f1755069eb3",
      "parents": [
        "37c27efdf8232272648e56513f3caceeb5c66407"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 27 20:06:55 2017 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 09 16:42:31 2017 -0700"
      },
      "message": "fix circular dependency libnativewindow \u003c-\u003e libui\n\nBug: 37647680\nBug: 37648355\nTest: compile, manual\nChange-Id: I9631beea52e23ebb519411f943c6f5062aedd2e5"
    },
    {
      "commit": "b450ebe0f93fa413e04b545cec5006431b30e78b",
      "tree": "086e7686ab1d5b6716eae92dc407b26b968d160b",
      "parents": [
        "a4a4811a21941e2b8f008d4052256c4f3aaa08ef",
        "2041913a05b79b96c5c084f30bb8944049a976c8"
      ],
      "author": {
        "name": "Jiwen \u0027Steve\u0027 Cai",
        "email": "jwcai@google.com",
        "time": "Tue May 02 16:06:30 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 02 16:06:30 2017 +0000"
      },
      "message": "BufferQueue: plumbing mConsumerIsProtected\nam: 2041913a05\n\nChange-Id: I3e007aa1ce0d83f372c6350ea4d600e5696149f8\n"
    },
    {
      "commit": "2041913a05b79b96c5c084f30bb8944049a976c8",
      "tree": "3fd46103823db004a1698221605a14674a840a5d",
      "parents": [
        "8e20f172ec8bea9a602f5270edecc225fecb9ce4"
      ],
      "author": {
        "name": "Jiwen \u0027Steve\u0027 Cai",
        "email": "jwcai@google.com",
        "time": "Fri Apr 21 18:49:53 2017 -0700"
      },
      "committer": {
        "name": "Jiwen \u0027Steve\u0027 Cai",
        "email": "jwcai@google.com",
        "time": "Mon May 01 16:40:36 2017 -0700"
      },
      "message": "BufferQueue: plumbing mConsumerIsProtected\n\nThis replaces current logic in BufferQueue that uses\nGRALLOC_USAGE_PROTECTED to indicate whether an ANativeWindow is capable\nof handling hardware protected gralloc buffers. Current logic is\nproblematic as it enforces producer to use protected buffer no matter\nwhether producer side is capable of writing into a protected buffer.\n\nThis new solution, however, introduces a new NATIVE_WINDOW_* flag that\nconsumer can set on IGraphicBufferConsumer to indicate its capacity,\nwhich can then be queried by producer via Surface::query (or\nIGraphicBufferProducer::query).\n\nWhen consumer is capable of reading protected buffer (e.g. a protected\nGL context), the producer can generate either a protected or unprotected\nbuffer.\n\nWhen consumer is not capable of reading protected buffer, the producer\nshould only generate unprotected buffer.\n\nBug: 35726763\nTest: videoplayer-nodrm-protected.apk and videoplayer-drm-protected.apk\nboth works.\n\nChange-Id: I1bf6814c9f1f81f9e04f0e89646b0733ff1a4758\n"
    },
    {
      "commit": "e7b3eb2e8aed25e79a36fe95533ea4c0a0bc1445",
      "tree": "2532a33c348e5d766feba0a6757a9139701430ef",
      "parents": [
        "8ce6238125f580ee14eaeb98862acda6e8b57c9a",
        "f3ef3eab3aaae979c48ef03d27c5004f357b3d03"
      ],
      "author": {
        "name": "Chris Forbes",
        "email": "chrisforbes@google.com",
        "time": "Tue Apr 25 04:20:13 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Apr 25 04:20:13 2017 +0000"
      },
      "message": "gui: Adjust for libui gralloc flags change\nam: f3ef3eab3a\n\nChange-Id: Ic5a747c5f5cdf5d5bb4a2d9a08df55bdd72384c3\n"
    },
    {
      "commit": "f3ef3eab3aaae979c48ef03d27c5004f357b3d03",
      "tree": "03b59278daf7780cade844e79d2034682c511624",
      "parents": [
        "d4106302069679813d71b5777bbf1c9e0647948a"
      ],
      "author": {
        "name": "Chris Forbes",
        "email": "chrisforbes@google.com",
        "time": "Thu Apr 20 12:43:28 2017 -0700"
      },
      "committer": {
        "name": "Chris Forbes",
        "email": "chrisforbes@google.com",
        "time": "Tue Apr 25 02:16:19 2017 +0000"
      },
      "message": "gui: Adjust for libui gralloc flags change\n\nChange-Id: I9f73a1753f9e991eb3a7f0a005c3ab240f0a38b4\nBug: b/33350696\nTest: Bullhead: booted to launcher, take photo, watch youtube\n"
    },
    {
      "commit": "cc9245515459bb2d72a35151dc0267d8bac820c7",
      "tree": "c3edef3aadd50a0de89a3df9360859cbbda28f13",
      "parents": [
        "bba4b8a1fdd288d3d638963066209a632347b4fc",
        "fc333972e92e176ea73b34c5c6c25fc5875140be"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Wed Apr 19 19:07:39 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Apr 19 19:07:39 2017 +0000"
      },
      "message": "Merge \"Return error when trying to disconnect twice\" into oc-dev\nam: fc333972e9\n\nChange-Id: Ief6294b415385e1cf584f1d54cf605c78717c43d\n"
    },
    {
      "commit": "fc333972e92e176ea73b34c5c6c25fc5875140be",
      "tree": "dfe4de1ddd93f1979ac2ad64bb92fc44fd61aef0",
      "parents": [
        "5330710aebfed15005ae39ba5896b615e138bf38",
        "3e198b2b331c09e8d078b5cd4cb770bcf049c0d1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 19 18:47:44 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 19 18:47:45 2017 +0000"
      },
      "message": "Merge \"Return error when trying to disconnect twice\" into oc-dev"
    },
    {
      "commit": "b8a714968fb85e3ecfbfab2c748a2142535fcd36",
      "tree": "353611d6474ebf95d60024a48704a64d8b0bafb7",
      "parents": [
        "eaccb31545e8666064b96fb5eacaa70ca5f826b0",
        "77533ce953b002f2baed2513bac1780fea7d6525"
      ],
      "author": {
        "name": "Jammy Yu",
        "email": "jammy.yu@mstarsemi.com",
        "time": "Mon Apr 17 23:43:04 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Apr 17 23:43:04 2017 +0000"
      },
      "message": "Merge \"Fix error BufferQueue attaching flow.\" am: 0ffe45c2ed am: 4b0e77ab69\nam: 77533ce953\n\nChange-Id: Ic68cdb30579426ecd6e1f885cede30963a575f03\n"
    },
    {
      "commit": "0ffe45c2ed66915dc0287bfedc255bec007e30ea",
      "tree": "534d76896d84c567f9cb4a330508534255e3fe44",
      "parents": [
        "dd315948dbfa02ca4262ca5bb0e29e25b95803ad",
        "69958b80437f143810f453b0bcac760306629078"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 17 20:26:40 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 17 20:26:41 2017 +0000"
      },
      "message": "Merge \"Fix error BufferQueue attaching flow.\""
    },
    {
      "commit": "0556d79eacbf0c9978080d87aa4075120533c7ef",
      "tree": "9d3506abe0a55a50298b64d417947f1e5f8888a2",
      "parents": [
        "1011062e1ac5d0a15ae99108eed2add6c77c3e8f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 22 15:49:32 2017 -0700"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Apr 13 21:58:17 2017 -0700"
      },
      "message": "get rid of IGraphicBufferAlloc\n    \nBuffers can now be allocated directly through\nthe graphic allocator HAL.\n\nTest: marlin: run full camera cts\nTest: angler: take screenshot, take photo w/ and w/o HDR, video, panorama, refocus, slo-mo\nBug: 36462585\nBug: 36333314\nChange-Id: Ie5222c53c3b9462e0ac7a41568718aad131eb328"
    },
    {
      "commit": "3e198b2b331c09e8d078b5cd4cb770bcf049c0d1",
      "tree": "e4325dd3da6df3208aa458e91ed9a195c4f0ecf5",
      "parents": [
        "3e7dad572220e2c4b9bfbd471a6278385e99330d"
      ],
      "author": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Fri Apr 07 15:43:16 2017 -0700"
      },
      "committer": {
        "name": "Wonsik Kim",
        "email": "wonsik@google.com",
        "time": "Fri Apr 07 17:13:11 2017 -0700"
      },
      "message": "Return error when trying to disconnect twice\n\nBug: 34637488\nBug: 36737364\nTest: cts-tradefed run cts-dev --module Graphics\nTest: libgui_test\nChange-Id: I9deb1e8978e3789269ed1cf9753892b68f246e0f\n"
    },
    {
      "commit": "4f6ce7c7b839da76c1542b41816764e05413af99",
      "tree": "a372edb6d2f208f8e620b8dc87e287008363d3e5",
      "parents": [
        "623912183d8314595b37cdedc7c193a21c345bdb"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 03 17:14:31 2017 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 04 19:44:43 2017 +0000"
      },
      "message": "fix race condition that can cause a use after free\n\nBug: 33004354\nTest: manual\nChange-Id: I9b38ee644b02268c9b995a330db758aa2e568399\n"
    },
    {
      "commit": "f8b4ca51111cd2e566d1774ac464da859db78976",
      "tree": "cfb9a4235b4a9a1dd35d5e203bc5fd918dd06403",
      "parents": [
        "78491c9f694cb0767996503c629776a8eda950d7"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 16 18:39:20 2017 +0000"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 16 18:39:20 2017 +0000"
      },
      "message": "Revert \"Get rid of IGraphicBufferAlloc\"\n\nThis reverts commit 78491c9f694cb0767996503c629776a8eda950d7.\n\nChange-Id: I78d5c0a30ab80265f697f681387872b6763b2d1e\n"
    },
    {
      "commit": "78491c9f694cb0767996503c629776a8eda950d7",
      "tree": "78a141a8182ff11e9ec0954758d9afc7b082a873",
      "parents": [
        "bb68dcc8af3833e8d15102d898909563778bee85"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 15 14:30:52 2017 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 15 18:16:52 2017 -0700"
      },
      "message": "Get rid of IGraphicBufferAlloc\n\nThis reverts commit 527747dce1ab4714bd424e5c1a25ebad3506c2cb.\n\nselinux policy allowing this change fixed.\n\nTest: took a screenshot\nTest: ran ImageReaderTest CTS\nBug: 36194109\nChange-Id: I72ac17b6c252750aa2a66cd1d94bd8b4e21b5e9d\n"
    },
    {
      "commit": "527747dce1ab4714bd424e5c1a25ebad3506c2cb",
      "tree": "5db11f4aaf86943f89cb2f6ad25f4a2de8966f72",
      "parents": [
        "1da94dfed674e94edc37cdc8ef68530520edf169"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Mar 13 20:38:48 2017 +0000"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Mar 13 20:38:48 2017 +0000"
      },
      "message": "Revert \"get rid of IGraphicBufferAlloc\"\n\nThis reverts commit 1da94dfed674e94edc37cdc8ef68530520edf169.\n\nBug: 36176799\nBug: 36175706\nChange-Id: I6dd5fe8df564f0efa4392a800fb316e27a05076e\n"
    },
    {
      "commit": "1da94dfed674e94edc37cdc8ef68530520edf169",
      "tree": "f530e00576e48f8d3d5b08b67844ee96a869f8d6",
      "parents": [
        "619634070f2fd5fa6ca0e035323fb2bb2aeea785"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 27 18:17:44 2017 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 08 20:00:21 2017 -0800"
      },
      "message": "get rid of IGraphicBufferAlloc\n\nbuffers can now be allocated in-process.\n\nTest: compile \u0026 run\nBug: cleanup\nChange-Id: I3d4317a9bed20a6d8be2b7ac8fbb85738efb3657"
    },
    {
      "commit": "69958b80437f143810f453b0bcac760306629078",
      "tree": "80da5bf4e79934fb2c185145d3bce739fdf19a21",
      "parents": [
        "057e74631b8b1c658ec9b67684bf486e1ec3e7e5"
      ],
      "author": {
        "name": "Jammy Yu",
        "email": "jammy.yu@mstarsemi.com",
        "time": "Wed Feb 22 16:41:38 2017 -0800"
      },
      "committer": {
        "name": "Jammy Yu",
        "email": "jammy.yu@mstarsemi.com",
        "time": "Thu Feb 23 00:47:06 2017 +0000"
      },
      "message": "Fix error BufferQueue attaching flow.\n\nFix error BufferQueue attaching flow. Because BufferQueue attaching\nbuffer flow doesn\u0027t set mNeedsReallocation to false, it will case\nSurface client to request buffer for attached buffer to cause unsync\nbuffer states with ACodec. So, for attaching buffer by Producer, we\nneed to set mNeedsReallocation to false in BufferQueue. And Surface\nclient will not request buffer again for attached buffer to cause\nsome missing frames.\n\nIssue: 34897483\nTest: GTS\nChange-Id: I25f9fff4b5d1f7052ab3be612cf34879fd17c27c\n"
    },
    {
      "commit": "f810b29ebc8564f94ff7fb14f2d13a0f4d111703",
      "tree": "d99aec6c734c984cfb96779aedc1549646ebc3a5",
      "parents": [
        "873e2eee781f323a8aa0283cab5924fa4cd7ecfe",
        "5ea5e5905170f32d5cf45ad35c552d64743892c3"
      ],
      "author": {
        "name": "Brian C. Anderson",
        "email": "brianderson@google.com",
        "time": "Fri Feb 17 22:17:35 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 17 22:17:36 2017 +0000"
      },
      "message": "Merge changes from topic \u0027GPU_replace_GL\u0027\n\n* changes:\n  Fix unexpected FrameEvents on BufferQueue reconnect\n  Add FrameEvents::isValidTimestamp\n  Change GL references to GPU for getFrameTimestamps.\n  Clean up FrameTimestamp log messages.\n"
    },
    {
      "commit": "5ac51484b293cc0ad08562b03c405721b0bdbc71",
      "tree": "9ec40c14e4d83a5a79f7e979e036c0ce44b2b988",
      "parents": [
        "d41b8e6d9daff6d112b607fae88a0d77e341cf5e"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Feb 16 15:52:33 2017 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Thu Feb 16 19:02:23 2017 -0800"
      },
      "message": "Verbose logging when API_MEDIA is force-disconnected\n\nMedia is seeing intermittent failures during CTS when mediaplayer\nconnected to a surface successfully but subsequent dequeueBuffer\nfails. We suspect that media is getting force-disconnected. Adding\na verbose log when this happens to help track down the failure.\n\nbug: 35364355\n\nChange-Id: I0c48e3d141648a3d08c6abeb6793f8363e9502fc\n"
    },
    {
      "commit": "5ea5e5905170f32d5cf45ad35c552d64743892c3",
      "tree": "fbb4f89afcc0f593652fe722e2e2e351a12ca921",
      "parents": [
        "ed816e6cb4ca15181bf6120890c85290b5f7c02b"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Thu Dec 01 16:54:33 2016 -0800"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Wed Feb 15 16:41:26 2017 -0800"
      },
      "message": "Fix unexpected FrameEvents on BufferQueue reconnect\n\nHelps reduce the number of ALOGE\u0027s being hit\nwhen switching between apps.\n\n* Notify Layer when the Producer disconnects.\n* Avoid sending event deltas from a previous connection.\n* Avoid releasing a frame more than once.\n\nTest: adb shell /data/nativetest/libgui_test/libgui_test\n    --gtest_filter\u003d*GetFrameTimestamps*\n\nChange-Id: I64f314be72ddb154b584d726ac382cd468e345bf\n"
    },
    {
      "commit": "22f842ba04c32cef2faf855dc304eb0ab131b9ec",
      "tree": "dd6cc0fb014748838c5c39b1b91480999514b96c",
      "parents": [
        "90b25ed559f3d04777dbbc195ad5c95287990bf7"
      ],
      "author": {
        "name": "Shuzhen Wang",
        "email": "shuzhenwang@google.com",
        "time": "Wed Jan 18 23:02:36 2017 -0800"
      },
      "committer": {
        "name": "Shuzhen Wang",
        "email": "shuzhenwang@google.com",
        "time": "Fri Jan 20 11:26:13 2017 -0800"
      },
      "message": "BufferQueue: Add bufferReplaced flag in QueueBufferOutput\n\nFor async buffer queue, when queueBuffer overwrites a previously queued\nbuffer, because consumer won\u0027t be able to acquire the overwritten\nbuffer, onBufferReleased isn\u0027t triggered either.\n\nThis makes it difficult to track which buffer in the buffer queue\nbecomes free other than calling dequeueBuffer(). Adding a flag in\nQueueBufferOutput addresses this issue.\n\nTest: TestBufferReplacedInQueueBuffer in BufferQueue_tests\nBug: 34481539\nChange-Id: Ic7f4be2d3f9691dd6b007a450240614c0c420f0d\n"
    },
    {
      "commit": "3d4039d7a291cd9b6f2dd4b46fcdb576f2db3356",
      "tree": "4f98394f38900a920987db69e74446ba1a88aa09",
      "parents": [
        "13e4db237135006e801d3f9d75adaca82687002a"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Fri Sep 23 16:31:30 2016 -0700"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Tue Dec 13 13:06:16 2016 -0800"
      },
      "message": "Use FenceTime to share fence times and reduce open fds.\n\nFenceTimes are created and shared for each Fence that\nFrameTimestampHistory and FrameTracker care about.\n\nOn the consumer side, the FenceTimes are also added to\nshared timelines that are owned by SurfaceFlinger or\nunshared timelines owned by Layer.  The timelines are\nchecked at the end of every frame to minimize the number\nof file descriptors open.\n\nOn the producer side, the FenceTimes are added to\nthe ConsumerFrameEventHistory instead, since the timelines\nthat would be tracked by SurfaceFlinger are not shared\nwith anyone else in the consumer\u0027s process. The timelines\nare checked just after a frame is queued to minimize\nthe number of file descriptors open.\n\nTest: adb shell /data/nativetest/libgui_test/libgui_test\n--gtest_filter\u003d*GetFrameTimestamps*\n\nChange-Id: Ifd4301affe1b24705b2bee7608c5a2c09dfb4041\n"
    },
    {
      "commit": "7c3ba8aa288755fad78ddbabcee0ad5a0610ac1c",
      "tree": "674ba1739716363e0dfd66133026eaa09d29909f",
      "parents": [
        "3890c3995c4a52439844faeb80b5503d42b977d8"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Mon Jul 25 12:48:08 2016 -0700"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Thu Nov 17 11:45:20 2016 -0800"
      },
      "message": "Update producer\u0027s cache of frame events in de/queue\n\n* Cache is only updated during queue and dequeue if\n    the getFrameTimestamps is enabled.\n* The consumer avoids sending a copy of the acquire\n    fence back to the producer since the producer\n    already has a copy.\n\nTest: adb shell /data/nativetest/libgui_test/libgui_test\n--gtest_filter\u003d*GetFrameTimestamps*\n\nChange-Id: I6a8b965ae79441a40893b5df937f9ed004fe7359\n"
    },
    {
      "commit": "3890c3995c4a52439844faeb80b5503d42b977d8",
      "tree": "180b19a3ef1f44ca611b0feb2808379d175c6fc1",
      "parents": [
        "d6927fb1143398370c0885844bfb58923ef740b7"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Mon Jul 25 12:48:08 2016 -0700"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Thu Nov 17 11:44:27 2016 -0800"
      },
      "message": "Cache frame event history producer-side.\n\n* Producer maintains a recent history of frames.\n* Producer only does a binder call if requested\n    informatiVon doesn\u0027t exist in the cache.\n* Consumer sends fences to the producer, which\n    can be queried for timestamps without a\n    binder call.\n\nTest: adb shell /data/nativetest/libgui_test/libgui_test\n--gtest_filter\u003d*GetFrameTimestamps*\n\nChange-Id: I8a64579407cc2935f5c659462cb227b07ba27e43\n"
    },
    {
      "commit": "d6927fb1143398370c0885844bfb58923ef740b7",
      "tree": "209199f1c052507a71d3894cf5339191da7bd20d",
      "parents": [
        "eae5819174ef95363b50affbc96c3117ccc458a6"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Sat Jul 23 23:37:30 2016 -0700"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Tue Nov 15 12:59:26 2016 -0800"
      },
      "message": "Track frame events incrementally and per layer.\n\n* Replaces FenceTracker, which was owned by SurfaceFlinger,\n    with FrameEventHistory, which is owned by Layer.\n* Updates FrameEventHistory as events occur.\n* Changes SurfaceFlinger flag \"--fences\" to\n    \"--frame-events\".\n\nTest: adb shell /data/nativetest/libgui_test/libgui_test\n--gtest_filter\u003d*GetFrameTimestamps*\n\nChange-Id: I868c2ef93964656d7e41848243433499e7f45fe7\n"
    },
    {
      "commit": "e52d9e2acec131484588a2eb184d1d4b34eebeb3",
      "tree": "cc8ac8b2ed3b219b1b44f3f1433c9237c85743fd",
      "parents": [
        "97a69d01420fd82f9dafaadab562cf0083f50936",
        "6ebc46a7c01b22bc19d3c00b493f8d930b15b43a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 15 05:14:56 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Nov 15 05:15:08 2016 +0000"
      },
      "message": "Merge \"Add layered buffer support to libui and libgui.\""
    },
    {
      "commit": "8c015e29b5dfae55bbb8f78f5ef88ee2744cf0cd",
      "tree": "ed50e36d161438c0730eb27eb71ff8810d8e3f78",
      "parents": [
        "dda9bb00cd466b859f35c767944607bd851494b3",
        "0bc421667819f0ae0928834935af1534495f45f8"
      ],
      "author": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Tue Nov 15 01:51:24 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Nov 15 01:51:24 2016 +0000"
      },
      "message": "Fix SF security vulnerability: 32706020 am: d073eb7a3f am: 230b943c6b am: a928cc7169 am: 0517da2c5a am: b0dff427a1 am: 1852db9aa3 am: d4f7a66cf6 am: 0646227ad2 am: b4bd9606e0\nam: 0bc4216678\n\nChange-Id: Ica5b683c1c224e847db25d7ba192ba6d80ef9704\n"
    },
    {
      "commit": "0bc421667819f0ae0928834935af1534495f45f8",
      "tree": "4971be53368a79d61b47739da8548da4badc1249",
      "parents": [
        "1852c5564dd9181e83b289c6bfe0515c8c048018",
        "b4bd9606e0f05781540a9dc3593e6733a696ce3d"
      ],
      "author": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Tue Nov 15 01:44:23 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Nov 15 01:44:23 2016 +0000"
      },
      "message": "Fix SF security vulnerability: 32706020 am: d073eb7a3f am: 230b943c6b am: a928cc7169 am: 0517da2c5a am: b0dff427a1 am: 1852db9aa3 am: d4f7a66cf6 am: 0646227ad2\nam: b4bd9606e0\n\nChange-Id: I738237f426b898a05cb9511dbc0a768e7cc00cdf\n"
    },
    {
      "commit": "0646227ad2e6c1aaddc40fc871554b51a953fa29",
      "tree": "fbea1455b3ad588f29dd16afcfa479a9d525ad5b",
      "parents": [
        "6437218b85d1a454105add9f4afa7becf5408497",
        "d4f7a66cf698f6229553980593d81cff80f02c77"
      ],
      "author": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Tue Nov 15 01:31:22 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Nov 15 01:31:22 2016 +0000"
      },
      "message": "Fix SF security vulnerability: 32706020 am: d073eb7a3f am: 230b943c6b am: a928cc7169 am: 0517da2c5a am: b0dff427a1 am: 1852db9aa3\nam: d4f7a66cf6\n\nChange-Id: I468e9387f0541fc22d71179ff6e05397f99e4dce\n"
    },
    {
      "commit": "d4f7a66cf698f6229553980593d81cff80f02c77",
      "tree": "a5833035fc74f04047be8be5405cef9a3167c58a",
      "parents": [
        "397ec266753a675e6891c479971e6506491b1b44",
        "1852db9aa3e558c0a601d6b15c45214b0c6deff1"
      ],
      "author": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Tue Nov 15 01:23:50 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Nov 15 01:23:50 2016 +0000"
      },
      "message": "Fix SF security vulnerability: 32706020 am: d073eb7a3f am: 230b943c6b am: a928cc7169 am: 0517da2c5a am: b0dff427a1\nam: 1852db9aa3\n\nChange-Id: Ief2e221eb25138131d4b9fe19b669dca26dd1726\n"
    },
    {
      "commit": "1852db9aa3e558c0a601d6b15c45214b0c6deff1",
      "tree": "6eb51e4a18f6f98b97a98adc0dbf5ef508b3e956",
      "parents": [
        "7b265d8ab5c73e5478789e7ed925fd8184ee8668",
        "b0dff427a1dd35598085a58d48ebf83260583cbf"
      ],
      "author": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Tue Nov 15 01:17:50 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Nov 15 01:17:50 2016 +0000"
      },
      "message": "Fix SF security vulnerability: 32706020 am: d073eb7a3f am: 230b943c6b am: a928cc7169 am: 0517da2c5a\nam: b0dff427a1\n\nChange-Id: If61fab86a971de18633549240d32f41205bc52e9\n"
    },
    {
      "commit": "b0dff427a1dd35598085a58d48ebf83260583cbf",
      "tree": "0bb96cf423dba4dc93b46fb93eccd7ba3aaf4c0f",
      "parents": [
        "8211047138ea7892c73f4e6f6291a85a11759e0c",
        "0517da2c5a385663b5d4b0292f7799735cb0bb35"
      ],
      "author": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Tue Nov 15 01:10:20 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Nov 15 01:10:20 2016 +0000"
      },
      "message": "Fix SF security vulnerability: 32706020 am: d073eb7a3f am: 230b943c6b am: a928cc7169\nam: 0517da2c5a\n\nChange-Id: Ie25ecd20988d9aa8d3f59b07d00b80c0a18d5e3a\n"
    },
    {
      "commit": "6ebc46a7c01b22bc19d3c00b493f8d930b15b43a",
      "tree": "6f68e8f1cf2ccde71eece4a037c8e32b4f0cd0b2",
      "parents": [
        "cd7dedbe69f8c90d351b97b1acea2bb3635b68ca"
      ],
      "author": {
        "name": "Craig Donner",
        "email": "cdonner@google.com",
        "time": "Fri Oct 21 15:23:44 2016 -0700"
      },
      "committer": {
        "name": "Craig Donner",
        "email": "cdonner@google.com",
        "time": "Fri Nov 11 11:35:06 2016 -0800"
      },
      "message": "Add layered buffer support to libui and libgui.\n\nBug: 31686534\nTest: manual\nChange-Id: Ia40270701467f4b785660324cad883e7da08989a\n"
    },
    {
      "commit": "d073eb7a3f28fd74bfa24c8b7599465cb7de5436",
      "tree": "313ea3bcbab084f3a60fd1690b552f49c0629624",
      "parents": [
        "2c39ea10255c4cddf3e97fd00c2aa1548bc54c4f"
      ],
      "author": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Tue Nov 08 15:35:02 2016 -0800"
      },
      "committer": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Wed Nov 09 17:25:44 2016 +0000"
      },
      "message": "Fix SF security vulnerability: 32706020\n\nBecause of lack of mutex lock when get mConsumerName, if one thread\ngetConsumerName, another thread setConsumerName frequently, an UAF will\nbe triggered.\n\nChange-Id: Id1bbf0d15de6d16def2f54ecade385058cda3b65\nTest: Marling with poc provided in bug report.\nBug: 32706020\n"
    },
    {
      "commit": "59ea1049746e67065864928b1350a2edd78cdc4f",
      "tree": "f6fdacd71f0e9e753fe704b762b21025f768016d",
      "parents": [
        "f7bbdab3e8a3f6b108f502c8421d5bd08089a1c7",
        "20e9085b51c00b7828e3a8fdfe902adc1c89a924"
      ],
      "author": {
        "name": "Matthew Bouyack",
        "email": "mbouyack@google.com",
        "time": "Fri Oct 07 17:07:06 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Oct 07 17:07:06 2016 +0000"
      },
      "message": "resolve merge conflicts of 3b8e6b2 to nyc-mr1-dev-plus-aosp\nam: 20e9085b51\n\nChange-Id: I5b8f075d9a42ab3de359dc9bef9767d23af493d2\n"
    },
    {
      "commit": "20e9085b51c00b7828e3a8fdfe902adc1c89a924",
      "tree": "66ece69b7161dc95e97872d4fa476143f77c79a4",
      "parents": [
        "6f3e42399459f053cddda4fa2190f0ece3387e06",
        "3b8e6b2f30af0564538c2a660033d6a97ab8038f"
      ],
      "author": {
        "name": "Matthew Bouyack",
        "email": "mbouyack@google.com",
        "time": "Thu Oct 06 15:36:56 2016 -0700"
      },
      "committer": {
        "name": "Matthew Bouyack",
        "email": "mbouyack@google.com",
        "time": "Thu Oct 06 15:37:58 2016 -0700"
      },
      "message": "resolve merge conflicts of 3b8e6b2 to nyc-mr1-dev-plus-aosp\n\nChange-Id: I9c02a56d63de5828453aa8926ca801d96b04a6cf\n"
    },
    {
      "commit": "3b8e6b2f30af0564538c2a660033d6a97ab8038f",
      "tree": "24513f55fef74732248dd0402e9ff03658658fd4",
      "parents": [
        "3169437feb387b56499208464960d281bd9b87c9"
      ],
      "author": {
        "name": "Matthew Bouyack",
        "email": "mbouyack@google.com",
        "time": "Mon Oct 03 16:24:26 2016 -0700"
      },
      "committer": {
        "name": "Matthew Bouyack",
        "email": "mbouyack@google.com",
        "time": "Tue Oct 04 12:57:38 2016 -0700"
      },
      "message": "Eliminate unnecessary calls to onBufferReleased\n\nThis change adds a callback to ProducerListener to indicate whether the\nlistener needs the \u0027onBufferReleased\u0027 notification. This allows us to\navoid making that binder call unnecessarily, saving ~170us per frame on\nAndroid Wear.\n\nBy default the new callback returns true, so behavior for existing\nclients should be unchanged. Only the DummyProducerListener returns\nfalse.\n\nAlso note that it would be simpler to just pass NULL for the\nProducerListener if not for that fact that we still need it for death\nnotification.\n\nBug: b/31122630\n\nChange-Id: I730834218a055d89e89f876dd77da8127eb78000\n"
    },
    {
      "commit": "6e7e2b44efa6427cc106b20cea76d9a80dadcac9",
      "tree": "0c8b7987603b1a618c6a1f5561d95a9ab94a0e08",
      "parents": [
        "64b463a69b84f89d31c020b6018271a7a74007b4"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Sep 27 14:08:19 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Sep 30 19:51:44 2016 +0000"
      },
      "message": "Fix logging implicit sign conversions\n\nThe warnings were being hidden by the use of -isystem to include\nframeworks/native/include.\n\nBug: 31752268\nTest: m -j\nChange-Id: I2ce11db524ee9d8f846fdf3ed6fb882d5ef57956\n(cherry picked from commit 152c3b749a8ec634afc66dddef7d33130472aeb1)\n"
    },
    {
      "commit": "152c3b749a8ec634afc66dddef7d33130472aeb1",
      "tree": "45a43df8f84eebb4fa231c06852ff1a3bea63477",
      "parents": [
        "9a80d502c34dc663a2c166eba17de9003fd8605d"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Sep 27 14:08:19 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Sep 29 17:17:36 2016 -0700"
      },
      "message": "Fix logging implicit sign conversions\n\nThe warnings were being hidden by the use of -isystem to include\nframeworks/native/include.\n\nBug: 31752268\nTest: m -j\nChange-Id: I2ce11db524ee9d8f846fdf3ed6fb882d5ef57956\n"
    },
    {
      "commit": "3d0becdcec3f27880b345bd05f2120c1f7e668df",
      "tree": "64e3ee212d9311f32b665415f0e6f523fccbbd54",
      "parents": [
        "eef64b01241b32e9329217a9b7257c22dc9212f2",
        "a9d1c1099d795d8ccafbbf48ee053d34505fbbde"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Fri Sep 23 01:44:26 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 23 01:44:26 2016 +0000"
      },
      "message": "Surface: Add force disconnection method. am: 97b9c86338 am: 962b13b9be\nam: a9d1c1099d\n\nChange-Id: Iea981cfaddd2be6ecdfebbdfadd9d822f17d682f\n"
    },
    {
      "commit": "97b9c86338e2d364d47ea7522c2d81a8014f0e07",
      "tree": "263e7e5a01758911cf2ee61c926ebf85db3d5f27",
      "parents": [
        "669867835ba2a8120cc3c171c8dc3e41ae9b9c8c"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu Sep 08 13:54:35 2016 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Sep 14 09:48:40 2016 -0700"
      },
      "message": "Surface: Add force disconnection method.\n\nAdd a new method forceScopedDisconnect to Surface. This will\nbe used by the framework to force disconnection at times where\nthe underlying GraphicBufferProducer may be about to be reused.\nThis is scoped by PID to avoid conflicting with remote producers.\n\nBug: 30236166\nChange-Id: I857216483c0b550f240b3baea41977cbc58a67ed\n"
    },
    {
      "commit": "a1d24b45ccb6f68448f478e2a847a5544276002b",
      "tree": "e794c6350eb475c1ecdcf891ad19ea0981ca8a4a",
      "parents": [
        "b10cd89507e8c492b2f5bb346d7839c8e04ffdfa"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Mon Aug 22 17:26:41 2016 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Thu Aug 25 13:13:08 2016 -0700"
      },
      "message": "Add requestor name to GraphicBuffer alloc metadata\n\nAdds a requestor name (usually the BufferQueue consumer\u0027s name) to the\nmetadata that GraphicBufferAllocator stores on allocation so that\n`dumpsys SurfaceFlinger` can attempt to attribute buffer usage to the\ncorrect client.\n\nBug: 30776557\nChange-Id: I6e0f346584c871bb3b9d5481f82b697b0475a916\n"
    },
    {
      "commit": "024e9313ce69ced1f853d737de680ef9f50ed26d",
      "tree": "0973985deb030d81a76bd123c8e21f3d5c23b7b8",
      "parents": [
        "ce730f66e2d3745b77ecb212c28771b42e8abf52"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Wed Aug 24 12:17:29 2016 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Wed Aug 24 12:17:29 2016 -0700"
      },
      "message": "Add requestor name to GraphicBuffer alloc metadata\n\nAdds a requestor name (usually the BufferQueue consumer\u0027s name) to the\nmetadata that GraphicBufferAllocator stores on allocation so that\n`dumpsys SurfaceFlinger` can attempt to attribute buffer usage to the\ncorrect client.\n\nBug: 30776557\nChange-Id: I6e0f346584c871bb3b9d5481f82b697b0475a916\n"
    },
    {
      "commit": "d4079aff759713e7c7dd14cecb585a7290e80772",
      "tree": "81a3c7e863ca1cbc1fc492ef5dc8754c6e0dd592",
      "parents": [
        "686715335adfe17628a1132140f6a0d51e730cf6"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Mon Aug 22 17:26:41 2016 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Wed Aug 24 12:13:37 2016 -0700"
      },
      "message": "Add requestor name to GraphicBuffer alloc metadata\n\nAdds a requestor name (usually the BufferQueue consumer\u0027s name) to the\nmetadata that GraphicBufferAllocator stores on allocation so that\n`dumpsys SurfaceFlinger` can attempt to attribute buffer usage to the\ncorrect client.\n\nBug: 30776557\nChange-Id: I6e0f346584c871bb3b9d5481f82b697b0475a916\n"
    },
    {
      "commit": "468051e20be19130572231266db306396a56402b",
      "tree": "a251f0836ddddafbf7602f610aadb4639d5bb55c",
      "parents": [
        "2b8ae01ed150e74810c289e5facf77558c46760a"
      ],
      "author": {
        "name": "Irvel",
        "email": "irvel@google.com",
        "time": "Mon Jun 13 16:44:44 2016 -0700"
      },
      "committer": {
        "name": "Irvel",
        "email": "irvel@google.com",
        "time": "Thu Jul 21 15:19:53 2016 -0700"
      },
      "message": "Integrate SurfaceInterceptor into SurfaceFlinger\n\nChange-Id: If18d967f2b69ed219f17a9afedb61884ad5f1dc8\n"
    },
    {
      "commit": "bd3577ef5bae7d65e54bddc04f90b619330edb89",
      "tree": "e39428a6d84d9b4e3cedc63c2a99f45fe2002614",
      "parents": [
        "ab708f69952e8672d3f7e235b6d46d89f53b340e"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Mon Jun 20 17:40:34 2016 -0700"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Thu Jul 14 08:43:20 2016 -0700"
      },
      "message": "Make sure constructors initialize all members\n\n- Add default constructors to Parcelables that didn\u0027t have them and\n  make sure all members are initialized by the constructors.\n- Add missing fields to BufferItem flatten/unflatten.\n\nChange-Id: I9aa83b326dc3aee757762e63be499dc96a74df91\n"
    },
    {
      "commit": "bc8c1928e1dbdaf6a2820f6e426c96ed61284043",
      "tree": "a12cb4237339aa116e20cb7c573531dd5bd051da",
      "parents": [
        "0ade247d4b02b81f323480b4ba043927f6b36a73"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Fri Jul 01 14:15:41 2016 -0700"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Fri Jul 01 21:35:41 2016 +0000"
      },
      "message": "BQ: Remove getNextFrameNumber Binder call\n\n- Return the value in queueBuffer instead and cache it in Surface\n\nChange-Id: I10ab112afb03cf0231b047d4a4569cd641827043\n"
    },
    {
      "commit": "0ade247d4b02b81f323480b4ba043927f6b36a73",
      "tree": "1536e93e736b93852c0225dbb08c253ab05b9126",
      "parents": [
        "0a0680945710946f3bf01ae05f933ccec4162dc8",
        "8e3e92b906db431c4fa822f21242977d4ee99942"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Thu Jun 30 16:48:02 2016 -0700"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Thu Jun 30 17:19:31 2016 -0700"
      },
      "message": "resolve merge conflicts of 8e3e92b to nyc-mr1-dev\n\nChange-Id: Ic67f0894e68ea5276eb9187a13cd24f105d55d68\n"
    },
    {
      "commit": "0a0680945710946f3bf01ae05f933ccec4162dc8",
      "tree": "7b4b99b291ad32515d142f9522210b2585fff027",
      "parents": [
        "2f1eb1c16d6061ba4f79ecf67d08827bf74bed27"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Wed Jun 29 15:08:33 2016 -0700"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Wed Jun 29 22:10:05 2016 +0000"
      },
      "message": "BQ: Handle buffer allocation failure\n\nReturn the slot to the mFreeSlots if we fail to allocate.\n\nBug 29873396\n\nChange-Id: Icafc5c64c7233d47e160f7a56e5a314e4a01611d\n"
    },
    {
      "commit": "8e3e92b906db431c4fa822f21242977d4ee99942",
      "tree": "575005a90d0143170dedd2fe0c1e97110fce7a8a",
      "parents": [
        "ced6078b0e03a75d9b78e61ce25609bd2cb97b1d"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Mon Jun 27 17:56:53 2016 -0700"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Tue Jun 28 13:49:07 2016 -0700"
      },
      "message": "BQ: Add and expose a unique id\n\nBug 29422927\n\nChange-Id: I80eab94f073ebc378302f00fa86a740c3643657e\n"
    },
    {
      "commit": "e38b57e2d454b9fafc088ef9efda88ada3267dbf",
      "tree": "a1c4f460fc8735e1f1d0cbf0df1e4f027c75c302",
      "parents": [
        "91d8f9f538a11ad02143565ab14bbd984b189603",
        "51ed38bb139c54ed29384f679b5080d4be5792ca"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Sat Jun 18 08:28:41 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Jun 18 08:28:41 2016 +0000"
      },
      "message": "Merge \\\"BufferQueueProducer: Signal consumer when a buffer is detached\\\" into nyc-dev\nam: 51ed38bb13\n\nChange-Id: I7f901c66dd9e2f62bdc15c8b768f27003aa46611\n"
    },
    {
      "commit": "93dd0518a0101844ef435a3425c803c986b38d87",
      "tree": "90c7de1759c1f5395540ced6f4fdbcd5cc20c084",
      "parents": [
        "572e23d7614485a06102b00667d003b21b874bf9"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jun 10 14:21:02 2016 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jun 10 14:21:02 2016 -0700"
      },
      "message": "BufferQueueProducer: Signal consumer when a buffer is detached\n\nWhen a buffer is detached, it should be cleared from the consumer-side\ncache as well.\n\nNot doing so can leak buffers no longer owned by the queue for extended\nlengths of time, depending on the exact usage patterns of the producer\nand consumer.\n\nBug: 28695173\nChange-Id: I2c618be51f2c827d92d0e19b92a2d5befda87c38\n"
    },
    {
      "commit": "9e8143ec78a0bf3779f12000b67f21b8fba6e2a7",
      "tree": "c3e3d10eb92282ba9e3764973507d1fccafe0e2c",
      "parents": [
        "1409090c0a92751f9fe7406a6e043cdbce2ebe4d",
        "ce796e78a57018f186b062199c75d94545318aca"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Thu Jun 09 21:10:16 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 09 21:10:16 2016 +0000"
      },
      "message": "Merge \"Plumbing for getting FenceTracker timestamps\" into nyc-mr1-dev"
    },
    {
      "commit": "ce796e78a57018f186b062199c75d94545318aca",
      "tree": "234eadc7ac2fc3d699a1040b9cd9576abbebd652",
      "parents": [
        "5045ab2bb14110f577e3cfff8acfae906dc29935"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Thu Feb 04 19:10:51 2016 -0800"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Tue Jun 07 16:09:06 2016 -0700"
      },
      "message": "Plumbing for getting FenceTracker timestamps\n\nChange-Id: I1ebee9e42e28658bd3a2b161fdaabb7da756d8f3\n"
    },
    {
      "commit": "907e94d3da1215328fe3a5020cd5005e42499eba",
      "tree": "90d008b45f00e3dc993152da5b4cccc318f9427b",
      "parents": [
        "161a5bac18d7eca64b639f51cd9c78c51c2bf1a4",
        "eb6377eb133f902e737fab370df7679430a1d8d1"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Thu Jun 02 17:20:04 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jun 02 17:20:04 2016 +0000"
      },
      "message": "Merge \"BQ: Don\\\u0027t return fences from dequeue in shared buffer mode\" into nyc-dev\nam: eb6377eb13\n\n* commit \u0027eb6377eb133f902e737fab370df7679430a1d8d1\u0027:\n  BQ: Don\u0027t return fences from dequeue in shared buffer mode\n\nChange-Id: Ieb075d9598edcaec542ee06663aa292111968474\n"
    },
    {
      "commit": "28c65ad1a1bc2cfd232044e9ea704197483cf250",
      "tree": "9ac325a73a26623f4c997b2812bfe303a61c2d8a",
      "parents": [
        "e4ecdb66d5c2eed64cbd5b267e0621cab7b8a63b"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Wed Jun 01 15:03:21 2016 -0700"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Wed Jun 01 15:03:21 2016 -0700"
      },
      "message": "BQ: Don\u0027t return fences from dequeue in shared buffer mode\n\nBug 29007505\n\nChange-Id: I112ae6bd64ddc9a923ad9080e85a71adb96146af\n"
    },
    {
      "commit": "e77c7669bee30b7c0099172cf0c38cef92412040",
      "tree": "bdf6da9c3a2e32628f5fe837f519ff27dcb4bf1e",
      "parents": [
        "411326105161b86965784dad03452900b2fcb911"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Fri May 13 11:37:28 2016 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Fri May 13 15:48:03 2016 -0700"
      },
      "message": "BufferQueue/SF: Add OccupancyTracker\n\nAdds an OccupancyTracker to BufferQueue. This module keeps track of\nhow many buffers are in the queue over time, which, in combination\nwith various aggregation of these statistics, allows SurfaceFlinger\nto report what fraction of the time a given layer was double- or\ntriple-buffered.\n\nChange-Id: Ida6e967dc5483c00a633e9fe03998e420dd88502\n"
    },
    {
      "commit": "1a61da5e28fa16ad556a58193c8bbeb32a5f636d",
      "tree": "437007d7980325c0a3be841d544086455fa67c67",
      "parents": [
        "ce8e5df3c11616f3eb7867ce89558b530651166c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Apr 28 13:18:15 2016 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Apr 28 14:02:42 2016 -0700"
      },
      "message": "Return the transform to apply in getLastQueuedBuffer\n\nBug: 28428955\nChange-Id: Id48f7d3bf3f5deb074cf0a6a52a41caac875db41\n"
    },
    {
      "commit": "87e94cd1d16281051d5241a25035aa1db0b073d8",
      "tree": "6bdf3d639b443d390562a0853a9848d7c4bc3ca6",
      "parents": [
        "2ee735c97c760cec76c1385f1896b822ff45cba5"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 26 11:29:08 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Apr 27 11:02:21 2016 -0700"
      },
      "message": "Fix use of invalid iterator.\n\nThe code grabbed an iterator to a slot, but eventually does an erase\nof the iterator. Unfortunately, the code then attempts to use this\ninvalid iterator which can introduce subtle crashes by putting a\ngarbage value on the free buffer list.\n\nBug: 28351886\nChange-Id: I42a4431b182cee4de829f15fa4ddc175a3d141f7\n"
    },
    {
      "commit": "4d85da4a77203f4c361e48699e5598ebe8c77b32",
      "tree": "42f2bc277a25d8b55a71d5c303e2c0d497ad9d77",
      "parents": [
        "151cc4a91a92447a78a964bf1164b50ac8921f65"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Tue Apr 19 20:11:56 2016 -0700"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Wed Apr 20 17:48:07 2016 -0700"
      },
      "message": "BQ: Replace items from back of queue\n\nIt\u0027s possible to have one or more non-droppable items in the queue\nahead of a droppable item. In that case we want to replace the\ndroppable one at the end of the queue. By changing the policy to\nalways replace the last item in the queue (if it\u0027s droppable) we\nensure that there will never be more than one droppable item in the\nqueue and that it will always be the last one.\n\nBug 27129258\n\nChange-Id: I9a6234fe12a0095ccb93ceb9cdb74616944900b0\n"
    },
    {
      "commit": "72b59753f90df64b3dd86fa6a166b24c8b64b985",
      "tree": "96ec287845b489980425421d9932b2d592facdab",
      "parents": [
        "4908a010f63c7d0a6d9a1f4b67c3453a116d1556",
        "245cc5b57da46d5852aa820be2a96f37425b3337"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Wed Apr 20 20:28:07 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 20 20:28:07 2016 +0000"
      },
      "message": "Merge \"BQ: Avoid unnecessary calls to consumer listener\" into nyc-dev"
    },
    {
      "commit": "50101d02a8eae555887282a5f761fdec57bdaf30",
      "tree": "7b89204bdbebded39f42f57667be3fbba15ad7b9",
      "parents": [
        "6328134d8f3969e5cf345bec84b2c6455afc6a34"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Thu Apr 07 16:53:23 2016 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue Apr 19 15:19:21 2016 -0700"
      },
      "message": "libgui: Add getLastQueuedBuffer to BufferQueue\n\nAdds the ability to get the last buffer queued to a BufferQueue plus\nits acquire fence.\n\nBug: 27708453\nChange-Id: Iee39475740b40c854a5f46178b2934fd930e61b8\n"
    },
    {
      "commit": "245cc5b57da46d5852aa820be2a96f37425b3337",
      "tree": "3000489b8e4b14cf392945bb644f1673bcbfe701",
      "parents": [
        "9ffa1a4da16edc23067070f5605917ddd57739e8"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Tue Apr 19 11:33:00 2016 -0700"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Tue Apr 19 19:01:00 2016 +0000"
      },
      "message": "BQ: Avoid unnecessary calls to consumer listener\n\nTry to avoid unnecessary calls to the consumer listener\u0027s\nonBuffersReleased() since they can potentially deadlock.\n\nBug 28254168\n\nChange-Id: Ib064e5ebe1403a1028589342b3c33e6f40bb54a9\n"
    },
    {
      "commit": "3559fbf93801e2c0d9d8fb246fb9b867a361b464",
      "tree": "143e1a099675f7aee832b507e7a340d7f4cca07d",
      "parents": [
        "792a10b940deeb1d0649f29a2f5777ac668ef780"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Thu Mar 17 15:50:23 2016 -0700"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Thu Mar 17 16:47:57 2016 -0700"
      },
      "message": "Rename single buffer mode to shared buffer mode\n\nChange-Id: Id43d0737d9367981644e498942ebc0077d61038c\n"
    },
    {
      "commit": "295a9fc8aa87daa2cded5c1a279b8cd24e9a9a9f",
      "tree": "b5e65390ab0e0c5d52642913b7fe382453f45f56",
      "parents": [
        "ec3c05b2d47efaca03ec42572fc2631af5267438"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Mon Mar 14 16:02:19 2016 -0700"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Thu Mar 17 13:45:39 2016 -0700"
      },
      "message": "BQ: Allow shared buffer to be the first queued buffer\n\n- When single-buffer mode is enabled the shared buffer will now be\n  either the first buffer dequeued or the first buffer queued.\n  Whichever comes first.\n\nBug 24940410\n\nChange-Id: I9f7e2630640e37fe1fb967aed41a3025567247a8\n"
    },
    {
      "commit": "26bb2b1c0d8f7b05feb40b0e5bf1bb384e1b5f55",
      "tree": "238f6e2f677793a71b2cb94e418740e7ca11748b",
      "parents": [
        "9c3e10b4bf83985f138821c5af7c804635242f29"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Mar 08 12:08:33 2016 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Tue Mar 08 12:10:08 2016 -0800"
      },
      "message": "Fix warning when force-disconnect but there is no connected API\n\nIt\u0027s not really an error, we can return early.\n\nbug: 27295820\nChange-Id: I450ca615cf9c33b9aaef9c31eec8217c97516df5\n"
    },
    {
      "commit": "1b3a9acb77ee12568fa19740d8eeab165a0dcd98",
      "tree": "3cd305ad9199e166f5f93a8101272f72c0425e82",
      "parents": [
        "e6080bf2e54aa0d548b0eb571ad2eef2c52e5fb6"
      ],
      "author": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Feb 29 16:47:47 2016 -0800"
      },
      "committer": {
        "name": "Chong Zhang",
        "email": "chz@google.com",
        "time": "Mon Feb 29 16:51:16 2016 -0800"
      },
      "message": "Add SurfaceControl::disconnect() to disconnect currently connected API\n\nbug: 27295820\nChange-Id: I6f51338bc15e018ed7899172653599ab6254c8c9\n"
    },
    {
      "commit": "aaf51e52cfa937a8938a4429a14432a8424c66d0",
      "tree": "fe08a9bfd719382eb4cdc11e7869eb8ab38ee469",
      "parents": [
        "e4897cec75852fcb461a8dd3a403353eeb149f06",
        "ff95aabbcc6e8606acbd7933c90eeb9b8b382a21"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Sat Feb 20 18:22:29 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Feb 20 18:22:29 2016 +0000"
      },
      "message": "Merge \"Add interface for controlling single buffer auto refresh\" into nyc-dev"
    },
    {
      "commit": "981066c3a5be3e4775b6537ef32268f7e108c912",
      "tree": "6afbefb65627b5b3607b2e1494a51bdb8fcc7388",
      "parents": [
        "e72aa1b14debdd73d2295724a467fef1a094e9b2"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Thu Feb 18 12:54:37 2016 -0800"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Thu Feb 18 12:54:37 2016 -0800"
      },
      "message": "Partial revert of \"Fix Surface slot caching\"\n\n- Partially reverts commit 789a0c82cb370d6b82f401cc130af58c85802cbf.\n- Leaves the fix in Surface, but reverts all changes to the\n  Producer/Consumer listeners.\n\nBug 27246023\nBug 27229287\n\nChange-Id: I9283f9e59e666b5ae44c0db25f99a80d05eea3ee\n"
    },
    {
      "commit": "3130422a1d7a7d2a5d528cd161e860fb5f66d353",
      "tree": "4659acd93f7704fb38d8158921db41180bbe9f4e",
      "parents": [
        "60292e5c8324475c5afbd0a6703b6b3ae2c94b1a",
        "789a0c82cb370d6b82f401cc130af58c85802cbf"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Tue Feb 16 18:46:40 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 16 18:46:40 2016 +0000"
      },
      "message": "Merge \"Fix Surface slot caching\" into nyc-dev"
    },
    {
      "commit": "dce5c559712031b3cb8039067819c11c1a4e16f9",
      "tree": "6ed8962d6919df5cd10dabef0581eb446da3f4d6",
      "parents": [
        "c5cec281654c5dee2273ce4bebd3a749c3a1119e"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Wed Feb 10 15:43:22 2016 -0800"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Wed Feb 10 15:43:22 2016 -0800"
      },
      "message": "BQ: Fix iterator use\n\nDon\u0027t use an iterator after it\u0027s been removed from the container.\n\nChange-Id: I374b454bba95d10dcec6a600bf8f16e5636e426b\n"
    },
    {
      "commit": "789a0c82cb370d6b82f401cc130af58c85802cbf",
      "tree": "0d62a743da092ee5c95c92a07c4efbbb0e4cd43f",
      "parents": [
        "c5cec281654c5dee2273ce4bebd3a749c3a1119e"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Fri Feb 05 13:39:27 2016 -0800"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Tue Feb 09 18:21:54 2016 -0800"
      },
      "message": "Fix Surface slot caching\n\n- Now that it\u0027s possible to resize a BufferQueue while buffers are\n  dequeued/acquired, it\u0027s no longer correct for Surface to clear its\n  cache when the BufferQueue is resized since it must keep at least\n  the currently dequeued buffers.\n- Add an onSlotsFreed callback to IProducerListener so that producers\n  that wish to be notified about buffers being freed can do so. Note\n  that this isn\u0027t currently used in Surface.\n- Review and fixup all the places where the producer/consumer\n  listeners for freed buffers should be called.\n\nChange-Id: I4ab0c92bc69b75a3c072ddf5d74d78f941dba4c8\n"
    },
    {
      "commit": "ff95aabbcc6e8606acbd7933c90eeb9b8b382a21",
      "tree": "cd7690fdf21486139cfff232c6ce09132d18a05b",
      "parents": [
        "c5cec281654c5dee2273ce4bebd3a749c3a1119e"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Wed Jan 13 17:09:58 2016 -0800"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Tue Feb 09 17:16:33 2016 -0800"
      },
      "message": "Add interface for controlling single buffer auto refresh\n\n- Adds a boolean to BufferQueue that controls whether or not auto\n  refresh is enabled in SurfaceFlinger when in single buffer mode.\n- Adds plumbing up to ANativeWindow.\n- When enabled, it will cache the shared buffer slot in Surface in\n  order to prevent the Binder transaction with SurfaceFlinger.\n\nBug 24940410\n\nChange-Id: I83142afdc00e203f198a32288f071d926f8fda95\n"
    },
    {
      "commit": "72daab652e3481566c01ce45c6afdb9fcec6f140",
      "tree": "0d410756f76f3edc318753cb0698796571e87103",
      "parents": [
        "9e314337cdc65b1fbf52060e9a6a4ddf2215c352"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Mon Dec 07 16:38:43 2015 -0800"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Tue Feb 02 11:15:47 2016 -0800"
      },
      "message": "BQ: Flexible resizing\n\n- Allow the producer to call setMaxDequeuedBufferCount and the\n  consumer to call setMaxAcquiredBufferCount when buffers are\n  currently dequeued/acquired as long as the new value is not less\n  than the number of dequeued/acquired buffers.\n\nBug 22768206\n\nChange-Id: I599a4027a6ae9cb0a1c0d5ec60cb5e65b86a345b\n"
    },
    {
      "commit": "9e314337cdc65b1fbf52060e9a6a4ddf2215c352",
      "tree": "fa3ac98f0e8fc8582224f4e0570ca0e592ec47ba",
      "parents": [
        "23b4abe024ea88c45e0b94c80e1fb537a573b143"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Tue Jan 12 13:49:19 2016 -0800"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Tue Feb 02 11:15:47 2016 -0800"
      },
      "message": "BQ: Conditionally compile validateConsistencyLocked\n\n- Only enable it on userdebug and eng builds so that it won\u0027t slow\n  down user builds.\n\nChange-Id: I70933a23d54657fdf5cbc23873da4fbee84b9a26\n"
    },
    {
      "commit": "23b4abe024ea88c45e0b94c80e1fb537a573b143",
      "tree": "410a141ea14a17a668076f28de3f5260cd43543d",
      "parents": [
        "c2a3d7aa1636d1fda62d65d7bd557a26428f1380"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Fri Jan 08 12:15:22 2016 -0800"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Tue Feb 02 11:15:47 2016 -0800"
      },
      "message": "BQ: Improved buffer/slot tracking\n\n- Explicitly track active buffers and unused slots on top of the\n  already existing tracking for free slots and free buffers.\n\nChange-Id: Ife2678678e96f0eb0b3fb21571058378134bd868\n"
    },
    {
      "commit": "05249fc2d0da542efa46acdb7b10a619a68538e1",
      "tree": "4f64ea7c11c6ba01d299a93dfc00063bd53710a9",
      "parents": [
        "01add041d2a98e4b93d17bef286bd2f43d5da9a3"
      ],
      "author": {
        "name": "Craig Donner",
        "email": "cdonner@google.com",
        "time": "Fri Jan 15 19:33:55 2016 -0800"
      },
      "committer": {
        "name": "Craig Donner",
        "email": "cdonner@google.com",
        "time": "Tue Jan 26 14:23:02 2016 -0800"
      },
      "message": "Adds private EGL extension to create an EGLClientBuffer from a gralloc\u0027d buffer.  This lets you create a color EGLimage backed by gralloc, which is needed to support protected textures.\n\nBug: 22775237\nBug: 22855417\n\nChange-Id: I8e03061d74a74a8fdd6524ffa97a6c75a6ced89c\n"
    },
    {
      "commit": "5ecfb68ffd63d352df0392dca6e95ef67a66c679",
      "tree": "2eac3e11bdf561ba7b41079747ba340dfed2e3e2",
      "parents": [
        "127fc63e8a15366b4395f1363e8e18eb058d1709"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Mon Jan 04 17:01:02 2016 -0800"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue Jan 05 15:03:04 2016 -0800"
      },
      "message": "libgui: Fix attaching buffers without allocation\n\nThis changes the way that BufferQueue selects slots in\nwaitForFreeSlotThenRelock. This method is called from both\ndequeueBuffer and attachBuffer, but those two methods actually have\ndifferent preferences:\n\ndequeueBuffer wants a slot with a buffer if possible (to avoid\nunnecessary allocations), but will settle for a slot without a buffer\nif no free buffers are available.\n\nattachBuffer wants a slot without a buffer if possible (to avoid\nclobbering an existing buffer), but will settle with clobbering a free\nbuffer if no empty slots are available.\n\nThese preferences are now respected, which has the side-effect of\nfixing a bug where it was not possible to attach a buffer if allocation\nis disabled (since the previous implementation assumed finding a slot\nwithout a buffer meant that the caller intended to allocate a buffer,\nwhich would accordingly be blocked since allocation is disabled).\n\nBug: 26387372\nChange-Id: Iefd550fd01925d8c51d6f062d5708d1f6d517edd\n"
    }
  ],
  "next": "127fc63e8a15366b4395f1363e8e18eb058d1709"
}
