)]}'
{
  "log": [
    {
      "commit": "ba55e0e5c812ef0b6c0efdc9fe876ab3f9a8f6e3",
      "tree": "c439972fe0d77d3eba05a429bd7171ec7ce20a65",
      "parents": [
        "77e270d0ffbcc90b839b821bc24a308362f9e146",
        "c8ca12ae35708b94583c956fbb81918696f0c313"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 05 18:05:44 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 05 18:05:45 2017 +0000"
      },
      "message": "Merge changes I1ed97f98,I32449355,I5c84d6f2,Ib9652278,I73deaa44 into oc-dev\n\n* changes:\n  libgui: Make IConsumerListener a SafeInterface\n  libgui: Format IConsumerListener\n  libbinder: Support Flattenable in SafeInterface\n  libgui: Add missing FenceTime header to GLConsumer\n  libgui: Fix naming/enums in ISurfaceComposerClient\n"
    },
    {
      "commit": "77e270d0ffbcc90b839b821bc24a308362f9e146",
      "tree": "a5903933f90dcbd0956b13a03d0e16c72f05f937",
      "parents": [
        "224306b0ac1c3ab6248ece529b3bdebfc96e94da",
        "8b397ab3d6ad2ff23897b3743fe51325e15ffaf6"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Wed Apr 05 18:02:51 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 05 18:02:52 2017 +0000"
      },
      "message": "Merge \"dumpstate: add dropbox crashes to bugreport\" into oc-dev"
    },
    {
      "commit": "224306b0ac1c3ab6248ece529b3bdebfc96e94da",
      "tree": "22d0b4b77fc86bb30390d4e4f7c43faa981018cf",
      "parents": [
        "409c6eecdca80e95a110d63bc70b1c2dfcf49100",
        "6a570b60716e4cbccd10432502491588f8a5c096"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 05 17:35:46 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 05 17:35:47 2017 +0000"
      },
      "message": "Merge \"Use Configstore to test getWideColor function\" into oc-dev"
    },
    {
      "commit": "8b397ab3d6ad2ff23897b3743fe51325e15ffaf6",
      "tree": "ccf2d9d3ba6127ac87c45f4e898e23801cbab71f",
      "parents": [
        "0e7305cb0ab3787cd4767aa3c57d6842ac351663"
      ],
      "author": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Tue Apr 04 16:35:44 2017 -0700"
      },
      "committer": {
        "name": "Adrian Roos",
        "email": "roosa@google.com",
        "time": "Wed Apr 05 17:27:09 2017 +0000"
      },
      "message": "dumpstate: add dropbox crashes to bugreport\n\nAdds system crashes from the dropbox to the end of the bugreport\nto allow diagnosing issues even after the device has rebooted.\n\nTest: adb bugreport\nBug: 36852229\nBug: 26849505\nChange-Id: I11589b81208e916d25d543c43c1283bdbffda949\n"
    },
    {
      "commit": "409c6eecdca80e95a110d63bc70b1c2dfcf49100",
      "tree": "e30f47579862069191065b59bc31cb63c97338e3",
      "parents": [
        "585e32faccaf80cf51e8148959abfbee49624b97"
      ],
      "author": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@google.com",
        "time": "Thu Mar 23 17:45:40 2017 -0700"
      },
      "committer": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@google.com",
        "time": "Wed Apr 05 08:34:46 2017 -0700"
      },
      "message": "Make init process create PDX sockets for services\n\nTo help us control the creation of PDX sockets and properly labeling\nthem for SELinux, let the init process create sockets for us based on\nthe settings specified in .rc files for service processes.\n\nFor (test) services that are meant to be started manually from command\nline (e.g. test services), keep the old functionality as an option so\nthat UDS endpoint can be created in a way that it automatically creates\nthe socket in the service itself.\n\nBug: 35220925\nTest: `m -j32` succeeds. Ran sailfish in VR mode and made sure all the\n      services (surfaceflinger, performanced, sensord, bufferhub).\n      `m -j32 checkbuild` succeeds as well.\n\nChange-Id: Ief733b41b534cea19b1bea31de76b06051aa50ab\n"
    },
    {
      "commit": "6a570b60716e4cbccd10432502491588f8a5c096",
      "tree": "b310b3a3895c51cffd53c1b2f0352bf9d711e257",
      "parents": [
        "585e32faccaf80cf51e8148959abfbee49624b97"
      ],
      "author": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Mon Mar 13 14:30:00 2017 -0600"
      },
      "committer": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Wed Apr 05 09:28:17 2017 -0600"
      },
      "message": "Use Configstore to test getWideColor function\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\"\nBug: 29940137\n\nChange-Id: I618c300b1882d2ebd7474586d72f4d469e2d41bf\n"
    },
    {
      "commit": "585e32faccaf80cf51e8148959abfbee49624b97",
      "tree": "ff7fe048515d17a84ebaf5d2d291e57ae7580b62",
      "parents": [
        "3e85cbed6a61f6022b2a9f5972d9e2faa3c1345b"
      ],
      "author": {
        "name": "Jaesoo Lee",
        "email": "jaesoo@google.com",
        "time": "Thu Mar 30 15:25:19 2017 +0900"
      },
      "committer": {
        "name": "Jaesoo Lee",
        "email": "jaesoo@google.com",
        "time": "Wed Apr 05 10:32:07 2017 +0900"
      },
      "message": "import configstore-utils as a shared library.\n\nandroid.hardware.configstore-utils is now built as a shared library.\n\nBug: 36275627\nTest: Built and check the boot log messages\nChange-Id: I44b0f6a69e267f670380e18a37a519bb2ef1ee84\n"
    },
    {
      "commit": "3e85cbed6a61f6022b2a9f5972d9e2faa3c1345b",
      "tree": "224b5ad14d672d7acf813a3880e1c1fbb8d26564",
      "parents": [
        "d934111402840dceca21d0d491014d5692f02b7c"
      ],
      "author": {
        "name": "Jaesoo Lee",
        "email": "jaesoo@google.com",
        "time": "Thu Mar 30 15:24:15 2017 +0900"
      },
      "committer": {
        "name": "Jaesoo Lee",
        "email": "jaesoo@google.com",
        "time": "Wed Apr 05 10:32:07 2017 +0900"
      },
      "message": "import configstore-utils as a shared library.\n\nandroid.hardware.configstore-utils is now built as a shared library.\n\nBug: 36275627\nTest: Built and check the boot log messages\nChange-Id: I83ccebcad8005f39ca8534477d7cd3f69a2041aa\n"
    },
    {
      "commit": "d934111402840dceca21d0d491014d5692f02b7c",
      "tree": "135021a3c0487fd1540182bcb1611a11f7d66f00",
      "parents": [
        "2d45cf2a4062992429f28b1c4fc1c8a224138321",
        "f543e5a7110868647e6dc16788b72ad7de80fa38"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 05 00:42:52 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 05 00:42:59 2017 +0000"
      },
      "message": "Merge \"Remove useless GraphicBuffer() constructor\" into oc-dev"
    },
    {
      "commit": "c8ca12ae35708b94583c956fbb81918696f0c313",
      "tree": "2e15bc13e11ba0a6c8ad8f9d8cf93c56460ba274",
      "parents": [
        "d8339d96577a08bc90d0b2a4b7bc57b38aeeca4e"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue Mar 28 17:05:13 2017 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue Apr 04 16:12:26 2017 -0700"
      },
      "message": "libgui: Make IConsumerListener a SafeInterface\n\nConverts IConsumerListener to be a SafeInterface such that all\nparceling/unparceling is done automatically.\n\nTest: libgui_tests + manual testing\nChange-Id: I1ed97f9802e320662cd29e181539ce839ffe0f3f\n"
    },
    {
      "commit": "d8339d96577a08bc90d0b2a4b7bc57b38aeeca4e",
      "tree": "314de8264d72d8b2eb5f137c29a24878e69f9b4e",
      "parents": [
        "df614ae850b0b277030f94fd32062d45e723f91b"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue Mar 28 13:55:48 2017 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue Apr 04 16:12:09 2017 -0700"
      },
      "message": "libgui: Format IConsumerListener\n\nApplies the framework default .clang-format and does a bit of tidying\nup (reflowing comments to 100 characters, reordering includes, etc.).\n\nTest: libgui_tests + manual testing\nChange-Id: I324493551bca5a6c6a011cbe773021236e11e992\n"
    },
    {
      "commit": "df614ae850b0b277030f94fd32062d45e723f91b",
      "tree": "679adb8d86166f9e12f45ae614670d75add1ab5c",
      "parents": [
        "78b286087b99c60b614c300b8b76f6f6dc8d54f7"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue Mar 28 17:02:05 2017 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue Apr 04 16:11:55 2017 -0700"
      },
      "message": "libbinder: Support Flattenable in SafeInterface\n\nAdds support for sending and receiving Flattenable parameters as part\nof a SafeInterface.\n\nTest: New test in binderSafeInterfaceTest\nChange-Id: I5c84d6f27ac1f8c7ad37210e836f390e02b92959\n"
    },
    {
      "commit": "78b286087b99c60b614c300b8b76f6f6dc8d54f7",
      "tree": "cf3c11fe0125cf5410eff5056b4278146edc053d",
      "parents": [
        "29ae6e3bcda8838800f4a5bc3d20c6603a5cb2a2"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue Mar 28 16:44:21 2017 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue Apr 04 16:11:30 2017 -0700"
      },
      "message": "libgui: Add missing FenceTime header to GLConsumer\n\nGLConsumer had a missing dependency on FenceTime which was hidden by\ncoincidental includes in other files. This adds the proper include.\n\nTest: GLConsumer compiles\nChange-Id: Ib96522787fa22746e4aeb2cf047bfd667869add6\n"
    },
    {
      "commit": "29ae6e3bcda8838800f4a5bc3d20c6603a5cb2a2",
      "tree": "d0aabf89b36a9b4e5ba7bfa23eddb6a4c1af7d62",
      "parents": [
        "c428826fdf6208da698fbdb1d49d0b51bfb924b6"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Mon Apr 03 15:16:27 2017 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue Apr 04 16:11:13 2017 -0700"
      },
      "message": "libgui: Fix naming/enums in ISurfaceComposerClient\n\nMoves the Tag enum out of the ISurfaceComposerClient header and into an\nanonymous namespace in the .cpp file, changes it to UPPER_UNDERSCORE\nnaming, and makes its LAST entry actually point to the last value.\n\nTest: m -j + manual testing\nChange-Id: I73deaa446a87709548c2069c3a1f29605967ab97\n"
    },
    {
      "commit": "2d45cf2a4062992429f28b1c4fc1c8a224138321",
      "tree": "979d054e224567e06471025d51aea31e19874385",
      "parents": [
        "8e5deb6b96ea40a5408ec723f69b0c8951cff47d",
        "4f6ce7c7b839da76c1542b41816764e05413af99"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 04 21:51:01 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 04 21:51:01 2017 +0000"
      },
      "message": "Merge \"fix race condition that can cause a use after free\" into oc-dev"
    },
    {
      "commit": "f543e5a7110868647e6dc16788b72ad7de80fa38",
      "tree": "bd050a85596a75568cd6d0c5364f745220927c96",
      "parents": [
        "53ed7bfca150e51a2458a1db6c86fc99e5b7afb7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 03 17:16:41 2017 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 04 14:39:12 2017 -0700"
      },
      "message": "Remove useless GraphicBuffer() constructor\n\nTest: compiled \u0026 run\nBug: 36869708\n\n\nChange-Id: I83d80a1cde28671135b7716a434c503aeefcec46"
    },
    {
      "commit": "8e5deb6b96ea40a5408ec723f69b0c8951cff47d",
      "tree": "c5d179f5b1d87e0b002491d4169a80293f5ddba0",
      "parents": [
        "e7353ae5fcf8608507c7ee424b5869c4ed391920",
        "1601bcfa9cdc07cea8f5980349608e1526690db5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 04 21:32:43 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 04 21:32:44 2017 +0000"
      },
      "message": "Merge \"Harden BufferHubQueueProducerTest\" into oc-dev"
    },
    {
      "commit": "e7353ae5fcf8608507c7ee424b5869c4ed391920",
      "tree": "e34b3d68bb930d4dfd580c1ed404757b609cfc57",
      "parents": [
        "53ed7bfca150e51a2458a1db6c86fc99e5b7afb7",
        "e12d5964a8d14abe7f2eb6e57469cbe7f7391a19"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 04 21:18:16 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 04 21:18:21 2017 +0000"
      },
      "message": "Merge \"Offer to \"fixup\" GIDs used for app data.\" into oc-dev"
    },
    {
      "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": "53ed7bfca150e51a2458a1db6c86fc99e5b7afb7",
      "tree": "7cacc6b96bc3190febe634d6db53fe1badd42fe9",
      "parents": [
        "05601b602c5145bd1899dc3a5d5daeff1129e280",
        "b13d4773ae9b6fc082c0ed857b3e0b7d7db59b8b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 04 18:23:45 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 04 18:23:45 2017 +0000"
      },
      "message": "Merge \"Fix pose predictor jank.\" into oc-dev"
    },
    {
      "commit": "05601b602c5145bd1899dc3a5d5daeff1129e280",
      "tree": "036f1bdb995deab57449ddd30da16b5c01ef166e",
      "parents": [
        "c428826fdf6208da698fbdb1d49d0b51bfb924b6",
        "f5ad48b5a71611751021c2ee9037c703cc946b4b"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Tue Apr 04 18:04:14 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 04 18:04:15 2017 +0000"
      },
      "message": "Merge \"vulkan: update Vulkan headers to 1.0.46\" into oc-dev"
    },
    {
      "commit": "f5ad48b5a71611751021c2ee9037c703cc946b4b",
      "tree": "c45e0561d31eb0aca929e554cf82312594aa0172",
      "parents": [
        "623912183d8314595b37cdedc7c193a21c345bdb"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Mon Mar 20 13:09:19 2017 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Tue Apr 04 09:35:01 2017 -0700"
      },
      "message": "vulkan: update Vulkan headers to 1.0.46\n\n- Add VK_EXT_swapchain_colorspace\n- Add VK_KHR_incremental_present\n\nTest: dEQP-VK.api.smoke.*\n      dEQP-VK.wsi.android.incremental_present.*\nBug: 36886707\nChange-Id: I70ffd56a63da39301cd9706b1b91cf3643aab916\n"
    },
    {
      "commit": "b13d4773ae9b6fc082c0ed857b3e0b7d7db59b8b",
      "tree": "a28e6be9e3007c9b4fc560647f12f279e97bab1a",
      "parents": [
        "c428826fdf6208da698fbdb1d49d0b51bfb924b6"
      ],
      "author": {
        "name": "Okan Arikan",
        "email": "okana@google.com",
        "time": "Fri Mar 31 14:04:51 2017 -0700"
      },
      "committer": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@google.com",
        "time": "Tue Apr 04 09:34:52 2017 -0700"
      },
      "message": "Fix pose predictor jank.\n\nThere were two issues:\n- A math error in angular velocity computation.\n  This has unit tests and they were failing.\n  Need to make sure these units tests get executed.\n\n- There is an inherent sensor latency that we need to account for.\n\nBug: 36693596, 36196200\nTest: Run VrHome, see less hanky result.\nChange-Id: Ifcf191f16de9ee64aa14bcbb74c9126db18ebaa8\n"
    },
    {
      "commit": "c428826fdf6208da698fbdb1d49d0b51bfb924b6",
      "tree": "46b11453d9e1cf3f8a9c8f874a533d90934749d8",
      "parents": [
        "5ce4bb2cbe132470bd87675e7511aedc7eda2bfd",
        "b42f171a5a76985fde2689d90fd6d2d7e4920564"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Apr 04 16:16:23 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 04 16:16:24 2017 +0000"
      },
      "message": "Merge \"libui: clean up GraphicBuffer interface\" into oc-dev"
    },
    {
      "commit": "5ce4bb2cbe132470bd87675e7511aedc7eda2bfd",
      "tree": "416254e1e093922d7c6b049fa6dfa2e793c4a8be",
      "parents": [
        "93e3900ad316610072ff61bc6c4df904dd5f7d7e",
        "37cdc8d0b9803e0c3dc17640534b74cd45fa4bd8"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 04 16:14:03 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 04 16:14:04 2017 +0000"
      },
      "message": "Merge \"VR: Move VR HWC DVR API to libdvr\" into oc-dev"
    },
    {
      "commit": "93e3900ad316610072ff61bc6c4df904dd5f7d7e",
      "tree": "fba538c40025fe6b00b2e191494d97d37422a8da",
      "parents": [
        "ac81f70b43fd603fe93d4bd7ce82dfd96aed350d",
        "f0a7bd033941e26e380232a0515e903cf8e678e5"
      ],
      "author": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@google.com",
        "time": "Tue Apr 04 15:31:24 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 04 15:31:26 2017 +0000"
      },
      "message": "Merge \"pdx: Rework error reporting when transfering file and channel handles\" into oc-dev"
    },
    {
      "commit": "ac81f70b43fd603fe93d4bd7ce82dfd96aed350d",
      "tree": "c0b55a952ec6b5d1695e1be1d21b40a188d495e9",
      "parents": [
        "8348f6d6d03bfb99f1fe8566e0bf5c3dee79f6c1",
        "894780b0ac8f3cdb90e52c45f4fe34494131f70b"
      ],
      "author": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Tue Apr 04 12:59:41 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 04 12:59:42 2017 +0000"
      },
      "message": "Merge \"Remove driver workaround\" into oc-dev"
    },
    {
      "commit": "37cdc8d0b9803e0c3dc17640534b74cd45fa4bd8",
      "tree": "47564cc63e6cb7d00b70cb36cd36521f71baca22",
      "parents": [
        "8348f6d6d03bfb99f1fe8566e0bf5c3dee79f6c1"
      ],
      "author": {
        "name": "Daniel Nicoara",
        "email": "dnicoara@google.com",
        "time": "Mon Mar 27 16:56:05 2017 -0400"
      },
      "committer": {
        "name": "Daniel Nicoara",
        "email": "dnicoara@google.com",
        "time": "Tue Apr 04 08:45:05 2017 -0400"
      },
      "message": "VR: Move VR HWC DVR API to libdvr\n\nMoved VR HWC API into a common API library.\n\nBug: 36050795\nTest: Compiled\nChange-Id: I1af32f4dedb7a6d4bb77a18d3c48cfbc8ea00a66\n(cherry picked from commit 3d3fb3960f9c3956074496fd7fa1beb230ac1043)\n"
    },
    {
      "commit": "8348f6d6d03bfb99f1fe8566e0bf5c3dee79f6c1",
      "tree": "04af4694163973ce167fe0c293737ec21e5f71dc",
      "parents": [
        "2d3349c9aae4843d4eaabc9a6bf2dd179697488f",
        "f15219b280fa385b754ae1478b84a939eae92c64"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 04 05:57:05 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 04 05:57:06 2017 +0000"
      },
      "message": "Merge \"Fix typo causing GL_EXT_debug_marker to disappear\" into oc-dev"
    },
    {
      "commit": "2d3349c9aae4843d4eaabc9a6bf2dd179697488f",
      "tree": "57611e550ed965e2b1474ee1066e5734dad6ba00",
      "parents": [
        "a44aa44dd2bce3b72614b9c8db8eb3b8fb9f1806",
        "a07b3eec338a4c528892315da61b39fa5271cb8f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 04 05:43:52 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 04 05:43:53 2017 +0000"
      },
      "message": "Merge changes from topic \u0027sensors_framework_hal\u0027 into oc-dev\n\n* changes:\n  android.frameworks.sensorservice@1.0: make classes final\n  android.frameworks.sensorservice@1.0: ashmem direct channel check sizes.\n  android.frameworks.sensorservice@1.0: fix configureDirectChannel return positive integer.\n  Implement android.frameworks.sensorservice@1.0::IEventQueue.\n  Renamed HIDL SensorManager::mManager -\u003e mInternalManager.\n"
    },
    {
      "commit": "a44aa44dd2bce3b72614b9c8db8eb3b8fb9f1806",
      "tree": "5d9dfddbb1c995c02ef7a1bed66afc9708d37262",
      "parents": [
        "42aca5a0d3cae3f1fb416a0170ff339bd763c71c",
        "ee6cff0d38888fe816def8634eaa47e13ed145dd"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 04 04:30:11 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 04 04:30:18 2017 +0000"
      },
      "message": "Merge \"ANativeWindow_toSurface header\" into oc-dev"
    },
    {
      "commit": "42aca5a0d3cae3f1fb416a0170ff339bd763c71c",
      "tree": "e8cffb1885f8a5dff1083c4e508e1d541dc2e4ad",
      "parents": [
        "31ee0e6a6aa2e5f872a3af69f2a80af44fe69539",
        "31361232e1e7965d00c638ead2903f08f168f1c9"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Tue Apr 04 03:41:46 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 04 03:41:48 2017 +0000"
      },
      "message": "Merge \"vndservicemanager: load vendor service_contexts.\" into oc-dev"
    },
    {
      "commit": "ee6cff0d38888fe816def8634eaa47e13ed145dd",
      "tree": "5c090cfa1786007bbd2b1efa3e547edf6c8d6270",
      "parents": [
        "0860434b11f60cfa8fa0f46f58e69f6ae3ed1d0b"
      ],
      "author": {
        "name": "Jiwen \u0027Steve\u0027 Cai",
        "email": "jwcai@google.com",
        "time": "Fri Mar 31 11:19:37 2017 -0700"
      },
      "committer": {
        "name": "Jiwen \u0027Steve\u0027 Cai",
        "email": "jwcai@google.com",
        "time": "Mon Apr 03 19:16:24 2017 -0700"
      },
      "message": "ANativeWindow_toSurface header\n\nThis enables the conversion from an ANativeWindow (created by NDK API\nsuch as: AImageReader_create) to a Java Surface, so that developers can\nhookup a Java Producer to a native buffer consumer.\n\nBug: 36862948\nTest: android.media.cts.NativeImageReaderTest\nChange-Id: I11962bc791680a62579e51c32f2d51911cac48f8\n"
    },
    {
      "commit": "a07b3eec338a4c528892315da61b39fa5271cb8f",
      "tree": "8ee416192e84c391120f55653f9999675fbdb856",
      "parents": [
        "8a420ed627c1db832ef33663e8abaedb214368f7"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Mon Apr 03 19:08:16 2017 -0700"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Mon Apr 03 19:09:46 2017 -0700"
      },
      "message": "android.frameworks.sensorservice@1.0: make classes final\n\nMake SensorManager and DirectReportChannel final.\n\nTest: pass\nChange-Id: Idc7f7fcacf1ad1ad6282a603538529ff99f88184\n"
    },
    {
      "commit": "8a420ed627c1db832ef33663e8abaedb214368f7",
      "tree": "b591000324fd6c22f41aab707f592f672ec1bda7",
      "parents": [
        "05fc8afc081722606aa815f5a6cb8f8f640d3e28"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Mon Apr 03 14:59:47 2017 -0700"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Mon Apr 03 19:09:46 2017 -0700"
      },
      "message": "android.frameworks.sensorservice@1.0: ashmem direct channel check sizes.\n\nTest: VtsHalSensorManagerV1_0TargetTest\nChange-Id: I18b87128da2607f82ffddb260bf440786c378010\n"
    },
    {
      "commit": "05fc8afc081722606aa815f5a6cb8f8f640d3e28",
      "tree": "d3226e18a0cab3ecf57866907c443113329c3962",
      "parents": [
        "95c7a0636763c0861d46425709befe90a3919c04"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Mon Apr 03 12:52:24 2017 -0700"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Mon Apr 03 19:09:45 2017 -0700"
      },
      "message": "android.frameworks.sensorservice@1.0: fix configureDirectChannel return positive integer.\n\nSensorManager::configureDirectChannel can return a positive integer\nas the token to indicate success. android.frameworks.sensorservice@1.0\ndoesn\u0027t care about the token.\n\nTest: VtsHalSensorManagerV1_0TargetTest\nChange-Id: I6bcbbe5dc747a0d93d2a0fd37f0b7187cb681101\n"
    },
    {
      "commit": "95c7a0636763c0861d46425709befe90a3919c04",
      "tree": "39411bbbf26959f04d0d13b0769bb5eebd72333e",
      "parents": [
        "57d427735f025eb8835d3c55124f6a2215af2166"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Tue Mar 28 19:07:17 2017 -0700"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Mon Apr 03 19:09:44 2017 -0700"
      },
      "message": "Implement android.frameworks.sensorservice@1.0::IEventQueue.\n\nTest: pass\nBug: 35219747\nChange-Id: I52ddd64db500c23db22768fc0603bce0cc14f8c6\n"
    },
    {
      "commit": "31ee0e6a6aa2e5f872a3af69f2a80af44fe69539",
      "tree": "3fdd890f56ea0bb54ec8b0c10e67298a015d9b03",
      "parents": [
        "3db8412608bde327dc6f3e0e252af86edece2baa",
        "453effd1f144fb5a6ae89a7c377d20a845c49080"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 04 01:49:08 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 04 01:49:09 2017 +0000"
      },
      "message": "Merge \"Add VNDK API to access AHardwareBuffer from ANativeWindowBuffer\" into oc-dev"
    },
    {
      "commit": "3db8412608bde327dc6f3e0e252af86edece2baa",
      "tree": "fc3cd614d6627229ebb1cfbb667eace1af048e2f",
      "parents": [
        "0860434b11f60cfa8fa0f46f58e69f6ae3ed1d0b"
      ],
      "author": {
        "name": "Daniel Nicoara",
        "email": "dnicoara@google.com",
        "time": "Fri Mar 10 13:02:09 2017 -0500"
      },
      "committer": {
        "name": "Daniel Nicoara",
        "email": "dnicoara@google.com",
        "time": "Tue Apr 04 01:32:26 2017 +0000"
      },
      "message": "VR: Update VR Window Manager to use the VR Hardware Composer service\n\nDecouples VR HWC from VR Window Manager.\n\nBug: 36051907\nTest: Compiled and ran on device in VR mode.\nChange-Id: Ifd76e742148765b3cf3e71b0cf538b920814eb7b\n"
    },
    {
      "commit": "f15219b280fa385b754ae1478b84a939eae92c64",
      "tree": "479941991085bf532f8174a356113cf70ea00444",
      "parents": [
        "0860434b11f60cfa8fa0f46f58e69f6ae3ed1d0b"
      ],
      "author": {
        "name": "Pyry Haulos",
        "email": "phaulos@google.com",
        "time": "Mon Apr 03 18:22:58 2017 -0700"
      },
      "committer": {
        "name": "Pyry Haulos",
        "email": "phaulos@google.com",
        "time": "Mon Apr 03 18:25:29 2017 -0700"
      },
      "message": "Fix typo causing GL_EXT_debug_marker to disappear\n\nAndroid EGL wrapper is supposed to always insert GL_EXT_debug_marker\nimplementation. A small typo in recent refactoring broke this logic.\n\nBug: 36865892\nTest: dEQP-GLES2.functional.debug_marker.supported\n"
    },
    {
      "commit": "0860434b11f60cfa8fa0f46f58e69f6ae3ed1d0b",
      "tree": "6efda88db04f93c5c1076c26325512d728e37892",
      "parents": [
        "f60ab4119e64c642f519ef7994482e72bd11f0cb",
        "e572fd7b6262389e89cc23d9eb25129394698eb8"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 04 00:33:14 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 04 00:33:15 2017 +0000"
      },
      "message": "Merge \"Surface: add getRemovedBuffer API\" into oc-dev"
    },
    {
      "commit": "f60ab4119e64c642f519ef7994482e72bd11f0cb",
      "tree": "c6f0da378053afb5a36c6e25cf7798b0bcb0aa76",
      "parents": [
        "b2a1ac9ee40ee4196bd6944828f04e6f3575c0ee",
        "dac30b4bbfba384148a906d0b973500ce5c78882"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 03 23:51:34 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 03 23:51:41 2017 +0000"
      },
      "message": "Merge \"add surfaceflinger and servicemanager to animation class\" into oc-dev"
    },
    {
      "commit": "f0a7bd033941e26e380232a0515e903cf8e678e5",
      "tree": "921a3d9c5783174c6674b46accc7e185aa5c8fde",
      "parents": [
        "b2a1ac9ee40ee4196bd6944828f04e6f3575c0ee"
      ],
      "author": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@google.com",
        "time": "Fri Mar 31 18:06:19 2017 -0700"
      },
      "committer": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@google.com",
        "time": "Mon Apr 03 16:16:22 2017 -0700"
      },
      "message": "pdx: Rework error reporting when transfering file and channel handles\n\nThere is a lot of confusion about reporting errors when passing file\nand channel handles over PDX transport between client and service.\n\nMethods like Message::PushFileHandle return an integer which means\nboth a file handle reference value (if positive) and a possible error\ncode (if negative). But file handles could contain negative values too\n(when they are empty). This is used frequently when passing buffer\nfences around (when a fence is not being used, its fd is set to -1).\n\nThis results in a special case of when PushFileHandle is called with\na file handle with value of -1, the return value is actually \"-errno\"\nwhich becomes dependent on a global state (errno is not set by\nPushFileHandle itself in case file handle value is negative) and results\nin unpredicted behavior (sometimes errno is 0, sometimes its \u003e0).\n\nCleaned this all up by using Status\u003cT\u003e everywhere we used an int to\npass value payload along with possible error code.\n\nNow the semantics of the calls are more clear.\n\nBug: 36866492\nTest: `m -j32` for sailfish-eng succeeds\n      Ran unit tests on device (pdx_tests, libpdx_uds_tests, bufferhub_tests,\n      buffer_hub_queue-test, buffer_hub_queue_producer-test), all pass\n      Ran CubeSea, NativeTreasureHunt and Ithaca on Sailfish with vrflinger\n      enabled, was able to use controller and screen rendered correctly.\n\nChange-Id: I0f40c3f356fcba8bc217d5219a0ddf9685e57fd7\n"
    },
    {
      "commit": "894780b0ac8f3cdb90e52c45f4fe34494131f70b",
      "tree": "1383b4fae3281127444b09954ca0aaba239fe799",
      "parents": [
        "623912183d8314595b37cdedc7c193a21c345bdb"
      ],
      "author": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Mon Apr 03 16:11:30 2017 -0600"
      },
      "committer": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Mon Apr 03 16:57:32 2017 -0600"
      },
      "message": "Remove driver workaround\n\nAppears that the workaround for bug #34177594 is no longer\nnecessary, so removing.\nBug: 34177594\nTest: Run Vulkan app\n\nChange-Id: Id574760bdea775ac7541a9657b5a8124eb9064ef\n"
    },
    {
      "commit": "b2a1ac9ee40ee4196bd6944828f04e6f3575c0ee",
      "tree": "b08b41f04e6517e43bf0ab4323be31857a3c5fe0",
      "parents": [
        "623912183d8314595b37cdedc7c193a21c345bdb",
        "3ff772317b108a78f6eee42ad8fe932553f5d9d8"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 03 22:54:33 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 03 22:54:34 2017 +0000"
      },
      "message": "Merge \"Use gralloc1 usage in AHardwareBuffer_describe\" into oc-dev"
    },
    {
      "commit": "e12d5964a8d14abe7f2eb6e57469cbe7f7391a19",
      "tree": "a9ed18ab9487d9c7a74adc8d0687dac049082253",
      "parents": [
        "623912183d8314595b37cdedc7c193a21c345bdb"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 03 16:41:02 2017 -0600"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Apr 03 16:41:08 2017 -0600"
      },
      "message": "Offer to \"fixup\" GIDs used for app data.\n\nWe recently started tracking cached app data using a per-app GID for\nthe \"cache\" and \"code_cache\" directories and their contents.  For\nupgraded devices, we ideally want to \"fixup\" the GIDs of any existing\ndata while the device is still showing the boot animation, instead of\nblocking the user when they unlock the device.\n\nSince all the information we need is available in metadata, we can\nupdate GIDs before the user has unlocked data.  We\u0027re pretty paranoid\nand we only pivot between the normal app GID and the cache GID; any\nother GID values are ignored.\n\nThis \"fixup\" method can also be used in the future to ensure\nconsistency of the files on disk.  Also fix bug by always using\n\"fts_path\" instead of \"fts_accpath\" which is based on racy chdir().\n\nTest: /data/nativetest/installd_service_test/installd_service_test\nBug: 34201111, 35084485\nChange-Id: Ia52694f3763cba09926082c08f0766477e03e39c\n"
    },
    {
      "commit": "453effd1f144fb5a6ae89a7c377d20a845c49080",
      "tree": "25117a2bc1ae6fc357fbea373048c313278583db",
      "parents": [
        "623912183d8314595b37cdedc7c193a21c345bdb"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 03 15:34:13 2017 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 03 15:34:13 2017 -0700"
      },
      "message": "Add VNDK API to access AHardwareBuffer from ANativeWindowBuffer\n\nthis is to allow vendors to use AHardwareBuffer’s \nlock/unlock on buffer dequeued from an\nANativeWindow.\n\nTest: compiled\nBug: 36866217\nChange-Id: If630105572ae0e57f6fda19c13e82150f415ed6b\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": "31361232e1e7965d00c638ead2903f08f168f1c9",
      "tree": "fb64f37c6c227e826a7eb4657c247edc820bd0d8",
      "parents": [
        "34ca5f2ab8cc891957567915def5bc32a36e6d82"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Fri Mar 31 16:12:12 2017 -0700"
      },
      "committer": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Mon Apr 03 14:33:12 2017 -0700"
      },
      "message": "vndservicemanager: load vendor service_contexts.\n\nAlso, don\u0027t crash when /dev/vndbinder is not\naccessible.\n\nBug: 36052864\nTest: loads vendor service contexts\nTest: doesn\u0027t crash without /dev/vndbinder, works with it\nChange-Id: Ida9dd94791206e14246348a8b8e66be09ed8fca7\n"
    },
    {
      "commit": "1601bcfa9cdc07cea8f5980349608e1526690db5",
      "tree": "d19a54bc7e4a0d63c16a1fe3316f832c9baa3fe2",
      "parents": [
        "623912183d8314595b37cdedc7c193a21c345bdb"
      ],
      "author": {
        "name": "Jiwen \u0027Steve\u0027 Cai",
        "email": "jwcai@google.com",
        "time": "Fri Mar 24 14:03:06 2017 -0700"
      },
      "committer": {
        "name": "Jiwen \u0027Steve\u0027 Cai",
        "email": "jwcai@google.com",
        "time": "Mon Apr 03 13:37:46 2017 -0700"
      },
      "message": "Harden BufferHubQueueProducerTest\n\nThis is a test that covers our implementation of bufferhubqueue-based\nIGraphicBufferProducer, which eventually enables VrCore/VrFlinger to\naccess buffers produced from other Android compontents. Note that the\ngtest itself is a (slightly) modified version of\nIGraphicBufferProducer_test.cpp.\n\nThis also improves BufferHubQueue in the following way to support more\nfeatures of android::BufferQueue.\n1/ Supports more buffer queue parameters that we query.\n2/ BufferHubQueue (the PDX client) now supports default width, height,\nand format configuration.\n3/ Change default max_dequeue_buffer_count to 1 (which is the same\nbehavior current android::BufferQueue adopts).\n4/ Fill in |QueueBufferOutput| during |enqueueBuffer|.\n\nBug: 34197998\nBug: 36266201\nTest: build and run buffer_hub_queue_producer-test\nChange-Id: I9d3e8bb66dbfb66e67ab7b0e5093e49a3f374e9c\n"
    },
    {
      "commit": "57d427735f025eb8835d3c55124f6a2215af2166",
      "tree": "605488e819fc916b4f428fcd9ad2c53664700260",
      "parents": [
        "623912183d8314595b37cdedc7c193a21c345bdb"
      ],
      "author": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Tue Mar 28 17:21:21 2017 -0700"
      },
      "committer": {
        "name": "Yifan Hong",
        "email": "elsk@google.com",
        "time": "Mon Apr 03 12:25:24 2017 -0700"
      },
      "message": "Renamed HIDL SensorManager::mManager -\u003e mInternalManager.\n\nUse \"Internal\" to represent objects of the wrapped type.\n\nTest: pass\nChange-Id: I4f86bc2c7c272c9abb0c5b4c2837baccfdc2a748\n"
    },
    {
      "commit": "b42f171a5a76985fde2689d90fd6d2d7e4920564",
      "tree": "396532ee9db257790a64a18579bfd34629f2404d",
      "parents": [
        "0e7305cb0ab3787cd4767aa3c57d6842ac351663"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Mar 21 13:15:39 2017 -0700"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Apr 03 09:26:59 2017 -0700"
      },
      "message": "libui: clean up GraphicBuffer interface\n\nOther than transferring the ownership, some callers want to control\nwhether to register or to clone the handle when creating a\nGraphicBuffer from a handle.  Add a new constructor with\nHandleWrapMethod for finer controls, to replace the one that has\nonly a boolean, keepOwnership.\n\nThe motivation is to enable users to construct GraphicBuffer without\nfighting with GraphicBufferMapper::registerBuffer first.  More\ngenerally, GraphicBufferMapper::{registerBuffer,unregisterBuffer} is\ntricky to use correctly.  They should really be considered private\nby most.\n\nWhile at it, deprecate constructors that do not distinguish\nproducer/consumer usage.  It turns out GraphicBuffer is used by some\nproprietary libraries.  I have to maintain the ABI and cannot remove\nthe deprecated constructors.\n\nBug: 36355756\nTest: boots\nChange-Id: Ieea618d8495f06a6233299d076fb821127cd6bf8\n"
    },
    {
      "commit": "623912183d8314595b37cdedc7c193a21c345bdb",
      "tree": "04a7194b349089960f0d0c36948ed12c1836ced1",
      "parents": [
        "c86462b7c02b65353a81bbf0f06f60089dd5839c",
        "a836c472f017f09cf16fa68176df461a4958d22a"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 03 07:37:44 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 03 07:37:49 2017 +0000"
      },
      "message": "Merge \"We really want f_frsize.\" into oc-dev"
    },
    {
      "commit": "c86462b7c02b65353a81bbf0f06f60089dd5839c",
      "tree": "b1c5672cad2704ffc9893e7a81fec650e757472f",
      "parents": [
        "c3bae03442d8e7e9f46b3cf754d51a738a40f4a9",
        "e59c85cc0e78bfcc8fec6acc8e37e6a472ffc07f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 03 05:46:04 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 03 05:46:08 2017 +0000"
      },
      "message": "Merge \"Define upper-bound disk quotas for all apps.\" into oc-dev"
    },
    {
      "commit": "a836c472f017f09cf16fa68176df461a4958d22a",
      "tree": "2aa7785e3356b217bbc700d20c2af0ce689bd3c4",
      "parents": [
        "c3bae03442d8e7e9f46b3cf754d51a738a40f4a9"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Apr 02 23:29:30 2017 -0600"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Apr 02 23:29:32 2017 -0600"
      },
      "message": "We really want f_frsize.\n\nIt\u0027s confusing, but f_bsize is not the value you\u0027re looking for; the\nreal block size is f_frsize.  Fix all those bugs.\n\nTest: builds, boots\nBug: 36840579\nChange-Id: I2846b8998c27f3e9a71dbf573a0a22158215a3bd\n"
    },
    {
      "commit": "e59c85cc0e78bfcc8fec6acc8e37e6a472ffc07f",
      "tree": "738bff9962520e7538c7497ede51599638293f0f",
      "parents": [
        "befdb0ec8cf37173baca1c2ed9924d414ed5fadf"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Apr 02 21:53:14 2017 -0600"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sun Apr 02 21:53:49 2017 -0600"
      },
      "message": "Define upper-bound disk quotas for all apps.\n\nAbusive or broken apps can go crazy and try allocating all of the\ndisk space on the device.  To mitigate the impact on system health,\nset hard limits to block any given app from using more than 90% of\ndisk blocks, or 50% of disk inodes.\n\nAlso define the hard limit for AID_MEDIA_RW to avoid filling up the\ndevice via the SD card.\n\nKick QUOTAON when scanning devices, since ext4 doesn\u0027t toggle\nDQUOT_LIMITS_ENABLED during initial mount.\n\nTest: cts-tradefed run commandAndExit cts-dev -m CtsAppSecurityHostTestCases -t android.appsecurity.cts.StorageHostTest\nTest: cts-tradefed run commandAndExit cts-dev -m CtsOsTestCases -t android.os.cts.EnvironmentTest#testSaneInodes\nBug: 36450358\nChange-Id: Iaa2bc6a2f0bc9047ee54c1d1a49bbda92142457a\n"
    },
    {
      "commit": "c3bae03442d8e7e9f46b3cf754d51a738a40f4a9",
      "tree": "84e82b6234b41557ff14667169ed0083fefcd57a",
      "parents": [
        "041e0ad6545eb8bf4a6e3cfba655baaadc4d7bda",
        "bc7552874052ee33f1b35b4474e20c003d216391"
      ],
      "author": {
        "name": "Cody Northrop",
        "email": "cnorthrop@google.com",
        "time": "Sun Apr 02 13:52:40 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Apr 02 13:52:41 2017 +0000"
      },
      "message": "Merge \"surfaceflinger: Generate unique layer names\" into oc-dev"
    },
    {
      "commit": "041e0ad6545eb8bf4a6e3cfba655baaadc4d7bda",
      "tree": "204a19705d8d0846ba20165cf1ea0431045676d9",
      "parents": [
        "723c48987209c93a902c29a858880b4fe340509d",
        "06d5e3590eb23144dd9de567663633160ba39302"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Apr 01 22:15:50 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Apr 01 22:15:50 2017 +0000"
      },
      "message": "Merge \"[libadapter] Fix nullpointer in acceptchanges\" into oc-dev"
    },
    {
      "commit": "06d5e3590eb23144dd9de567663633160ba39302",
      "tree": "16ecb45c3c79d8388aa014a96a96ddb800b4dbb9",
      "parents": [
        "34ca5f2ab8cc891957567915def5bc32a36e6d82"
      ],
      "author": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Thu Mar 30 16:27:02 2017 -0700"
      },
      "committer": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Sat Apr 01 13:28:11 2017 -0700"
      },
      "message": "[libadapter] Fix nullpointer in acceptchanges\n\nCheck the layer still exists upon accepting changes.\n\nBug: 36205238\nTest: AUPT\nChange-Id: I8443265ecc7b8b0a12347439fd75b138d14c7e3a\n"
    },
    {
      "commit": "723c48987209c93a902c29a858880b4fe340509d",
      "tree": "46c8140de5c1feca043a22425ad8d646e584fd84",
      "parents": [
        "f2e5430b95b9545e5a355607ba8e7d693b7a7d18"
      ],
      "author": {
        "name": "Yin-Chia Yeh",
        "email": "yinchiayeh@google.com",
        "time": "Thu Mar 30 13:13:36 2017 -0700"
      },
      "committer": {
        "name": "Yin-Chia Yeh",
        "email": "yinchiayeh@google.com",
        "time": "Sat Apr 01 13:03:15 2017 -0700"
      },
      "message": "DO NOT MERGE: ConsumerBase: call freeBufferLocked when a slot is overwritten\n\nCherrypicked from master.\n\nTest: the CL + camera service side fix pass ReprocessCaptureTest\nBug: 34461678\nChange-Id: Ia7863321bcb46cba53532fc1570c5facd9280aaa\n"
    },
    {
      "commit": "f2e5430b95b9545e5a355607ba8e7d693b7a7d18",
      "tree": "eefe1f1e347589f568febfdc995695fc08d2a15c",
      "parents": [
        "fc812651f819cce3c88f5cc7d8d5dcbc49d195f2",
        "fca0f29e100d60163d408439f1a5750c353c9ade"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Apr 01 06:08:37 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Apr 01 06:08:37 2017 +0000"
      },
      "message": "Merge \"vulkan: Dequeue the shared buffer again after presenting\" into oc-dev"
    },
    {
      "commit": "fc812651f819cce3c88f5cc7d8d5dcbc49d195f2",
      "tree": "75f891d0f1b921fba1665162c15bd7472cb9e290",
      "parents": [
        "a396414e0574b70037da11c015440266d9fca573",
        "c88409c2b8e99be8d5f134e260c4c29b1e632b3c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Apr 01 05:46:12 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Apr 01 05:46:13 2017 +0000"
      },
      "message": "Merge \"vulkan: Don\u0027t dequeue in AcquireNextImageKHR if in shared mode\" into oc-dev"
    },
    {
      "commit": "a396414e0574b70037da11c015440266d9fca573",
      "tree": "8ed3eb51341ef8eb776b5f08b2dfc8cc4dc8c470",
      "parents": [
        "10c51c70ea139bc85dcd14e6081f86a53a3c0119",
        "5cee136dd4f9ee18ea600f0dc6e6f45f786cd097"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Apr 01 04:45:36 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Apr 01 04:45:37 2017 +0000"
      },
      "message": "Merge \"Allow VirtualDisplay\u0027s to use hardware composer when in VR mode even if physical composer does not support them.\" into oc-dev"
    },
    {
      "commit": "10c51c70ea139bc85dcd14e6081f86a53a3c0119",
      "tree": "5fdb5124216a1f07eab791b8c6085efa1468eed5",
      "parents": [
        "42f1c7b9cb66c0bce285ef4b472ac650fd5004ef",
        "e0ced03e62565f42b3005ec34481ef2be7ae2d4b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Apr 01 04:34:44 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Apr 01 04:34:45 2017 +0000"
      },
      "message": "Merge changes I9ad4588e,I83a676fc,I749242c4,Idc0d3c23 into oc-dev\n\n* changes:\n  vulkan: Only cancel buffers during swapchain creation if not shared\n  vulkan: Set shared \u0026 auto refresh modes earlier\n  vulkan: Track whether in shared mode in Swapchain\n  vulkan: Always request at least 2 images for swapchain\n"
    },
    {
      "commit": "42f1c7b9cb66c0bce285ef4b472ac650fd5004ef",
      "tree": "7e0ea7c4ef202b882385c2c67294c2bf9e7a9750",
      "parents": [
        "b412406208ef32571f03a26090e75eb9391962bb",
        "ae7376516dd9f57137408f11e5fdcc53a15d4d8b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Apr 01 01:01:37 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Apr 01 01:01:38 2017 +0000"
      },
      "message": "Merge \"Add UID in bugreport\" into oc-dev"
    },
    {
      "commit": "3ff772317b108a78f6eee42ad8fe932553f5d9d8",
      "tree": "d5a63e8f6a50b67f9b0e575ae79c7dd884a2f6c9",
      "parents": [
        "34ca5f2ab8cc891957567915def5bc32a36e6d82"
      ],
      "author": {
        "name": "Jiwen \u0027Steve\u0027 Cai",
        "email": "jwcai@google.com",
        "time": "Fri Mar 31 16:34:45 2017 -0700"
      },
      "committer": {
        "name": "Jiwen \u0027Steve\u0027 Cai",
        "email": "jwcai@google.com",
        "time": "Fri Mar 31 17:08:18 2017 -0700"
      },
      "message": "Use gralloc1 usage in AHardwareBuffer_describe\n\nGraphicBuffer-\u003egetUsage() reports gralloc0 usage bits, convert it to\ngralloc1 usage first then to AHardwareBuffer bits.\n\nBug: 35114769\nTest: AImageReaderCts now passes with CPU_READ_OFTEN case.\nChange-Id: Id461d9f9e98ccc1db8c4b4da79c61b9aedb417bf\n"
    },
    {
      "commit": "b412406208ef32571f03a26090e75eb9391962bb",
      "tree": "0e3936ee1641a35482f087c6eb87bd16789c0fd6",
      "parents": [
        "052f3aeb8cf11b3ae7271490c5fee2dcec566c31",
        "490d0505e3309fa37260969a0df7bf39e6009c48"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 31 22:51:45 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 31 22:51:45 2017 +0000"
      },
      "message": "Merge \"Add default .clang-format\" into oc-dev"
    },
    {
      "commit": "bc7552874052ee33f1b35b4474e20c003d216391",
      "tree": "9bd2f17d91d6999b8ad82405d897e29e7f2962a1",
      "parents": [
        "34ca5f2ab8cc891957567915def5bc32a36e6d82"
      ],
      "author": {
        "name": "Cody Northrop",
        "email": "cnorthrop@google.com",
        "time": "Fri Mar 31 12:00:08 2017 -0600"
      },
      "committer": {
        "name": "Cody Northrop",
        "email": "cnorthrop@google.com",
        "time": "Fri Mar 31 16:05:33 2017 -0600"
      },
      "message": "surfaceflinger: Generate unique layer names\n\nAdd a counter to layer names to make it clear when there are duplicates.\n\n    layer foo#0\n    layer foo#1\n    layer bar#0\n    layer bar#1\n    layer bar#2\n\nBug: b/32543755\nTest: Build, install, run game with duplicate layers, see unique names.\n\nChange-Id: I915531d7adbdc506c429b86a685665fb6c56d25e\n"
    },
    {
      "commit": "dac30b4bbfba384148a906d0b973500ce5c78882",
      "tree": "5b0f5cf11a97405c3a8e232200e30b530c3a7d2e",
      "parents": [
        "34ca5f2ab8cc891957567915def5bc32a36e6d82"
      ],
      "author": {
        "name": "Keun-young Park",
        "email": "keunyoung@google.com",
        "time": "Thu Mar 23 13:46:54 2017 -0700"
      },
      "committer": {
        "name": "Keun-young Park",
        "email": "keunyoung@google.com",
        "time": "Fri Mar 31 12:10:12 2017 -0700"
      },
      "message": "add surfaceflinger and servicemanager to animation class\n\n- necessary for running shutdown animation\n\nbug: 36526187\nTest: many reboots\n\nChange-Id: Id26f5747a8903e91db8499093a489409dcafa129\n"
    },
    {
      "commit": "052f3aeb8cf11b3ae7271490c5fee2dcec566c31",
      "tree": "59c481b3ff50b7eaa63464e4373212825ff71028",
      "parents": [
        "a1336cf0decf0bafeae874dfcb1521339165a9b9"
      ],
      "author": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@google.com",
        "time": "Fri Mar 31 09:10:43 2017 -0700"
      },
      "committer": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@google.com",
        "time": "Fri Mar 31 10:45:52 2017 -0700"
      },
      "message": "bufferhubd: Fix an error on not closing post_fence explicitly.\n\nThere is a typo in the code that instead of calling close() on a Post\nfence, actually did get_fd() which is really a no-op.\n\nFixed by changing the call to call() explicitly.\n\nBug: None\nTest: `m -j32` succeeds. Sailfish boots, CubeSea works.\nChange-Id: If788aa8ea291317f0618724ecc35a4b355575772\n"
    },
    {
      "commit": "a1336cf0decf0bafeae874dfcb1521339165a9b9",
      "tree": "55ab61d58ebb70a3e03c1be04fe118fb3045a28e",
      "parents": [
        "4782814b340bb55a0fbff9f7b6cfd4d27cffd85a"
      ],
      "author": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@google.com",
        "time": "Fri Mar 31 08:29:28 2017 -0700"
      },
      "committer": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@google.com",
        "time": "Fri Mar 31 10:45:52 2017 -0700"
      },
      "message": "libbufferhub: Fix compiler warning with printf format mismatch\n\nstd::vector\u003cbool\u003e::at() does not return bool\u0026 but a special reference\nproxy class. Passing this class on the stack for \"%d\" printf specifier\nis unsafe.\n\nCompiler throws a warning to indicate this problem:\n\n    format specifies type \u0027int\u0027 but the argument has type \u0027reference\u0027\n    (aka \u0027__bit_reference\u003cstd::__1::vector\u003cbool, std::__1::allocator\u003cbool\u003e\u003e\u003e\u0027)\n\nFixed by explicitly casting to int before pushing the value onto the stack.\n\nBug: None\nTest: `m -j32` \u003d no more warning\nChange-Id: I7b3bc4908e4932c25be60fc350e0e0b439842b66\n"
    },
    {
      "commit": "4782814b340bb55a0fbff9f7b6cfd4d27cffd85a",
      "tree": "7392a5948d9d8c62c0245485ac52c70d0e7977f0",
      "parents": [
        "4ab4aa40eb7ecf9ad38307fa56cd1c059c1c2e20"
      ],
      "author": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@google.com",
        "time": "Thu Mar 23 17:44:58 2017 -0700"
      },
      "committer": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@google.com",
        "time": "Fri Mar 31 10:45:52 2017 -0700"
      },
      "message": "libpdx_uds: Improve client connection logic\n\nHandle the case where the service created a socket file but not bound the\nsocket to it, or not listening for incoming requests yet. Also, if the service\nhas crashed and left the socket file behind, need to make sure we reconnect\nonce the service is restarted.\n\nBug: None\nTest: `m -j32` succeeds, device boots and CubeSea app works on Sailfish\nChange-Id: I2039cfca6faccd5d1d4b725e454075669484b880\n(cherry picked from commit d074fc416a7a90e76a0b28a870080c1dd30079a1)\n"
    },
    {
      "commit": "4ab4aa40eb7ecf9ad38307fa56cd1c059c1c2e20",
      "tree": "2cfc4333f2048739583f12516513cb700177d145",
      "parents": [
        "734c7ec57e15f53a4001b8df2b45fa9700ef984c"
      ],
      "author": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@google.com",
        "time": "Thu Mar 23 11:52:44 2017 -0700"
      },
      "committer": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@google.com",
        "time": "Fri Mar 31 10:45:52 2017 -0700"
      },
      "message": "Remove unused dependency on libhardware from bufferhubd\n\n\u0027libhardware\u0027 doesn\u0027t seem to be used anymore. Remove it.\n\nBug: None\nTest: `m -j32` succeeds.\nChange-Id: I2ff002ce17d920f44509347ca86ca5f030348cf5\n(cherry picked from commit f9f18b6b5c413ffeb8cc3ac67dd49bc17364a76f)\n"
    },
    {
      "commit": "734c7ec57e15f53a4001b8df2b45fa9700ef984c",
      "tree": "bc36f26dee60fba7b92e3070316ecd08fc46ff6d",
      "parents": [
        "34ca5f2ab8cc891957567915def5bc32a36e6d82"
      ],
      "author": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@google.com",
        "time": "Thu Mar 30 10:53:11 2017 -0700"
      },
      "committer": {
        "name": "Alex Vakulenko",
        "email": "avakulenko@google.com",
        "time": "Fri Mar 31 10:45:52 2017 -0700"
      },
      "message": "libbufferhubqueue: Fix syntax in Android.bp\n\nThere was a spelling mistake for cflags property of libbufferhub\ncc_library object.\n\nBug: None\nTest: `m -j32` succeeds\nChange-Id: I862c2266d86586469dc7299bf727f75bb3df6512\n(cherry picked from commit 66fd7cb0f3b1a70121fb223b27a51f06534ebc46)\n"
    },
    {
      "commit": "490d0505e3309fa37260969a0df7bf39e6009c48",
      "tree": "65c9e15970d84460eae3a34d2bd19843dd8ad75f",
      "parents": [
        "34ca5f2ab8cc891957567915def5bc32a36e6d82"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Fri Mar 24 11:09:55 2017 -0700"
      },
      "committer": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Fri Mar 31 11:43:54 2017 -0600"
      },
      "message": "Add default .clang-format\n\nAdds a default .clang-format for frameworks/native. If this style is\nundesirable for a given component in this repo, it can be overriden\nwith a more local .clang-format file.\n\nTest: None necessary, only for formatting\nChange-Id: I0bf6bd9a15255d9a4ce3d485e841912955caa310\n(cherry picked from commit ec106f6cc73e2cbe63ad6c8e942c11d764c8158c)\n"
    },
    {
      "commit": "5cee136dd4f9ee18ea600f0dc6e6f45f786cd097",
      "tree": "c1ee6aa772cc5529e1919a72b0fe1af8c9c630af",
      "parents": [
        "34ca5f2ab8cc891957567915def5bc32a36e6d82"
      ],
      "author": {
        "name": "Alex Sakhartchouk",
        "email": "alexst@google.com",
        "time": "Sun Mar 26 12:28:34 2017 -0400"
      },
      "committer": {
        "name": "Santos Cordon",
        "email": "santoscordon@google.com",
        "time": "Fri Mar 31 17:03:07 2017 +0000"
      },
      "message": "Allow VirtualDisplay\u0027s to use hardware composer when in VR mode even if\nphysical composer does not support them.\n\nBug: 36071574\nTest: Applied remaining wip patches, launched 2D activity while in\npersistent VR mode. Observed 2D activity rendered in VR in VirtualDisplay.\nFurther, instrumented SurfaceFlinger code to ensure DisplayDevice\u0027s are\ncreated and destroyed with proper composers during VR mode transition.\n\nChange-Id: I12b09f1209fcf33f97abfd77e14c6ce61f45a5e9\n(cherry picked from commit d38ec4e294eadd4f655476fc90b675c78c1c8740)\n"
    },
    {
      "commit": "fca0f29e100d60163d408439f1a5750c353c9ade",
      "tree": "b04272ea623773020b5163bb7a2680b0f06cfc58",
      "parents": [
        "c88409c2b8e99be8d5f134e260c4c29b1e632b3c"
      ],
      "author": {
        "name": "Chris Forbes",
        "email": "chrisforbes@google.com",
        "time": "Thu Mar 30 19:48:39 2017 +1300"
      },
      "committer": {
        "name": "Chris Forbes",
        "email": "chrisforbes@google.com",
        "time": "Fri Mar 31 17:50:40 2017 +1300"
      },
      "message": "vulkan: Dequeue the shared buffer again after presenting\n\nEnsures that the shared buffer is always dequeued. This is tidier than\nthe previous hacky approach of dequeueing it on demand just prior to\nthis.\n\nTest: build\nChange-Id: I0202271a12106470329180b51a2eea19ceab31af\n"
    },
    {
      "commit": "c88409c2b8e99be8d5f134e260c4c29b1e632b3c",
      "tree": "7e69ee021080525d0f72ecfa87f93242ea479fa2",
      "parents": [
        "e0ced03e62565f42b3005ec34481ef2be7ae2d4b"
      ],
      "author": {
        "name": "Chris Forbes",
        "email": "chrisforbes@google.com",
        "time": "Thu Mar 30 19:47:37 2017 +1300"
      },
      "committer": {
        "name": "Chris Forbes",
        "email": "chrisforbes@google.com",
        "time": "Fri Mar 31 17:50:40 2017 +1300"
      },
      "message": "vulkan: Don\u0027t dequeue in AcquireNextImageKHR if in shared mode\n\nWe\u0027ve already got the shared buffer dequeued. All we need to do here\nis make the semaphore and fence work.\n\nTest: build\nChange-Id: I77a49c312e91b5e0657b87ac2748428c631bdbc0\n"
    },
    {
      "commit": "e0ced03e62565f42b3005ec34481ef2be7ae2d4b",
      "tree": "c53e91097bae221ba81757cc2e64b2efc87ef3f6",
      "parents": [
        "97ef461b1b6277f0f31f00e9c390424eb71392df"
      ],
      "author": {
        "name": "Chris Forbes",
        "email": "chrisforbes@google.com",
        "time": "Thu Mar 30 19:44:15 2017 +1300"
      },
      "committer": {
        "name": "Chris Forbes",
        "email": "chrisforbes@google.com",
        "time": "Fri Mar 31 17:50:40 2017 +1300"
      },
      "message": "vulkan: Only cancel buffers during swapchain creation if not shared\n\nWhen a buffer queue is in shared mode, we\u0027re not allowed to cancel\nbuffers. Just keep the shared buffer dequeued all the time.\n\nTest: build\nChange-Id: I9ad4588ebd792ccdfee247d030579e2ef68aaef1\n"
    },
    {
      "commit": "97ef461b1b6277f0f31f00e9c390424eb71392df",
      "tree": "766fccfcdf924276c332dba7440a0605c7718f0c",
      "parents": [
        "f883564b397bb97b793ccd04be89e4137ab1acd2"
      ],
      "author": {
        "name": "Chris Forbes",
        "email": "chrisforbes@google.com",
        "time": "Thu Mar 30 19:37:50 2017 +1300"
      },
      "committer": {
        "name": "Chris Forbes",
        "email": "chrisforbes@google.com",
        "time": "Fri Mar 31 17:50:40 2017 +1300"
      },
      "message": "vulkan: Set shared \u0026 auto refresh modes earlier\n\nWe\u0027d like to be able to remove the 2-buffer-minimum workaround -- but to\nmake that reasonable, we need the lower layers to know we\u0027re trying to\nuse shared mode. Set the appropriate modes before determining the buffer\ncounts, as a first step toward that.\n\nChange-Id: I83a676fc1a86510abd4521cf9a5e80c0334d5941\nTest: build\n"
    },
    {
      "commit": "f883564b397bb97b793ccd04be89e4137ab1acd2",
      "tree": "f91f0cedd5884e277a72850a7e4be149d8c41137",
      "parents": [
        "2c8fc75cca5e42b4f07b589cef6e78f3dff49ae0"
      ],
      "author": {
        "name": "Chris Forbes",
        "email": "chrisforbes@google.com",
        "time": "Thu Mar 30 19:31:40 2017 +1300"
      },
      "committer": {
        "name": "Chris Forbes",
        "email": "chrisforbes@google.com",
        "time": "Fri Mar 31 17:50:40 2017 +1300"
      },
      "message": "vulkan: Track whether in shared mode in Swapchain\n\nWe need to adjust our behavior in various other places if this is the\ncase.\n\nTest: build\nChange-Id: I749242c4c7f0b19693b6cc5bfcf2dd6e01ed0e5b\n"
    },
    {
      "commit": "2c8fc75cca5e42b4f07b589cef6e78f3dff49ae0",
      "tree": "a1022c69eaf427a7a1a85e339a0ebd19ff95ed24",
      "parents": [
        "34ca5f2ab8cc891957567915def5bc32a36e6d82"
      ],
      "author": {
        "name": "Chris Forbes",
        "email": "chrisforbes@google.com",
        "time": "Fri Mar 17 11:28:32 2017 +1300"
      },
      "committer": {
        "name": "Chris Forbes",
        "email": "chrisforbes@google.com",
        "time": "Fri Mar 31 17:47:51 2017 +1300"
      },
      "message": "vulkan: Always request at least 2 images for swapchain\n\nFor shared mode, we really only care about 1 image, but there are other\nchanges further down the stack that need to be made for that to really\nwork. For now, just tell the bufferqueue that we want 2. After that, we\nstill only dequeue one buffer (as in fact required by BQ in shared mode)\nand construct one VkImage over it for giving back to the vulkan app.\n\n[in V1 we were just smashing the buffer count to 2, which is messier and\nobservable by the app]\n\nChange-Id: Idc0d3c232d56a5c0127f9472611d151f3605939c\nTest: build\n"
    },
    {
      "commit": "34ca5f2ab8cc891957567915def5bc32a36e6d82",
      "tree": "834b6269d40144fe54ef4392ac9ab6b37ae6e1e4",
      "parents": [
        "befdb0ec8cf37173baca1c2ed9924d414ed5fadf",
        "2b2c710d3abf18883fff9d972f8884a898899292"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 30 21:58:58 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 30 21:58:59 2017 +0000"
      },
      "message": "Merge \"Add alpha channel for  the EGLConfig\" into oc-dev"
    },
    {
      "commit": "befdb0ec8cf37173baca1c2ed9924d414ed5fadf",
      "tree": "9addd9d6931bcc7b9500d7af531a9a293303e3a8",
      "parents": [
        "7e73970d7c786db71dd707506ee023a14ac6934e",
        "9255e3ea9b8acae7d34a9cbe58d9e598b71bfe8e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 30 20:57:56 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 30 20:57:57 2017 +0000"
      },
      "message": "Merge \"fix the api style\" into oc-dev"
    },
    {
      "commit": "7e73970d7c786db71dd707506ee023a14ac6934e",
      "tree": "6649bbd73483fc650f9905b4a69203790051e448",
      "parents": [
        "cae605cd5668f8107e340ad8a672c7f034147401",
        "d330a62612e287b63442db2470d89c55ad326f27"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 30 20:22:29 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 30 20:22:30 2017 +0000"
      },
      "message": "Merge \"VR: Pass display size in the HWC observer callback\" into oc-dev"
    },
    {
      "commit": "2b2c710d3abf18883fff9d972f8884a898899292",
      "tree": "8215e316006806a396370d39494bf2a1b9b33272",
      "parents": [
        "0e7305cb0ab3787cd4767aa3c57d6842ac351663"
      ],
      "author": {
        "name": "neo.he",
        "email": "neo.he@mstarsemi.com",
        "time": "Tue Mar 21 11:48:36 2017 +0800"
      },
      "committer": {
        "name": "Cody Northrop",
        "email": "cnorthrop@google.com",
        "time": "Thu Mar 30 14:05:10 2017 -0600"
      },
      "message": "Add alpha channel for  the EGLConfig\n\nIf the alpha channel is not assigned,the framebuffer will be Opaque.\nAnd it will mask the underlying video and make the video invisible\nwhen play video width mediaplayer\n\ncherry-picked from AOSP master\n\nIssue: b/36025630\nTest: clean build and boot PixelC\nChange-Id: If756ad2aaa789f6ddb178333b3e8854f52c8eac3\n"
    },
    {
      "commit": "9255e3ea9b8acae7d34a9cbe58d9e598b71bfe8e",
      "tree": "b2ae419017a0855781ce3f6c67f289143e7135eb",
      "parents": [
        "0e7305cb0ab3787cd4767aa3c57d6842ac351663"
      ],
      "author": {
        "name": "Hendrik Wagenaar",
        "email": "hendrikw@google.com",
        "time": "Thu Mar 30 11:53:32 2017 -0700"
      },
      "committer": {
        "name": "Hendrik Wagenaar",
        "email": "hendrikw@google.com",
        "time": "Thu Mar 30 12:01:21 2017 -0700"
      },
      "message": "fix the api style\n\ngoogle3 c++ style says \"no _ on struct members\"\n\nHappy to oblige\n\nBug: None\nTest: Compiled\nChange-Id: I74b65908339551b703125fe16e5a6d11cd3e9a89\n"
    },
    {
      "commit": "cae605cd5668f8107e340ad8a672c7f034147401",
      "tree": "145744d0c7568e98e12bebfc6125797c7c1f1484",
      "parents": [
        "a615e47ef0ebdf6ab666dbc4c51df33ed11ff00a"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Mar 29 12:10:31 2017 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu Mar 30 11:52:15 2017 -0700"
      },
      "message": "Fix seamless rotation with SurfaceView WM bypass.\n\nFirst a brief review on seamless rotation. In seamless rotation\nthe WM will do the following atomically:\n\n1. Update the display transform.\n2. Set window transforms to make the surfaces at their old size appear\n   at the correct location in the new coordinate space.\n3. Set a flag to undo the transforms when the surfaces resize.\n\nHowever, windows with NATIVE_WINDOW_TRANSFORM_DISPLAY needed to be special cased.\nThe flag will perform step 2 in terms of buffer mapping, but not in terms of bounds\ncomputation. So to compensate the WM would apply the transform to the bounds,\nset these bounds, and then skip applying the transform matrix (as the buffer is\ntransformed by the flag).\n\nNow that the WM can\u0027t see the Camera view, it can\u0027t implement this special logic\nand the Camera view inherits the parent transform. We compensate for this in\nSurfaceFlinger by omitting parent rotation transform components for\nSurfaces with NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY. To some extent this\nbreaks arbitrary rotation for surfaces with NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY\nbut this is essentially ok:\n\n1. We lived with that bug until N-MR1\n2. We fixed it in N-MR1 because the camera was falling back to ROTATE\n   a lot which shouldn\u0027t be happening anymore, following introduction\n   of specifying rotation animation in manifest.\n\nTest: Rotate camera, disable HWC, rotate camera some more. Switch to front camera, repeat.\nBug: 36230754\nBug: 36727915\nChange-Id: Ied390c9cb3968fcce32a84ee7947f699746fdc81\n"
    },
    {
      "commit": "a615e47ef0ebdf6ab666dbc4c51df33ed11ff00a",
      "tree": "783677dfc53968763d95ccce57aa33d560b661d0",
      "parents": [
        "d630e520de9ff4bc50723a7e8f91b6d9be27db1c"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Thu Mar 23 14:41:55 2017 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu Mar 30 11:50:18 2017 -0700"
      },
      "message": "libgui: Make ISurfaceComposerClient a SafeInterface\n\nConverts ISurfaceComposerClient (specifically its Bp/Bn children) to be\nSafeInterfaces such that all parceling/unparceling is done\nautomatically.\n\nTest: Manual testing\nChange-Id: Ie5eee51fc893b0e4d7c3b498fe756306f9a029b5\n"
    },
    {
      "commit": "d630e520de9ff4bc50723a7e8f91b6d9be27db1c",
      "tree": "dea46f4b47ae355efd3f38f0751df0dd3b45df95",
      "parents": [
        "0e7305cb0ab3787cd4767aa3c57d6842ac351663"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Thu Dec 01 15:16:31 2016 -0800"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu Mar 30 11:50:18 2017 -0700"
      },
      "message": "libbinder: Add SafeInterface\n\nAdds SafeInterface, a mechanism which will automatically translate\nIInterface method calls into remote procedure calls, avoiding the need\nto manually write parceling and unparceling code for each method.\n\nTest: binderSafeInterfaceTest\nChange-Id: I0fc7a6eee5528371f40b90d056404cb024166b23\n"
    },
    {
      "commit": "d330a62612e287b63442db2470d89c55ad326f27",
      "tree": "33f20388b013074c3fecde10b5cf9ed220333b00",
      "parents": [
        "0e7305cb0ab3787cd4767aa3c57d6842ac351663"
      ],
      "author": {
        "name": "Daniel Nicoara",
        "email": "dnicoara@google.com",
        "time": "Tue Mar 28 11:48:42 2017 -0400"
      },
      "committer": {
        "name": "Daniel Nicoara",
        "email": "dnicoara@google.com",
        "time": "Thu Mar 30 17:51:05 2017 +0000"
      },
      "message": "VR: Pass display size in the HWC observer callback\n\n1) Unify the places where primary display size is queried.\n2) Allows virtual displays to have a different size than the primary\ndisplay and the size propagates properly to VR HWC and its observer.\n\nBug: None\nTest: Unittest and manually on device\nChange-Id: I7e026c4f9b018d47ca400247beed27841d71c806\n(cherry picked from commit 04c73d23d5e366c9f0337cdaa71bd2d15ebf1f4e)\n"
    },
    {
      "commit": "ae7376516dd9f57137408f11e5fdcc53a15d4d8b",
      "tree": "e2977a7dd27324e855457dbe3a2cba8af3801899",
      "parents": [
        "0e7305cb0ab3787cd4767aa3c57d6842ac351663"
      ],
      "author": {
        "name": "Tony Mak",
        "email": "tonymak@google.com",
        "time": "Thu Mar 30 17:47:09 2017 +0100"
      },
      "committer": {
        "name": "Tony Mak",
        "email": "tonymak@google.com",
        "time": "Thu Mar 30 17:57:36 2017 +0100"
      },
      "message": "Add UID in bugreport\n\nTest: adb bugreport, found uid in logcat.\n\nChange-Id: I90ab10adb05fe835a6ce74bddb0f1b88aacd22a7\nFix: 36339235\n"
    },
    {
      "commit": "0e7305cb0ab3787cd4767aa3c57d6842ac351663",
      "tree": "62eb263add743127f65d67a7121e70d2fee44047",
      "parents": [
        "61a5669b16fc632847af76b1159a6c051ff82087",
        "0e95cad418cff706743f98c1ac649d3378ab0b34"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 30 01:57:31 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 30 01:57:32 2017 +0000"
      },
      "message": "Merge \"vndk/window.h must be C compatible\" into oc-dev"
    },
    {
      "commit": "61a5669b16fc632847af76b1159a6c051ff82087",
      "tree": "8ef7df84cc1a5677a7ef9f46d09d95c278963b79",
      "parents": [
        "b1e51745c2097c88f28a0aeb197526712c96f2f7",
        "010df2088b146a3c0c1fa96ee9477d782a491b20"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 30 01:02:13 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 30 01:02:14 2017 +0000"
      },
      "message": "Merge \"Add 180 rotation to sensord orientation\" into oc-dev"
    },
    {
      "commit": "b1e51745c2097c88f28a0aeb197526712c96f2f7",
      "tree": "890c8916d13bcdd4b71e361606135feebdbc2b16",
      "parents": [
        "98c195251afad8d2db45dd19786f25106e21c271",
        "74cf084cab653537e89f46b90344b3133a94b3a3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 30 00:24:40 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 30 00:24:41 2017 +0000"
      },
      "message": "Merge \"Add basic dvrSurface C API\" into oc-dev"
    },
    {
      "commit": "0e95cad418cff706743f98c1ac649d3378ab0b34",
      "tree": "e52b87a0b5e4fec3b4ff7d54fe3b8ee5b5babf6a",
      "parents": [
        "ad0a84fd2a6e416760909fc7a0658e08ef897e62"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 29 16:06:48 2017 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 29 16:06:48 2017 -0700"
      },
      "message": "vndk/window.h must be C compatible\n\nTest: added a c compatibility test\nBug: 36725813\nChange-Id: Ic7e1c8b50e1818707a9a457d84ed74e7e6c816c8\n"
    },
    {
      "commit": "010df2088b146a3c0c1fa96ee9477d782a491b20",
      "tree": "037bfd6dfd3a303b9deae9584df80b1e9d69c456",
      "parents": [
        "d787577ebf56850565bcf7aad909b364c91a944d"
      ],
      "author": {
        "name": "Hendrik Wagenaar",
        "email": "hendrikw@google.com",
        "time": "Fri Mar 24 13:51:17 2017 -0700"
      },
      "committer": {
        "name": "Hendrik Wagenaar",
        "email": "hendrikw@google.com",
        "time": "Wed Mar 29 15:52:12 2017 -0700"
      },
      "message": "Add 180 rotation to sensord orientation\n\nBug: None\nTest: Manually tested locally\nChange-Id: I135416a2c5be68172ff466bad503261adf29c5a9\n"
    },
    {
      "commit": "98c195251afad8d2db45dd19786f25106e21c271",
      "tree": "4f9133e4aeae4eb0cee326973610cb68dc75aee5",
      "parents": [
        "ad0a84fd2a6e416760909fc7a0658e08ef897e62",
        "0c9dc725d949f8c931eed5dbe6a797f8529732b1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 29 22:31:14 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 29 22:31:14 2017 +0000"
      },
      "message": "Merge \"vrwm: Fix controller input/rendering mismatch\" into oc-dev"
    },
    {
      "commit": "74cf084cab653537e89f46b90344b3133a94b3a3",
      "tree": "8c9026e5f46eec77e900e3feb053038d62577d72",
      "parents": [
        "ad0a84fd2a6e416760909fc7a0658e08ef897e62"
      ],
      "author": {
        "name": "Jiwen \u0027Steve\u0027 Cai",
        "email": "jwcai@google.com",
        "time": "Thu Mar 23 18:53:16 2017 -0700"
      },
      "committer": {
        "name": "Hendrik Wagenaar",
        "email": "hendrikw@google.com",
        "time": "Wed Mar 29 14:46:04 2017 -0700"
      },
      "message": "Add basic dvrSurface C API\n\nTest: Build and flash system\nBug: 36563654\nChange-Id: Id6c79d33d80e719b1d1d7f43aec99aadfad40c03\n"
    },
    {
      "commit": "ad0a84fd2a6e416760909fc7a0658e08ef897e62",
      "tree": "29cd4b4a66026eda51cd061e6e68378255e83809",
      "parents": [
        "92e9112fb47cf849e27d0741d94287c7a4d4f1f6",
        "84d90f316c01aadd1e6e0acbc94d51be24ec211f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Mar 29 21:01:20 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 29 21:01:21 2017 +0000"
      },
      "message": "Merge \"Make sure dvr functions are prepended with dvr\" into oc-dev"
    }
  ],
  "next": "0c9dc725d949f8c931eed5dbe6a797f8529732b1"
}
