)]}'
{
  "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": "34beb7a0ff0494b0c5ad81104171f8a49e599163",
      "tree": "033e25eb8ef1e0f0b06d7c20e094ecf7b4139ff5",
      "parents": [
        "0cab4a530234efe62ab279ced52744de8833a69a"
      ],
      "author": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Wed Mar 28 11:57:12 2018 -0700"
      },
      "committer": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Mon Apr 02 15:27:17 2018 -0700"
      },
      "message": "[SurfaceFlinger] Replace android_dataspace with Dataspace.\n\nThis patch replaces all android_dataspace in SurfaceFlinger with Dataspace\nV1.1. 3 commands in sequence are used to do the conversion:\n\nfind ./ -type f -exec sed -i -e \u0027s/android_dataspace_t/Dataspace/g\u0027 {} \\;\nfind ./ -type f -exec sed -i -e \u0027s/android_dataspace/Dataspace/g\u0027 {} \\;\nfind ./ -type f -exec sed -i -e \u0027s/HAL_DATASPACE_/Dataspace::/g\u0027 {} \\;\n\nWith some minor tweak because most of the APIs in frameworks/native are still\naccepting android_dataspace/android_dataspace_t.\n\nNext step is to convert the rest of android_dataspace usage to Dataspace in\nframeworks/native as well as frameworks/base.\n\nBUG: 77156734\nTest: Build and flash\nChange-Id: I2304c7014cb49a1c9f67c4563603fb55e8dbd679\n"
    },
    {
      "commit": "fd997e0969100418b4df8b8d97d21d497afa76c3",
      "tree": "02c194f3b987994405472e435f53ab6ae757c1bd",
      "parents": [
        "f228d58990fe4f2e66bf952b93dbebcf7db5ec3e"
      ],
      "author": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Wed Mar 28 15:29:00 2018 -0700"
      },
      "committer": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Thu Mar 29 15:28:14 2018 -0700"
      },
      "message": "Add proper namespace to GraphicTypes.\n\nRenamed GraphicsTypes.h to GraphicTypes.h and added proper namespace to avoid\nnaming conflict.\n\nBUG: 77156734\nTest: Build and flash\nChange-Id: Ibd9f454b5b72d5f8c6d94a3869a60a1bf821f106\nMerged-In: Ibd9f454b5b72d5f8c6d94a3869a60a1bf821f106\n"
    },
    {
      "commit": "a52f0295622a42849f5ef81c44589b816b2ccacb",
      "tree": "fa5b66c2866be26e85f8bbcda940662d55212089",
      "parents": [
        "17511b0527cad3a68015c4fef2e0ab451ba2de6f"
      ],
      "author": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Wed Mar 14 17:26:31 2018 -0700"
      },
      "committer": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Thu Mar 15 21:14:01 2018 +0000"
      },
      "message": "[Native] Replace android_color_mode usage with ColorMode.\n\nTo ease the pain when we add color mode v1.1, we replace all current\nandroid_color_mode usage in framework native with ColorMode directly from HAL.\n\nBUG: 73824924\nTest: Build \u0026 flash\nChange-Id: I4436fc225c7807506825c7148bc794cb99f278dc\n"
    },
    {
      "commit": "654f87b3c2b6777ecf53587dba10ecaaacbe3f4e",
      "tree": "fa0ebc35ff64e5edcc2581a03e6a4e3cba040547",
      "parents": [
        "eb7bdbcb5d15b19a38dc726968f4e4b59b8080e1"
      ],
      "author": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Tue Jan 30 14:21:33 2018 -0800"
      },
      "committer": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Wed Feb 07 17:13:00 2018 -0800"
      },
      "message": "[NDK] Expose NDK API to set buffers data space for P.\n\nPreviously, ANativeWindow_setBuffersDataSpace is only available in VNDK. This\npatch exposes it in NDK so that display mode for NativeWindow buffer can be set\nthrough NDK. The API will remain available in VNDK of NativeWindow since VNDK\nis the super set of NDK.\n\nBUG: 62482961\nTest: bit CtsGraphicsTestCases:.ANativeWindowTest\nChange-Id: I576c4b87296e168d4b7360c437a32bbbbff690a5\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": "40482ff650751819d4104c10a30974838168438c",
      "tree": "fdd8c0edc62057626612151709d3deb6c11faafd",
      "parents": [
        "707b8f3507fa4a3915844c7a4730e67f94eee2f7"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Thu Nov 30 01:51:40 2017 +0000"
      },
      "committer": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Thu Nov 30 01:51:40 2017 +0000"
      },
      "message": "Revert \"Revert \"Use GraphicBuffer instead of GBP for screenshots.\"\"\n\nThis reverts commit 707b8f3507fa4a3915844c7a4730e67f94eee2f7.\n\nReason for revert: Ready to test out changes with SystemUI update\n\nChange-Id: I9fd0cb7ad9cc68d2366fc5ec4ab087fbe4c21f3b\n"
    },
    {
      "commit": "707b8f3507fa4a3915844c7a4730e67f94eee2f7",
      "tree": "26e0a903d2a3c539cf18c4a3e801fa4bd3bbad62",
      "parents": [
        "a252d895816b3aa6c3bc2b2083113694ead6963d"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Wed Nov 29 21:25:51 2017 +0000"
      },
      "committer": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Wed Nov 29 21:38:36 2017 +0000"
      },
      "message": "Revert \"Use GraphicBuffer instead of GBP for screenshots.\"\n\nThis reverts commit a252d895816b3aa6c3bc2b2083113694ead6963d.\n\nReason for revert: SystemUI and some other places need to be updated as well. Will resubmit with the other necessary changes\n\nChange-Id: I2dfb7b439c866f31ffa584e450d3208c75afecaa\nBug: 69898957\n"
    },
    {
      "commit": "a252d895816b3aa6c3bc2b2083113694ead6963d",
      "tree": "fdd8c0edc62057626612151709d3deb6c11faafd",
      "parents": [
        "503b79e3db0d6dce40ea0a8e17bbffd6f6176123"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Nov 20 17:54:25 2017 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Tue Nov 28 15:22:00 2017 -0800"
      },
      "message": "Use GraphicBuffer instead of GBP for screenshots.\n\nMigrate screenshot code to render the layers into a\nGraphicBuffer instead of creating a GraphicBufferProducer. This cleans\nup the code and makes rendering a screen capture simpler and clearer.\n\nTest: Screencaptures for Recents, manual screenshots, and \"adb shell\nscreencap\"\nTest: Transaction_test\n\nChange-Id: Ifb463c0e98cfaa3f96ad27837b1a2e2921e253d1\n"
    },
    {
      "commit": "a039340cacb0621c9bae44d5efd52aa50e71becc",
      "tree": "befb75711996d0f72845f2b85c2ce3b68b7991c6",
      "parents": [
        "ab5e67a5528555da0f9c3bde8b8bbd2bc38838d2",
        "6d560a52fceb9a8efc20f9a8b80e72558a1b2d3f"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Sun Oct 15 06:16:22 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sun Oct 15 06:16:22 2017 +0000"
      },
      "message": "Merge \"Use -Werror in frameworks/native/libs/gui and ui\" am: c4ebf5bbab am: 3a566dd1e1 am: 14ac77cd1e\nam: 6d560a52fc\n\nChange-Id: I6b612a1fff0da31b16c1121d0f3d08abf407336c\n"
    },
    {
      "commit": "6d560a52fceb9a8efc20f9a8b80e72558a1b2d3f",
      "tree": "09ac92840202aad6f879b3031803d6df53a439be",
      "parents": [
        "3db6b7db327cb84035de136559ecf6b299723b94",
        "14ac77cd1e6b002db0f3873959004bdc6cdb3deb"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Sun Oct 15 04:23:05 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sun Oct 15 04:23:05 2017 +0000"
      },
      "message": "Merge \"Use -Werror in frameworks/native/libs/gui and ui\" am: c4ebf5bbab am: 3a566dd1e1\nam: 14ac77cd1e\n\nChange-Id: I529db9786afca459da51ec886f7e672743038bb9\n"
    },
    {
      "commit": "3a566dd1e145353e6acc639f5862e098762bee0c",
      "tree": "02bdb38fbced6eb6d691f09cf39d93e905efa884",
      "parents": [
        "b002413fafbe9b3f7bf63ffa15f0d0d10256210b",
        "c4ebf5bbab849840aae999044d0732ccdab98575"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Sun Oct 15 03:43:56 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sun Oct 15 03:43:56 2017 +0000"
      },
      "message": "Merge \"Use -Werror in frameworks/native/libs/gui and ui\"\nam: c4ebf5bbab\n\nChange-Id: Ia99830d3c2ffe68a05db21c56364f3fcd1965ac1\n"
    },
    {
      "commit": "d66be0ae6929fee064a229d6c6bac3a871aba137",
      "tree": "edf6df30381838963d504cc4e0e68a7ec8f515b9",
      "parents": [
        "afee092bee459332c8d577163794581c3128df4f"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Oct 05 13:51:32 2017 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri Oct 13 16:12:08 2017 -0700"
      },
      "message": "Use -Werror in frameworks/native/libs/gui and ui\n\n* Remove unused variable and function.\n* Suppress warning of unused return results.\n\nBug: 66996870\nTest: build with WITH_TIDY\u003d1\nChange-Id: If6f445be1e7677a37bf780844a79b84d6d7e1c1e\n"
    },
    {
      "commit": "152279d2725cd59369bcdf70f9622b011cae5a14",
      "tree": "0e24ace5b3de01e08f0e2c0b71443f949c538ea4",
      "parents": [
        "6b3e769b59b817a7186af3ea7f3920c89e5eca95"
      ],
      "author": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Mon Aug 14 18:18:30 2017 -0600"
      },
      "committer": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Tue Aug 15 13:58:11 2017 -0600"
      },
      "message": "Add method to get surface dataspace\n\nAdd ability to query the dataspace of a FramebufferSurface so that\nwe can include that in the DisplayDevice dumpsys data.\nTest: adb shell dumpsys SurfaceFlinger\nLook for DisplayDevice section for dataspace.\nBug: 63146977\n\nChange-Id: I1d30bd48782485a422db7a0a0af1e585bbffd508\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": "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": "8c9cc460d7694a8d03fe97eee45c0ed28beaa9d5",
      "tree": "a65d1b097e66284bbe7cc8487d7d3a12c804900f",
      "parents": [
        "e2cc7337ccd1afb2fbfc401918648d557be0da3a",
        "46b9841653f180f8aa73a3190b4fb5eb5ffb6872"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Thu Jun 01 06:23:36 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jun 01 06:23:36 2017 +0000"
      },
      "message": "libgui: Add Surface::getLastDequeueStartTime am: 932f008485\nam: 46b9841653\n\nChange-Id: Id3dd6920b3341c5675b5308a9c80e276a5b03ce2\n"
    },
    {
      "commit": "932f008485dbb6fb452c8616abd7586f914f72ce",
      "tree": "80e34a4090291d4ddbd9e9b3411f29e5b498e1d2",
      "parents": [
        "1e4088fc68d88726bac0349b674ea557a63e0f27"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Wed May 31 13:50:16 2017 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Wed May 31 14:07:50 2017 -0700"
      },
      "message": "libgui: Add Surface::getLastDequeueStartTime\n\nAdds the getLastDequeueStartTime method, which allows the caller to\ndetermine whether the last dequeueBuffer call fell into a given time\nwindow.\n\nBug: 62213889\nTest: SurfaceTest.TestGetLastDequeueStartTime in libgui_test\nChange-Id: I1684deb09273745a3adc751554624d2257fa890e\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": "5a8cb035ae02eff00d73ecdcc65b4952a26b9124",
      "tree": "a636eb07653361a2bfb6fceb81662b8091547984",
      "parents": [
        "bce1deadafc06d5a7d5fa78ee26602f565260028",
        "fe614d7b37f5e1529de5437c45aead65150737fe"
      ],
      "author": {
        "name": "Shuzhen Wang",
        "email": "shuzhenwang@google.com",
        "time": "Tue May 23 20:08:07 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 23 20:08:07 2017 +0000"
      },
      "message": "Merge \"Surface: Use buffer id to synchronize slots\" into oc-dev am: adf0ad2090\nam: fe614d7b37\n\nChange-Id: I24d58521c267ecf576160ac037d433c595c78960\n"
    },
    {
      "commit": "55be505a75a379b10a945b3de81fbebe2b85a344",
      "tree": "2ce953854a3fec7256c66d285cd8cc2f1dccb4f8",
      "parents": [
        "b667c05f03f9dbd66b75aa39f4e60d2690d828eb"
      ],
      "author": {
        "name": "Shuzhen Wang",
        "email": "shuzhenwang@google.com",
        "time": "Tue May 23 09:41:54 2017 -0700"
      },
      "committer": {
        "name": "Shuzhen Wang",
        "email": "shuzhenwang@google.com",
        "time": "Tue May 23 09:46:24 2017 -0700"
      },
      "message": "Surface: Use buffer id to synchronize slots\n\nFor the same buffer, GraphicBuffer\u0027s buffer_handle_t* may change when\ndoing attach/detach. Use Id instead.\n\nTest: Call attach/detach, and observe mRemovedBuffers is updated\nBug: 38238747\nChange-Id: I6ab1ae5340565f98cb981b7e38c31a4f85190e56\n"
    },
    {
      "commit": "add458feee2faa82ddd3e6450fbb4df70ddeea0d",
      "tree": "9ac1ad4873135c00cddb91d7f7672d8ebb4eda08",
      "parents": [
        "74cb3b6d6b6077fc0280d1700d9fe54d59b32783"
      ],
      "author": {
        "name": "Dennis Kempin",
        "email": "denniskempin@google.com",
        "time": "Wed May 17 19:16:31 2017 -0700"
      },
      "committer": {
        "name": "Dennis Kempin",
        "email": "denniskempin@google.com",
        "time": "Thu May 18 17:37:40 2017 -0700"
      },
      "message": "Surface: Do not copy back if front and back buffer are identical\n\nIt is unnecessary to copy from and to the same surface. Skipping\nthe copy back is a huge performance improvement when using shared\nbuffer mode and locking a rectangle of the surface.\n\nBug: 38398135\nTest: Use stylus demo and remove full-surface locking hack.\nChange-Id: Ie8d03468507489247ba4a4be5f0cde5960e69c16\n"
    },
    {
      "commit": "52402901b33d843e8b0731db92049461884bebfd",
      "tree": "60138cf9b866181af3196b393e252d11277516c3",
      "parents": [
        "4820c841973f18ef81f3c0b8e186e8220dc80ed6",
        "1f2af5cf894222c82f6ea7bb5fa1e442d2b2674d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 17 21:32:27 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 17 21:32:27 2017 +0000"
      },
      "message": "Merge \"Surface: add unit test for GetAndFlushRemovedBuffers\" into oc-dev"
    },
    {
      "commit": "0c7f6e142d9a549b5e79da32f27783e12c995ce9",
      "tree": "874adf8a712271b0f1104bef7b634caefe64ee9a",
      "parents": [
        "cbcefae07ad1c13f771054dcd769e923ee88a88f",
        "a1b1e635ccef0536a173c1baa76ab88b2a4d9082"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue May 16 21:18:21 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 16 21:18:21 2017 +0000"
      },
      "message": "Merge \"libgui: Check slot received from IGBP in Surface\" into lmp-dev am: 98e3c06010 am: 970bb51580 am: 78976cea8f am: 2fe15aa6f0 am: cce83f15e5 am: 9a44ee0742 am: 787aa48f41 am: f69675e5c2 am: d65a388e1b am: b829d2abe9 am: 79a34dd24b\nam: a1b1e635cc\n\nChange-Id: I574d7193656580b26b2a2923673f39541f010878\n"
    },
    {
      "commit": "b829d2abe93377eec1647e2c078b6f5285231ce9",
      "tree": "61e1a063d9a53991387063b72c6640c1ad88f352",
      "parents": [
        "1ceadac71b38debd2f69ab75bda01e8e0febd8bc",
        "d65a388e1b426afb1a4e4c5dd9b47c605ed26b96"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue May 16 21:08:18 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 16 21:08:18 2017 +0000"
      },
      "message": "Merge \"libgui: Check slot received from IGBP in Surface\" into lmp-dev am: 98e3c06010 am: 970bb51580 am: 78976cea8f am: 2fe15aa6f0 am: cce83f15e5 am: 9a44ee0742 am: 787aa48f41 am: f69675e5c2\nam: d65a388e1b\n\nChange-Id: I73489256702d123302a204c2720f9752515020ba\n"
    },
    {
      "commit": "d65a388e1b426afb1a4e4c5dd9b47c605ed26b96",
      "tree": "78a69fe3df7a158c386b7d7f9435ec44a39f8cd2",
      "parents": [
        "a078c0780c256e60bb31258c156ef2c507fb2da7",
        "f69675e5c26217602fc794e46e8e0c7b8af15eea"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue May 16 21:05:24 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 16 21:05:24 2017 +0000"
      },
      "message": "Merge \"libgui: Check slot received from IGBP in Surface\" into lmp-dev am: 98e3c06010 am: 970bb51580 am: 78976cea8f am: 2fe15aa6f0 am: cce83f15e5 am: 9a44ee0742 am: 787aa48f41\nam: f69675e5c2\n\nChange-Id: Icb1a0aae634951cd903fb2deef632005e01d4d7f\n"
    },
    {
      "commit": "f69675e5c26217602fc794e46e8e0c7b8af15eea",
      "tree": "2fc44a39ceb96ae18ef8399a45a29a8722edeb33",
      "parents": [
        "ce069c5a07c7f370b715b94af64a2a3c6c1f4e6f",
        "787aa48f415cd5b856bd60ce8fa005f1928e6ac6"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue May 16 21:02:17 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 16 21:02:17 2017 +0000"
      },
      "message": "Merge \"libgui: Check slot received from IGBP in Surface\" into lmp-dev am: 98e3c06010 am: 970bb51580 am: 78976cea8f am: 2fe15aa6f0 am: cce83f15e5 am: 9a44ee0742\nam: 787aa48f41\n\nChange-Id: I96e45ad313a7ea1233972ac80a1c8c85f6e64618\n"
    },
    {
      "commit": "2fe15aa6f00b3c58e4dda26d2c117e422056ffa1",
      "tree": "0a83bed0b1a113a12b7e04dfdd2d4ea209b039f0",
      "parents": [
        "d4cbd296d66d788fd1867d21cae3b4df37fe93b9",
        "78976cea8fd8bbd63630ce550e29cf0eb8691b98"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue May 16 20:49:46 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue May 16 20:49:46 2017 +0000"
      },
      "message": "Merge \"libgui: Check slot received from IGBP in Surface\" into lmp-dev am: 98e3c06010 am: 970bb51580\nam: 78976cea8f\n\nChange-Id: I30e6a29474b6cf86f97961f527301837b35c8a36\n"
    },
    {
      "commit": "1f2af5cf894222c82f6ea7bb5fa1e442d2b2674d",
      "tree": "dc7e9fac632d07a4d279fb850ab31cd8f3de50ac",
      "parents": [
        "2a6ad8ce6362e10fce9fc716f5ccb933b1a1df05"
      ],
      "author": {
        "name": "Yin-Chia Yeh",
        "email": "yinchiayeh@google.com",
        "time": "Thu May 11 16:54:04 2017 -0700"
      },
      "committer": {
        "name": "Yin-Chia Yeh",
        "email": "yinchiayeh@google.com",
        "time": "Mon May 15 18:21:13 2017 -0700"
      },
      "message": "Surface: add unit test for GetAndFlushRemovedBuffers\n\nAlso fix the removed list flush behavior to match spec.\n\nTest: the new test pass, smoke test GCA\nBug: 36869090\nChange-Id: I8f7bdd8b168424f4e79980d21a7388aa9e35597e\n"
    },
    {
      "commit": "90ce2a9c1d3af422c66b4061805831cb208263d8",
      "tree": "0c2cfc11bad7bdc0d0d8fa0cb4aad022f50937c5",
      "parents": [
        "bec844f6d4661325b3f925073876b381882d3e73"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Mon May 01 16:31:53 2017 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Mon May 15 12:20:19 2017 -0700"
      },
      "message": "libgui: Check slot received from IGBP in Surface\n\nChecks that the slot number received from mGraphicBufferProducer in\nSurface::dequeueBuffer is on the interval [0, NUM_BUFFER_SLOTS) to\nprotect against a malicious BnGraphicBufferProducer.\n\nBug: 36991414\nChange-Id: I1a76fd1bcce1c558f1c0c30f03638278288ed4fa\n"
    },
    {
      "commit": "dc96fdfa58260867c993fff78611220874753201",
      "tree": "debb2fb42d1c93fb6f86d6441023a7148715dcea",
      "parents": [
        "6b376713907086c9642e7b7e66e51ddfa531b003"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Mon Mar 20 16:54:25 2017 -0700"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Tue Apr 11 16:57:11 2017 -0700"
      },
      "message": "egl: Differentiate pending vs invalid timestamps.\n\nTest: adb shell /data/nativetest/libgui_test/libgui_test\n    --gtest_filter\u003d*GetFrameTimestamps*\n\nChange-Id: Iaa418ff1753a4339bfefaa68a6b03e8c96366a87\n"
    },
    {
      "commit": "6b376713907086c9642e7b7e66e51ddfa531b003",
      "tree": "85a14f06713e9d2fb5f977737136e0242f778cfa",
      "parents": [
        "99dfb8a6466b653afc63ed91f07f59daa3c66385"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Tue Apr 04 10:51:39 2017 -0700"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Tue Apr 11 14:51:42 2017 -0700"
      },
      "message": "egl: Avoid use of retire as present\n\nRetire fences from HWC1 are implemented inconsitently,\nso present emulation doesn\u0027t always work well.\n\nThis patch disables present for all HWC1 based devices.\n\nTest: adb shell /data/nativetest/libgui_test/libgui_test\n  --gtest_filter\u003d*GetFrameTimestamps*\nBug: 36730849, 36887025\n\nChange-Id: I1eba2f8490c2f6feced2a36d1efc4cd66be7da40\n"
    },
    {
      "commit": "e572fd7b6262389e89cc23d9eb25129394698eb8",
      "tree": "f4477d0f5de3ef80b5c5a6889c9b5bba342775e3",
      "parents": [
        "f2e5430b95b9545e5a355607ba8e7d693b7a7d18"
      ],
      "author": {
        "name": "Yin-Chia Yeh",
        "email": "yinchiayeh@google.com",
        "time": "Tue Mar 28 19:07:39 2017 -0700"
      },
      "committer": {
        "name": "Yin-Chia Yeh",
        "email": "yinchiayeh@google.com",
        "time": "Mon Apr 03 15:30:19 2017 -0700"
      },
      "message": "Surface: add getRemovedBuffer API\n\nThis allows clients to optionally sign up to track\nbuffers going out of Surface.\n\nTest: compile\nBug: 34461678\nChange-Id: I8696b304c169099c872bd9ba783015c0f0dad73a\n"
    },
    {
      "commit": "a0c93e1082b8dc96ede753ad200912c7a750891e",
      "tree": "0d9a15a3b0a866e39d5fb4e9c7f61895e2a043ff",
      "parents": [
        "79dd190c159657bff83fb5538235ef2ecc5997da"
      ],
      "author": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Fri Mar 17 16:16:48 2017 -0600"
      },
      "committer": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Thu Mar 23 10:03:17 2017 -0600"
      },
      "message": "Check board config for wide-color color spaces\n\nCheck that board config allows wide-color color\nspaces.\nTest: make tests in libs/gui/tests/\nTest: adb sync\nTest: adb shell /data/nativetest/libgui_test/libgui_test --gtest_filter\u003d\"SurfaceTest.GetWideColorSupport\"\n\nbug #35996305\n\nChange-Id: Ia5b8116bc25befb6491e72e67cd8ed3c90ca5698\n"
    },
    {
      "commit": "4e606e3901b500bdd0f3ea21b8cb63734087bf0a",
      "tree": "b07658ef8b8ce4acc6b16bae618fbc971586abe9",
      "parents": [
        "d001058145c2186f454a3fb043388d6d9b84c9d8"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Thu Mar 16 15:34:57 2017 -0700"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Fri Mar 17 13:05:20 2017 -0700"
      },
      "message": "egl: Remove retire event.\n\nTest: adb shell /data/nativetest/libgui_test/libgui_test\n  --gtest_filter\u003d*GetFrameTimestamps*\n\nChange-Id: Ibf63d22e42ae52307662107eec50f80de0e703f5\n"
    },
    {
      "commit": "10e9ab50517330d1972234b4c167d5467d01abbf",
      "tree": "54d3f8bd51f1d792a3a1b00afad7649911adae9d",
      "parents": [
        "56a8f942731ad34a8e85a9a0fb84f1be2ead5541"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 08 15:02:55 2017 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 08 15:02:55 2017 -0800"
      },
      "message": "check that the NativeWindowType is valid in eglCreateWindowSurface\n\nThis will avoid certain crash (null dereference),\nand return an error instead. This is useful for\napp developers as java language apps are not\nexpected to crash when passed bad arguments\n\nThis doesn’t fix bug 36065206, but was prompted\nby it.\n\nTest: compile / run\nBug: 36065206\nChange-Id: I90d25730b3dd292d756b4c38b51320a466fa6d48\n"
    },
    {
      "commit": "c5b97c5b5610b2fe6186f599798c97250bb01b95",
      "tree": "cf67189e2b1d11d3700e5cc356e58ea6c5c982d7",
      "parents": [
        "1eb1b2703754beda3c20bedfca2b4fae885b7164"
      ],
      "author": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Sun Feb 26 14:47:13 2017 -0700"
      },
      "committer": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Fri Mar 03 10:22:44 2017 -0700"
      },
      "message": "Add plumbing for Surface::getHdrSupport\n\nAdd plumbing for future Vulkan and EGL extensions\nVK_EXT_swapchain_colorspace\nEGL_EXT_colorspace_scrgb_linear\nEGL_KHR_gl_colorspace\n\nTest: TBD\nChange-Id: Id1f28cfb36828adbdc6dd3694b5943eca038c356\n"
    },
    {
      "commit": "1eb1b2703754beda3c20bedfca2b4fae885b7164",
      "tree": "7cbe1745792451d2972deb61b2caad6d6085c798",
      "parents": [
        "297b306128550b037d6907a84db49cbb9d8e8b12"
      ],
      "author": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Thu Feb 02 16:51:06 2017 -0700"
      },
      "committer": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Fri Mar 03 08:05:01 2017 -0700"
      },
      "message": "Add plumbing for Surface::getWideColorSupport\n\nAdd plumbing for future Vulkan and EGL extensions\nVK_EXT_swapchain_colorspace\nEGL_EXT_colorspace_scrgb_linear\nEGL_KHR_gl_colorspace\n\nTest: make tests in libs/gui/tests/\nTest: adb sync\nTest: adb shell /data/nativetest/libgui_test/libgui_test --gtest_filter\u003d\"SurfaceTest.GetWideColorSupport\"\nChange-Id: Ibb182d02c468d8f24130545187096d1abe5fc30e\n(cherry picked from commit d634f970fabe965a421f50011bb1167d6b7cac86)\n"
    },
    {
      "commit": "ed816e6cb4ca15181bf6120890c85290b5f7c02b",
      "tree": "ed78878929e22d0865572518408be2867a93460c",
      "parents": [
        "b04c6f03a2334b03ae0105ec005aeecfa61f4a90"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Wed Oct 26 16:12:21 2016 -0700"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Wed Feb 15 16:41:26 2017 -0800"
      },
      "message": "Add FrameEvents::isValidTimestamp\n\nRefactor only.\n\nTest: adb shell /data/nativetest/libgui_test/libgui_test\n--gtest_filter\u003d*GetFrameTimestamps*\n\nChange-Id: I86653ac14186ca509f58a94047f25a7b74231b30\n"
    },
    {
      "commit": "b04c6f03a2334b03ae0105ec005aeecfa61f4a90",
      "tree": "30c1e802ba417d645d00b81a54000339a3bfc6aa",
      "parents": [
        "8cc8b10e27d515a6962ae6c66a62387ced45f5fe"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Fri Oct 21 12:57:46 2016 -0700"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Wed Feb 15 16:41:26 2017 -0800"
      },
      "message": "Change GL references to GPU for getFrameTimestamps.\n\nTest: Rename only.\n\nChange-Id: Idaf7ab38f78f58aa8387823f47dac084e21eb1f0\n"
    },
    {
      "commit": "9f02435fd44c0651c85e9bd4dc7307bc6b1a85fa",
      "tree": "df8b2a5d6e3c2eae0599c9cb0e0456dbf3ede60e",
      "parents": [
        "0f10dd60609fd490a6ed5651e5e3cc7bb8981eb6",
        "0a61b0c813f5991bf462e36a2314dda062727a10"
      ],
      "author": {
        "name": "Brian C. Anderson",
        "email": "brianderson@google.com",
        "time": "Wed Feb 15 22:32:45 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 15 22:32:47 2017 +0000"
      },
      "message": "Merge \"EGL: Add eglGetCompositorTimingANDROID.\""
    },
    {
      "commit": "832b6b94684cbd8bf0fcf00bd431ee5e8de03ba7",
      "tree": "f5bd79a7ef8e4d1cd49e66523cf9e1ee562a755f",
      "parents": [
        "4b62d90346b53bf9d2eee038799ec75300283ba6",
        "1049d1d0b21ee318e309f9a90098c092cb879c41"
      ],
      "author": {
        "name": "Brian C. Anderson",
        "email": "brianderson@google.com",
        "time": "Tue Feb 14 19:26:21 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 14 19:26:22 2017 +0000"
      },
      "message": "Merge \"EGL: Use frameId instead of framesAgo for frame events.\""
    },
    {
      "commit": "0a61b0c813f5991bf462e36a2314dda062727a10",
      "tree": "4987f8f0e07bcda8e1dda882ebb6f4d6151c6107",
      "parents": [
        "1049d1d0b21ee318e309f9a90098c092cb879c41"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Wed Dec 07 14:55:56 2016 -0800"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Mon Feb 13 16:01:47 2017 -0800"
      },
      "message": "EGL: Add eglGetCompositorTimingANDROID.\n\nExposes the composite deadline, composite interval, and\nthe composite to present latency.\n\nA history of composite and present fences are stored.\nWhen the present fence\u0027s timestamp becomes known,\nthe composite to present latency is updated with\nsampling jitter removed.\n\nThe values are updated in the producer when timestamps\nare enabled and on queue and dequeue.\n\nThe deadline is snapped to the next expected deadline\nbased on the current systemTime().\n\nTest: adb shell /data/nativetest/libgui_test/libgui_test\n    --gtest_filter\u003d*GetFrameTimestamps*\n\nChange-Id: I406814258613b984b56488236632494f2f61ff2e\n"
    },
    {
      "commit": "05debe1d787b7471c2bc9c8f7569a338ca5c7ad4",
      "tree": "3c36416857b2879af76b13879ffd3073d21cee42",
      "parents": [
        "5c0a87e5a2cba5c1b199e77f3a42e931e706569b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 08 17:04:18 2017 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 09 23:07:31 2017 +0000"
      },
      "message": "Split view::Surface out of Surface.cpp\n\nit’s moved into a new view/Surface.cpp, header in\ngui/view/Surface.h\n\ntheir entanglement also meant that code that needs\nonly view::Surface ended up with all of Surface\ndependencies.\n\nTest: built and booted device\nBug: treble\nChange-Id: I1a350d258f124fbe0a7bc5a2ca165311dcb0d8e3"
    },
    {
      "commit": "2b5dd4062dd951b2cafc4b80bd3a1813b013d71a",
      "tree": "04c3a4ee5e9ad39515689d0dadbed2370b7c6720",
      "parents": [
        "39fe1d879cc2e55d4d3c3f7445977c674b97c472"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 07 17:36:19 2017 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 07 17:36:19 2017 -0800"
      },
      "message": "Fix include dependencies\n\nSome headers included other headers they didn’t\nneed. This is trying to reduce the dependencies\nof Surface.h / Surface.cpp on the rest of the\nworld.\n\nTest: compiled\nBug: not applicable\nChange-Id: Ibb5de1308a387394a1367638c3b7f26b5549ce6a\n"
    },
    {
      "commit": "1049d1d0b21ee318e309f9a90098c092cb879c41",
      "tree": "4a5c3e701c5785ec3a7ad47191f53f5728ed8d76",
      "parents": [
        "50e6754563d089678f6baa443760b202d527880f"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Fri Dec 16 17:25:57 2016 -0800"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Fri Feb 03 15:01:41 2017 -0800"
      },
      "message": "EGL: Use frameId instead of framesAgo for frame events.\n\nUsing a frameId allows an app to poll for timestamps\nfrom a thread other than the swapping thread.\n\nTest: adb shell /data/nativetest/libgui_test/libgui_test\n    --gtest_filter\u003d*GetFrameTimestamps*\n\nChange-Id: I3faac0513929837982a2e63f7e0d3d529bd28f10\n"
    },
    {
      "commit": "be833a27b36149e48f2e1b8bbb2f70dd63428419",
      "tree": "b97ee4b7abf3951a277d27494d2b7a7e9a164aa4",
      "parents": [
        "2a03c32a4e9089e941335cb496a21509ab5ba5ec"
      ],
      "author": {
        "name": "Ian Elliott",
        "email": "ianelliott@google.com",
        "time": "Wed Jan 25 13:09:20 2017 -0700"
      },
      "committer": {
        "name": "Ian Elliott",
        "email": "ianelliott@google.com",
        "time": "Wed Jan 25 14:37:50 2017 -0700"
      },
      "message": "Vulkan: only report refreshDuration, not {min|max}RefreshDuration\n\nTest: Manually tested with a modified cube demo, that reports the refresh\nduration returned from this extension.\n\nAs part of discussions within Khronos, it was decided that\nVK_GOOGLE_display_timing should only report one refresh duration for a display,\nand assume that it\u0027s refresh rate is fixed (which is the case for our current\ndevices).\n\nChange-Id: I772348281c18a36b02dcfe0519d1943e25a41f7c\n"
    },
    {
      "commit": "62c48c931f88ec44c41621afe988c34cab1fb41d",
      "tree": "dcd223b86d986045f3b3d1c2d2769b7b29572aaa",
      "parents": [
        "146abf38c2442b77dc78a0565ad010376c9d1b69"
      ],
      "author": {
        "name": "Ian Elliott",
        "email": "ianelliott@google.com",
        "time": "Fri Jan 20 13:13:20 2017 -0700"
      },
      "committer": {
        "name": "Ian Elliott",
        "email": "ianelliott@google.com",
        "time": "Tue Jan 24 08:30:37 2017 -0700"
      },
      "message": "Plumb refresh cycle duration up to VK_GOOGLE_display_timing.\n\nTest: Manually tested with a modified cube demo, that reports the refresh\nduration returned from this extension.\n\nChange-Id: Ib9499429119e910585a4ee9341c3a2d86a3bdae0\n"
    },
    {
      "commit": "f7fd56a649f07133ad78d31eb5d3ae7a4e95d522",
      "tree": "2aef1caeecc1bf24f48ca91bdf3156fcf263603c",
      "parents": [
        "f6386862dffb0fb9cb39343d959104a32e5e95b7"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Fri Sep 02 10:10:04 2016 -0700"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Thu Jan 12 10:40:55 2017 -0800"
      },
      "message": "EGL: Expose latch, last composite, and dequeue ready.\n\nAlso fix discontinuous reserved token values.\n\nTest: adb shell /data/nativetest/libgui_test/libgui_test\n--gtest_filter\u003d*GetFrameTimestamps*\n\nChange-Id: I9d513b8784a7205dfe534c1c74b56c18cd49e74a\n"
    },
    {
      "commit": "3da8d2748580b2575e368e203ce2c7f8d34dea05",
      "tree": "4d5076f45374599ae346f0cb17da6197624776ae",
      "parents": [
        "50143b3780ad2aaa544c8d2d47619214b79c3c56"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Thu Jul 28 16:20:47 2016 -0700"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Thu Jan 12 10:40:55 2017 -0800"
      },
      "message": "Surface unit tests for getFrameTimestamps.\n\nVerifies the following:\n\n1) The timestamps and fences aren\u0027t transferred if the\n   feature isn\u0027t explicitly enabled.\n2) Attempts to get the timestamps will fail if not enabled.\n3) Timestamps are transferred if enabled.\n4) The support for Present/Retire timestamps are properly\n   queried from the ISurfaceComposer.\n5) Timestamps correspond to the correct frame.\n6) The consumer doesn\u0027t send the acquire fence back to the\n   producer and a sync call isn\u0027t made to try and get it\n   from the producer.\n7) A sync call isn\u0027t made when no timestamps are requested.\n8) If the consumer sent the producer fences, the consumer\n   can get the timestamps without a sync call.\n9) If there was no GL composite performed, a sync call\n   isn\u0027t made to get a non-existant fence/time.\n10) When asking for the retire or release time of the most\n   recent frame, a sync call isn\u0027t made.\n11) Requests for unsupported timestamps return an error and\n   do not result in a sync call.\n\nTest: Test: adb shell /data/nativetest/libgui_test/libgui_test\n--gtest_filter\u003d*GetFrameTimestamps*\n\nChange-Id: I6f728af0d4a0f431c9e47131da64584a589559e7\n"
    },
    {
      "commit": "50143b3780ad2aaa544c8d2d47619214b79c3c56",
      "tree": "a12029b8f201a15bbc82f76b3a6f8802d8ee703e",
      "parents": [
        "ba4d92cc90b5d2a902e898211f04311a0ae2493b"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Fri Sep 30 14:01:24 2016 -0700"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Thu Jan 12 10:40:55 2017 -0800"
      },
      "message": "Avoid sync calls for unsupported/non-existant times\n\n* Make sure not to do sync calls for present or retire\n  if they aren\u0027t supported.\n\n* Don\u0027t do sync calls for retire or release if they\n  can not possibly exist.\n\nTest: adb shell /data/nativetest/libgui_test/libgui_test\n--gtest_filter\u003d*GetFrameTimestamps*\n\nChange-Id: I580409f01cbf07e9a6e00fbb05d914654f12a4a2\n"
    },
    {
      "commit": "5f541b9631ef51272658874fc06789972183c1da",
      "tree": "1e1368832114cf1ca0381972081a78457560c2d6",
      "parents": [
        "c6de129dca780f3de6d435db753b61cfe1022dcd",
        "0bd15c1613fc194f1ca1b7de189f6fc5e36352d7"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Mon Jan 09 05:29:35 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jan 09 05:29:35 2017 +0000"
      },
      "message": "Merge \"Surface: Use async lock/unlock in copyBlt\" am: b73de86f13 am: e29dda829d am: 55f599a079\nam: 0bd15c1613\n\nChange-Id: Ib1d9c139c68cfdc7b3854b94b825db5d980bc1ef\n"
    },
    {
      "commit": "7b09e799f325d62dde2cce0f8615e0ebe318c096",
      "tree": "d661a52b1e7cd62f691f9ae451851d221f7272b5",
      "parents": [
        "b7ee96a6660cc8a0478a54ddb5e9c19e7e714a7a"
      ],
      "author": {
        "name": "Francis Hart",
        "email": "fhart@nvidia.com",
        "time": "Fri Jan 09 11:10:54 2015 +0200"
      },
      "committer": {
        "name": "Francis Hart",
        "email": "fhart@nvidia.com",
        "time": "Thu Jan 05 11:34:57 2017 +0000"
      },
      "message": "Surface: Use async lock/unlock in copyBlt\n\nThe Surface::lock() function now uses the asynchronous versions of\ngralloc lock/unlock when copying the previously drawn content to the\nbackbuffer. This allows for optimisations in the gralloc module\nimplementation and so can improve performance and avoid CPU waits.\n\nChange-Id: I57193f327db2ff0422e1b58b3484f613201d994c\n"
    },
    {
      "commit": "2c3a873135d1ef4870706714b4fa3988c197cc5d",
      "tree": "b6978d4afb39aeb981e980b155b828ee071a9ca6",
      "parents": [
        "f4d230b1db1b4531c6892e9ce7732afc35c898fb",
        "3c3aba021430c6af7059fb15661abd05dcdf8040"
      ],
      "author": {
        "name": "Francis Hart",
        "email": "fhart@nvidia.com",
        "time": "Wed Jan 04 20:48:53 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Jan 04 20:48:53 2017 +0000"
      },
      "message": "Merge \"Surface: Ensure synchronisation of copyBlt\" am: 88f77814a1 am: 5a2dcde971 am: 11d80ae93e\nam: 3c3aba0214\n\nChange-Id: Id93abe6750314f6fcdc7cfa044ca2e38b294d0d5\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": "dc10f8464090ccdac5e7bb6839fd8c1bba87b022",
      "tree": "1430f499edcc5533c569b3ecec4465779c8c716e",
      "parents": [
        "77f764d66fdfb89e0e7dd07fca64ae78fd02aad5"
      ],
      "author": {
        "name": "Francis Hart",
        "email": "fhart@nvidia.com",
        "time": "Mon Dec 01 16:04:49 2014 +0200"
      },
      "committer": {
        "name": "Francis Hart",
        "email": "fhart@nvidia.com",
        "time": "Fri Dec 09 13:23:13 2016 +0200"
      },
      "message": "Surface: Ensure synchronisation of copyBlt\n\nThe Surface::lock() function has an optimisation for copying the\npreviously drawn contents from the frontbuffer to the (current)\nbackbuffer, so that the client does not have to redraw the whole surface\ncontents. This logic was not using the sync fence FD from\ndequeueBuffer() and so was not correctly synchronised with pending\noperations on the backbuffer.\n\nChange-Id: Ib44574d50f8bdb4a23078cd8da1c5c512c876320\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": "069b365163470d2736eb6f591c354d208b5da23b",
      "tree": "eff239d562326bda8c62e741e2eeaea3e8f2a1d5",
      "parents": [
        "baaad32cd582bcc09db89135715717234ea398ea"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Fri Jul 22 10:32:47 2016 -0700"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Tue Nov 15 12:59:26 2016 -0800"
      },
      "message": "Add displayPresentTime to getFrameTimestamps\n\nMakes HWC1 use displayRetireTime and HWC2 use\ndisplayPresentTime.\n\nProperly takes into account if HWC2On1Adapter is used.\n\nReturns whether present or retire is supported via\neglQueryTimestampSupportedANDROID, which uses a\ncached answer in Surface.\n\nSurface::getFrameTimestamps returns with an error\nif the caller requests an unsupported timestamp.\n\nTest: adb shell /data/nativetest/libgui_test/libgui_test\n--gtest_filter\u003d*GetFrameTimestamps*\n\nChange-Id: Ib91c2d05d7fb5cbf307e2dec1e20e79bcc19d90b\n"
    },
    {
      "commit": "dbd0ea80021cbc61c578385f534f41a33338085b",
      "tree": "ccf44116b29a4a2eb3b289bd7463715ae12decb1",
      "parents": [
        "e52d9e2acec131484588a2eb184d1d4b34eebeb3"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Fri Jul 22 09:38:59 2016 -0700"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Tue Nov 15 12:59:26 2016 -0800"
      },
      "message": "Rename posted to requestedPresent for getFrameTimestamps\n\nTest: Just a rename.\n\nChange-Id: I63aa5b1b84715de2bebffb25f92bd826323a9acb\n"
    },
    {
      "commit": "6247ea9e71babcb2544331d8d8179d11af5a802e",
      "tree": "fd71c734b49e156f014f6c4ad7bf06a00a6d308e",
      "parents": [
        "9d8a48e37a1e4dc008700f22e1d4a0ad761594e6",
        "af06c61e1b5ce33fc1afa825f7eb21368c1c6e9b"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Oct 04 21:22:41 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 04 21:22:41 2016 +0000"
      },
      "message": "Fix libgui warnings am: 6c5a17dd26 am: 972cce4cb9\nam: af06c61e1b\n\nChange-Id: I191c8a14d54427215922427c4bb497bdb7c27dd9\n"
    },
    {
      "commit": "af06c61e1b5ce33fc1afa825f7eb21368c1c6e9b",
      "tree": "67b537a2d977c9d852103ddf1a41b7f799dadf58",
      "parents": [
        "9d9e611d896589a103efb863ec4208d0e8ce159b",
        "972cce4cb9a5265b72ff483124d575041e37075f"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Sep 30 20:12:18 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 30 20:12:18 2016 +0000"
      },
      "message": "Fix libgui warnings am: 6c5a17dd26\nam: 972cce4cb9\n\nChange-Id: I83e31cd57286bb8fc5a25f7a1f6d895176640a84\n"
    },
    {
      "commit": "6c5a17dd2603b282cb0800c262857dc0f3d55f7e",
      "tree": "30e1e2db7f6fa6fe27cd5ffd5a5b7728c5ace31d",
      "parents": [
        "1d6c149d891c8dbfef78cd56a2d7fc6269348875"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Sep 27 14:12:48 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Sep 30 10:39:18 2016 -0700"
      },
      "message": "Fix libgui warnings\n\nThe warnings were being hidden by the use of -isystem to include\nframeworks/native/include.\n\nBug: 31752268\nTest: m -j\nMerged-in: Idba8278bc0a73886ecb7978617854b433c0b5875\nChange-Id: Idba8278bc0a73886ecb7978617854b433c0b5875\n"
    },
    {
      "commit": "9a80d502c34dc663a2c166eba17de9003fd8605d",
      "tree": "cec4cf5af751428e7dcc15144c84162af029b361",
      "parents": [
        "9462bb9e6b7360a5d659b9721a7f7a37ed72f9a6"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Sep 27 14:12:48 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Sep 29 17:17:36 2016 -0700"
      },
      "message": "Fix libgui warnings\n\nThe warnings were being hidden by the use of -isystem to include\nframeworks/native/include.\n\nBug: 31752268\nTest: m -j\nChange-Id: Idba8278bc0a73886ecb7978617854b433c0b5875\n"
    },
    {
      "commit": "96fc72d19e17d6d6dae1f3bdaca888a2db658f77",
      "tree": "075e9b58258fe71bea64ac9bec41078f6ad578ba",
      "parents": [
        "95c48ed47c2de072697d98609d2575f3ac459eea",
        "7407963cd42385ddb73d2acd1be72858d34bf242"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 23 05:59:09 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 23 05:59:10 2016 +0000"
      },
      "message": "Merge \"Surface: Allow nullable IGBPs when unparceling a Surface\""
    },
    {
      "commit": "7407963cd42385ddb73d2acd1be72858d34bf242",
      "tree": "42b9f8e9943b077d2e5cc5baefd31ff77e97021d",
      "parents": [
        "d0974d780827ddc75a8ff41ae1e922c226f65f68"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Sep 22 15:04:04 2016 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Sep 22 15:15:21 2016 -0700"
      },
      "message": "Surface: Allow nullable IGBPs when unparceling a Surface\n\nWe will write a null IGBP, so we shouldn\u0027t error out when reading one;\nleave semantics of that to higher-level code.\n\nTest: No camera crash after lots of front-back camera switches\nBug: 31373143\nChange-Id: I5f7cf7489aca721057c5731e3a79cf6f8f260774\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": "529a103fde484a6512aaffd9ae063decb93765eb",
      "tree": "5bfe71c98d88516c6eebb37e6fb08bc02a83fe94",
      "parents": [
        "4db50cec13f5fb69e847d1106c78cb972bc62149"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 29 17:33:08 2016 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 29 23:23:39 2016 -0700"
      },
      "message": "Surface: Add parcel/unparceling for missing field.\n\nRead/write new isSingleBuffered field in native code as well.\nCurrently just write \u0027no\u0027 unconditionally and discard on read.\n\nBug: 31162160\nChange-Id: Icfb7a37fb37a41f6437fe08bcfad271474ba6983\n"
    },
    {
      "commit": "f9de6e0d7e7a12f4d70bb4828863efb035fc133b",
      "tree": "e3b5c37802f6d43ad0b45b851323d8dbedc62dff",
      "parents": [
        "20854e608f45aa7cd9c4cc2b8ec0c860fff35e4a",
        "bc8c1928e1dbdaf6a2820f6e426c96ed61284043"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Tue Jul 12 00:24:56 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 12 00:24:57 2016 +0000"
      },
      "message": "Merge \"BQ: Remove getNextFrameNumber Binder call\" into nyc-mr1-dev"
    },
    {
      "commit": "70ccba596c586b7effde1ff99d36c911873b4ed4",
      "tree": "32d4e7e50d26f1537cb66eb20b5eca6c180429ef",
      "parents": [
        "05dacfb68af895fce3cc8ebb0b4aa06c6c336e26"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Fri Jul 01 14:00:40 2016 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Wed Jul 06 09:53:10 2016 -0700"
      },
      "message": "Surface: Add LAST_[DE]QUEUE_DURATION queries\n\nAdds support for the NATIVE_WINDOW_LAST_DEQUEUE_DURATION and\nNATIVE_WINDOW_LAST_QUEUE_DURATION queries.\n\nBug: 29413700\nChange-Id: Iea4efa208e8390fb2de52d5ad9f083ae91bf50b0\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": "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": "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": "87709c91ffad0cbe92e6b45cc13a2902b3170a2d",
      "tree": "212cb74e8f0cbbdc27515423147931b34bdd28be",
      "parents": [
        "b2dcc3a1220ea5ef6acb5a63659da3c34b1a295a"
      ],
      "author": {
        "name": "Mike Stroyan",
        "email": "stroyan@google.com",
        "time": "Fri Jun 03 12:43:26 2016 -0600"
      },
      "committer": {
        "name": "Mike Stroyan",
        "email": "stroyan@google.com",
        "time": "Mon Jun 06 08:23:45 2016 -0600"
      },
      "message": "libgui: Check result in hook_dequeueBuffer_DEPRECATED\n\nSurface::hook_dequeueBuffer_DEPRECATED calls c-\u003edequeueBuffer without\nchecking the returned result value.  It should check for failing\nresult and return on error without using the values that\nc-\u003edequeueBuffer did not set.\n\nBug: 28692406\nChange-Id: I10f9a23ad1052c5149040124366e0eb91b616267\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": "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": "9f31e299b3ec93b7bac969846105e7e926e3efcd",
      "tree": "0303187960df1b35cb8cc3e25c9fd04828af13f1",
      "parents": [
        "3e3a11a7805efb61f482914abc2ff8f01d5ec1b0"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Apr 11 11:15:32 2016 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Tue Apr 12 19:33:25 2016 -0700"
      },
      "message": "Add Surface::waitForNextFrame\n\nWe can use this for cases like SurfaceView\nwhere one thread (e.g. the framework code)\nwants to wait for an unknown client thread\nto render a frame in to the surface before\nwe report it as shown to the window manager.\n\nBug: 22207948\nChange-Id: I9d3344aa1c0ab0f0efd9df24e90ce0410d5f2e22\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": "88612912ac8406f2be0eeff97892274f98509017",
      "tree": "20371d2545a833a19328512a85b4487335d30b49",
      "parents": [
        "86e8a79a15849725e4964515a85fb9b34225f551"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Wed Jan 06 12:09:11 2016 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Mar 01 17:16:44 2016 -0800"
      },
      "message": "GUI: Move Surface.aidl here and implement for native\n\n- Move android/view/Surface.aidl parcelable definition from frameworks/base\n- Implement matching native behavior to android.view.Surface parceling,\n  to enable use of android.view.Surface in generated native AIDL interfaces\n\nBug: 25091611\nChange-Id: I87ffbb9a19c27a99ce0749d0ca1f17aaa6b3fe74\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": "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": "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": "127fc63e8a15366b4395f1363e8e18eb058d1709",
      "tree": "10dee6e3a6e3e3e50c351834c2c88a5516ae429d",
      "parents": [
        "1e9edc619c6b1ca3998a26eaa4882b55ce801f12"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue Jun 30 13:43:32 2015 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue Jan 05 15:02:32 2016 -0800"
      },
      "message": "libgui: Add dequeue/attach timeout\n\nAdds the ability to specify the timeout when dequeueBuffer or\nattachBuffer block due to the lack of a free buffer/slot. By default,\nthese will block indefinitely (which is signified by a timeout of -1).\n\nWhen a timeout (other than -1) is specified, non-blocking mode is\ndisabled and the given timeout will be used instead.\n\nBug: 25196773\nChange-Id: I17fdbeebccb7c8d878703d758ac1209608258e61\n"
    },
    {
      "commit": "c2e7788721489c5a2ef681fd0bfa591d2ce41175",
      "tree": "bf04c6d33713fa40cd1d173649574fc5c506b837",
      "parents": [
        "3c09d20086d74b80d28b8046d2058b2bdbb79b4f"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Dec 16 18:14:03 2015 -0800"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Dec 21 13:28:36 2015 -0800"
      },
      "message": "Expose setScalingMode from Surface.\n\nWhile we are here fix a validation error causing\nNATIVE_WINDOW_SCALING_MODE_NO_SCALE_CROP to never be applied.\nFurthermore, we remove GLConsumer logic causing the scaling mode to\nbe reinitialized when buffers change.\n\nBug: 26010823\nChange-Id: I1bf1e4fdc2eded67ff401783cf24f920e4684326\n"
    },
    {
      "commit": "ccdfd60d79a8b7f1ed6401d0f2e8e29166a10584",
      "tree": "337134c63442b7f737caf43ff44487b0916f9047",
      "parents": [
        "c899c322ab49639c1e1b012bb5a8b7d52f8497f4"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Wed Oct 07 15:05:45 2015 -0700"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Tue Nov 03 12:03:51 2015 -0800"
      },
      "message": "BQ: Add support for single buffer mode\n\n- Adds a single buffer mode to BufferQueue. In this mode designate the\n  first dequeued buffer as the shared buffer. All calls to dequeue()\n  and acquire() will then return the shared buffer, allowing the\n  producer and consumer to share it.\n- Modify the buffer slot state tracking. Add a new SHARED state for\n  the shared buffer in single buffer mode. Also track how many times\n  a buffer has been dequeued/queued/acquired as it\u0027s possible for a\n  shared buffer to be both dequeued and acquired at the same time, or\n  dequeued/acquired multiple times. This tracking is needed to know\n  when to drop the buffer out of the SHARED state after single buffer\n  mode has been disabled.\n- Add plumbing for enabling/disabling single buffer mode from Surface.\n\nBug 24940410\n\nChange-Id: I3fc550c74bacb5523c049a227111356257386853\n"
    },
    {
      "commit": "7dde599bf1a0dbef7390d91c2689d506371cdbd7",
      "tree": "6580e646734b6d4c64ab1a99dc2c710d4c8e0df1",
      "parents": [
        "1fd88a560df8f58c3a798b25f64795e8306e527f"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Fri May 22 09:51:44 2015 -0700"
      },
      "committer": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Thu Oct 29 00:11:28 2015 +0000"
      },
      "message": "Support SurfaceView synchronization.\n\nAdd API for fetching the next frame number to be produced by\na given buffer producer. Add an API to SurfaceComposer to \ndefer execution of the current transaction until a given frame number. \nTogether these may be used to synchronize app drawing and surface \ncontrol updates.\n\nChange-Id: I8e0f4993332ac0199c768c88581a453fefbaff1d\n"
    },
    {
      "commit": "567dbbb6dd42be5013fcde0dadb3316d85f2fa0d",
      "tree": "5072cd29a7d0dc5be17f5a27f805c42c12ebcdbb",
      "parents": [
        "1ec0f48cbd44a56c360d075849655ab2c3f36476"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Wed Aug 26 18:59:08 2015 -0700"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Thu Sep 24 15:22:42 2015 -0700"
      },
      "message": "BQ: get rid of async in producer interface\n\n- Get rid of the async flag in dequeueBuffer, allocateBuffers,\n  waitForFreeSlotThenRelock, and QueueBufferInput.\n- Instead use the persistent flags mDequeueBufferCannotBlock and\n  mAsyncMode to determine whether to use the async behavior.\n\nBug 13174928\n\nChange-Id: Ie6f7b9e46ee3844ee77b102003c84dddf1bcafdd\n"
    },
    {
      "commit": "d89c2bb6d265c653d3e1d2d94177c75636760abd",
      "tree": "538964dda240512ab94526b05b0e8f8e248ea674",
      "parents": [
        "0c359bfe4c94071f944a8ba33ddafa3c6cae650a"
      ],
      "author": {
        "name": "Haixia Shi",
        "email": "hshi@google.com",
        "time": "Mon Sep 14 11:02:18 2015 -0700"
      },
      "committer": {
        "name": "Haixia Shi",
        "email": "hshi@google.com",
        "time": "Mon Sep 14 11:03:13 2015 -0700"
      },
      "message": "libgui: Fix missing va_end in Surface::hook_perform()\n\nBUG\u003d23667255\nTEST\u003dlibgui builds and volantis still works\n\nChange-Id: I01de6ade6a47072c3a32c3eedc8568b1fd571363\n"
    },
    {
      "commit": "e5b755a045f4203fdd989047441259893c6fbe2d",
      "tree": "b9e9ce4e620bf129e599077b3cd12fa811dc5fa0",
      "parents": [
        "fa455354557f6283ff3a7d76979e52fd251c155f"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Thu Aug 13 16:18:19 2015 -0700"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Mon Aug 24 17:08:13 2015 -0700"
      },
      "message": "BQ: Get rid of setBufferCount\n\n- Remove setBufferCount from BufferQueueProducer and\n  IGraphicsBufferQueueProducer.\n- Get rid of the unit tests for it.\n- In Surface, convert setBufferCount calls into calls to\n  setMaxDequeuedBufferCount.\n- Change mOverrideMaxBufferCount to a boolean since it can now be\n  derived from mMaxAcquiredBufferCount, mMaxDequeuedBufferCount, and\n  mAsyncMode.\n\nBug 13174928\n\nChange-Id: Ia0adc737fae9e13f186df832b8428a0829041bf9\n"
    },
    {
      "commit": "fa455354557f6283ff3a7d76979e52fd251c155f",
      "tree": "cbbf1ea5523e7327cab144003a8723eef068ab65",
      "parents": [
        "8d8e33ac4161bd145db75275f8a5555021f2bac5"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Wed Aug 12 17:47:47 2015 -0700"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Mon Aug 24 17:07:42 2015 -0700"
      },
      "message": "BQ: add setMaxDequeuedBufferCount\n\nAdds the new setMaxDequeuedBufferCount() function to\nBufferQueueProducer. This will eventually replace setBufferCount.\n\nAlso add setAsyncMode.\n\nBug 13174928\n\nChange-Id: Iea1adcd5d74a75f67d8e9dde06d521695628ad5a\n"
    },
    {
      "commit": "60d6922a011fe18c111b8d30fb6ef1f655b6b15e",
      "tree": "4618ad5fc60b4e25c76c9f5d1e80ad3223baff31",
      "parents": [
        "72f314a50f34de593686661b0a99906125d18bfd"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Fri Aug 07 14:47:20 2015 -0700"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Mon Aug 24 10:50:52 2015 -0700"
      },
      "message": "libsgui: Change Rect default constructor\n\nThe current Rect default constructor initializes to all zeroes. Change\nit to initialize to an invalid Rect.\n\nModify all of the existing invocations of the default constructor to\nmaintain the existing behavior.\n\nBug 18173359\n\nChange-Id: Ibbad076f1550a94f56d7b1cf5350071f2022e09a\n"
    },
    {
      "commit": "db4850c01ff02bf7f936aa427e1fa8af9abc8f22",
      "tree": "01dd6265a6886915cd671540b68e6af7a224ed86",
      "parents": [
        "7a1b5d5dec10f05ec29e7251ada440b47a34c6aa"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Thu Jun 25 16:10:18 2015 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Thu Jun 25 16:10:18 2015 -0700"
      },
      "message": "libgui: Fix handling of rotated surface damage\n\nIncoming surface damage was not aware that the EGL implementation was\nrotating buffers in response to SurfaceFlinger\u0027s transform hint. This\ndidn\u0027t affect all cases because the effect was to apply a 90 degree\nrotation instead of a 270 degree rotation. For full-screen updates,\nthings more or less worked, but in other cases this caused corruption.\n\nThis fixes that by correctly undoing the effect of rotated buffers on\nthe incoming surface damage, and then passing that damage down\nuntouched to HWC.\n\nBug: 22068334\nChange-Id: I226ecfc7a91fe2e16edd2aa6d9149f0d26b529d6\n"
    },
    {
      "commit": "c6f30bdee1f634eb90d68cb76efe935b6535a1e8",
      "tree": "2cff76d1f8c26db9b7a96995b833cd86ec468329",
      "parents": [
        "5b36ea44c58f8def561bf37c79d3452b21e2deab"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Mon Jun 08 09:32:50 2015 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Mon Jun 08 09:40:49 2015 -0700"
      },
      "message": "libgui/SurfaceFlinger: Add getConsumerName\n\nAdds a getConsumerName method to IGraphicBufferProducer and Surface.\nCurrently, the name is cached inside of IGBP and is update on connect\nand dequeueBuffer, which should be good enough for most uses.\n\nBug: 6667401\nChange-Id: I22c7881d778e495cf8276de7bbcd769e52429915\n"
    },
    {
      "commit": "a2ca9bf0a9789e9e5e37961ebfb356347f59309e",
      "tree": "1390497a56f7ddd62e09e5f0461ae8f35e947954",
      "parents": [
        "107fbe5599016b0e35145a1a00c4f238b63d61e4"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Mon Jun 08 16:30:08 2015 +0000"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Mon Jun 08 16:30:08 2015 +0000"
      },
      "message": "Revert \"libgui: Add getConsumerName\"\n\nThis reverts commit 107fbe5599016b0e35145a1a00c4f238b63d61e4.\n\nChange-Id: I0c2b0f7c81193b05eb3dd2f5a59f83598434b744\n"
    },
    {
      "commit": "107fbe5599016b0e35145a1a00c4f238b63d61e4",
      "tree": "fea2c90086fdc3b5f76f13c66cdde8f7585ff3b9",
      "parents": [
        "9d2c5a7c678bd384df0fb29952cf8943e7b1b160"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Fri Jun 05 15:01:58 2015 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Fri Jun 05 15:01:58 2015 -0700"
      },
      "message": "libgui: Add getConsumerName\n\nAdds a getConsumerName method to IGraphicBufferProducer and Surface.\nCurrently, the name is cached inside of IGBP and is updated on connect\nand dequeueBuffer, which should be good enough for most uses.\n\nBug: 6667401\nChange-Id: Ife94bd89023fe7c00bad916932b9a19233fd2290\n"
    }
  ],
  "next": "812ed0644f8f8f71ca403f4e5793f0dbc1fcf9b2"
}
