)]}'
{
  "log": [
    {
      "commit": "c5594c862014314d33e0174a9ec6e4b6af9938d4",
      "tree": "9d2a45e90b586a83e0086690910385eeacbf8791",
      "parents": [
        "005aecd8b28fc244e9934383a7e73f58b3c0bca6",
        "161410b01a37bcc5522d8e91fe0a743989c86e70"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Thu Sep 07 19:21:17 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 07 19:21:17 2017 +0000"
      },
      "message": "Merge \"Only detach children from a different client than parent.\""
    },
    {
      "commit": "005aecd8b28fc244e9934383a7e73f58b3c0bca6",
      "tree": "1bf91c3ba7d5d4f113dd7284c911132b91f8fe1e",
      "parents": [
        "a7190641533045f916462057692e70798d9fcb04",
        "1f3e4bbbc4a459a848f2912ee1e2ef09e13963ab"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Thu Sep 07 16:39:19 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 07 16:39:19 2017 +0000"
      },
      "message": "Fix race conditions when using mHwc off the main thread am: 6d8110b170\nam: 1f3e4bbbc4\n\nChange-Id: I38a5fac1457245c1fba024179dc34c43814c596b\n"
    },
    {
      "commit": "1f3e4bbbc4a459a848f2912ee1e2ef09e13963ab",
      "tree": "936c5ffaf888f12442462e20b8b1924451ae5d94",
      "parents": [
        "19742a972e149b61da2e19de33da12c505965a69",
        "6d8110b1708171da278782d18886fa1a21971cd9"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Thu Sep 07 16:33:20 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 07 16:33:20 2017 +0000"
      },
      "message": "Fix race conditions when using mHwc off the main thread\nam: 6d8110b170\n\nChange-Id: I1da28635e48581339f67c01306602605935184b2\n"
    },
    {
      "commit": "f88ea9b62158b43109d96470496702583cdb8cd2",
      "tree": "d97f2c1fcaf42d25eed0995f511a709df7dbb2c7",
      "parents": [
        "1449197756e1202bf0c9ec65e8c90f30e2d31502"
      ],
      "author": {
        "name": "Michael Spang",
        "email": "spang@google.com",
        "time": "Tue Sep 05 20:17:16 2017 -0400"
      },
      "committer": {
        "name": "Michael Spang",
        "email": "spang@google.com",
        "time": "Wed Sep 06 20:49:30 2017 +0000"
      },
      "message": "Fix stack use-after-scope in InputReader\n\nREAD of size 4 at 0x0079b1ac3a20 thread T121 (InputReader)\n\nViewport [1] to add: virtual:android:277f1a09-b88d-4d1e-8716-796f114d080b\n   #0 0x79b8820d53 in android::InputReaderConfiguration::getDisplayViewport(android::ViewportType, android::String8 const*, android::DisplayViewport*) const frameworks/native/services/inputflinger/InputReader.cpp:246:39\n   #1 0x79b8843fab in android::TouchInputMapper::configureSurface(long, bool*) frameworks/native/services/inputflinger/InputReader.cpp:3472:22\n   #2 0x79b88411b3 in android::TouchInputMapper::configure(long, android::InputReaderConfiguration const*, unsigned int) frameworks/native/services/inputflinger/InputReader.cpp:3248:9\n   #3 0x79b8825ff3 in android::InputDevice::configure(long, android::InputReaderConfiguration const*, unsigned int) frameworks/native/services/inputflinger/InputReader.cpp:1126:21\n   #4 0x79b8822653 in android::InputReader::refreshConfigurationLocked(unsigned int) frameworks/native/services/inputflinger/InputReader.cpp:612:25\n   #5 0x79b88239fb in android::InputReader::loopOnce() frameworks/native/services/inputflinger/InputReader.cpp:343:13\n   #6 0x79b882d507 in android::InputReaderThread::threadLoop() frameworks/native/services/inputflinger/InputReader.cpp:1004:14\n   #7 0x79d79e6113 in android::Thread::_threadLoop(void*) system/core/libutils/Threads.cpp:747:28\n   #8 0x79da914bbb in android::AndroidRuntime::javaThreadShell(void*) frameworks/base/core/jni/AndroidRuntime.cpp:1199:14\n   #9 0x79da20f31b in __pthread_start(void*) bionic/libc/bionic/pthread_create.cpp:214:18\n   #10 0x79da1c6dff in __start_thread bionic/libc/bionic/clone.cpp:47:16\n\nBug: 65378805\nTest: asan build\nChange-Id: I5a65cb007fe4879ce9635572014a568583a2ef4a\n"
    },
    {
      "commit": "6d8110b1708171da278782d18886fa1a21971cd9",
      "tree": "58e4e4174587c9a182c022111efb2c56a03aea95",
      "parents": [
        "62948d8b502ea6e421ae1f188e34d05db8d973bd"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Thu Aug 31 18:24:21 2017 -0700"
      },
      "committer": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Wed Sep 06 13:38:44 2017 -0700"
      },
      "message": "Fix race conditions when using mHwc off the main thread\n\nIn a few cases we were accessing mHwc off the main thread without\nacquiring mStateLock, resulting in crashes and other incorrect\nbehavior. This CL adds the missing locks. Since the locking semantics\nare somewhat hard to understand, also add a clarifying comment to the\nmHwc member declaration in SurfaceFlinger.h.\n\nBug: 64586546\n\nTest: I manually tested normal surface flinger operation and vr behavior\non different devices, and confirmed everything looks fine. The crashes\nwe saw that were caused by these mHwc race conditions are hard to\nreproduce, so I couldn\u0027t empirically verify this fixes the crash. I\u0027m\nrelying on manual code inspection to confirm the issue is in fact fixed.\n\nRegarding performance, I added profiling code (not part of this CL) to\ncheck for lock contention and hold times with the newly added locks. I\nconfirmed that contention is low, so these calls shouldn\u0027t be\nsignificantly slower as a result of adding the locks. The time spent\nholding these new locks is also low, except for getDisplayColorModes(),\nwhich makes a call to hardware composer service and can in some cases\ntake over a millisecond. That function is called so rarely though, only\nonce at boot, or twice at boot after a fresh flash, that it\u0027s not worth\noptimizing.\n\nChange-Id: I3854779c12a61983aaaecddb9f6316f218e519e3\n"
    },
    {
      "commit": "666d9966501b1882168653b8133289afcc37aeaf",
      "tree": "4e23d22f66060a643e7251af443ec3d971ae7c05",
      "parents": [
        "9ebb7346c4c4033b5937f6ab91d9f006347a7c87",
        "b334e6c1e949961da674afa244a66455bff9184e"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Sep 01 23:07:01 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 01 23:07:01 2017 +0000"
      },
      "message": "Merge \"Remove IPlayer.h, use AIDL generated interface.\""
    },
    {
      "commit": "b334e6c1e949961da674afa244a66455bff9184e",
      "tree": "2aaebed5d6ce5797b46c00efe4a3924c95560e3e",
      "parents": [
        "10e9815fd00c1ebf8ba669dd56ad40a2888c8191"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Tue Aug 08 12:51:42 2017 -0700"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Fri Sep 01 10:19:20 2017 -0700"
      },
      "message": "Remove IPlayer.h, use AIDL generated interface.\n\nPart of migrating our binder interfaces to AIDL, this removes the\nIPlayer implementation and uses the new aidl generated binder interface\nlibrary.\n\nTest: run cts --module CtsMediaTestCases\nBug: 64223827\n\nChange-Id: I5ded5e15681165503d6e2f5a24233add79373f9c\n"
    },
    {
      "commit": "4a71a386e92608362d9bbaba18040936cd9f7155",
      "tree": "82a8d3b8ea769c990db4752bd9f212e67a702379",
      "parents": [
        "c1f9234d95ecec1e4dbbff721b5004b9c5215455",
        "94ffdb29188bdefffa0d070eb9335f750ed1df72"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Aug 30 22:46:51 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 30 22:46:51 2017 +0000"
      },
      "message": "Merge \"surfaceflinger: fix static analyzer complaints\" am: 6d31f4eb4a am: 72e782036d am: 1719e70b04\nam: 94ffdb2918\n\nChange-Id: Ib58556f53240baf86621f3fda651cf62c17c85aa\n"
    },
    {
      "commit": "94ffdb29188bdefffa0d070eb9335f750ed1df72",
      "tree": "2336c3dd8bde6a755f40592721dc3e44671b3911",
      "parents": [
        "66854748d51f72aabc1ba9bd26e380853437eb53",
        "1719e70b04c152762f3d52e0f9133844bf3e8ead"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Aug 30 21:45:16 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 30 21:45:16 2017 +0000"
      },
      "message": "Merge \"surfaceflinger: fix static analyzer complaints\" am: 6d31f4eb4a am: 72e782036d\nam: 1719e70b04\n\nChange-Id: I8a1e49bc6036dab29d439cf79d7dcb4c5d2036ff\n"
    },
    {
      "commit": "72e782036d2d6cff93ff6c7945fb785534cc181f",
      "tree": "383032971832c9b3a5370800cf36b8fc3f168cc5",
      "parents": [
        "2ba1a2a9dce87bdb6fa07f93644452ed86a2e00f",
        "6d31f4eb4ad446c18a97dc5b18cf4540e84c892f"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Wed Aug 30 21:10:15 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 30 21:10:15 2017 +0000"
      },
      "message": "Merge \"surfaceflinger: fix static analyzer complaints\"\nam: 6d31f4eb4a\n\nChange-Id: I3ed3ca3f69e8a44232553afaaaed4c6cab6b3bfd\n"
    },
    {
      "commit": "e87d03f4ae710e012345f80d1b3da291665ef2c7",
      "tree": "19eebf21366a9f182aca5642aba36d694524fc58",
      "parents": [
        "b91fc70ed3e8b58bbfc41baae3101edcab7744cb",
        "6acd06cc5dd5eb6c081d3795c87840b79ece6a40"
      ],
      "author": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Wed Aug 30 03:35:28 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 30 03:35:28 2017 +0000"
      },
      "message": "Merge \"thermalservice: don\u0027t register IThermalCallback service\" into oc-mr1-dev am: c0cfe7a5ee\nam: 6acd06cc5d\n\nChange-Id: Ia7a3b2e37a2d7a42044564032fcc690c1cd80c9c\n"
    },
    {
      "commit": "6acd06cc5dd5eb6c081d3795c87840b79ece6a40",
      "tree": "a65fea30255a0780ad3036b262357e1ae2c59881",
      "parents": [
        "a4311182a9c920062833e3d4a8be3b3cd12f1ca0",
        "c0cfe7a5ee3be385bc84f82679c2aa4d1834fd61"
      ],
      "author": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Wed Aug 30 03:30:46 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 30 03:30:46 2017 +0000"
      },
      "message": "Merge \"thermalservice: don\u0027t register IThermalCallback service\" into oc-mr1-dev\nam: c0cfe7a5ee\n\nChange-Id: I7e6e58a8fa18db4af8c254e4fb9cfffadf9a5df7\n"
    },
    {
      "commit": "406a285ab039e4bd83fc98fc7c3fb4a9107d8dd2",
      "tree": "adcf46317d9254a4abac3cdfaa6cae80f326d396",
      "parents": [
        "5b843179ff2a5e09e35756ec6145220e9f08acf5"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Aug 29 17:57:25 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Aug 29 18:03:59 2017 -0700"
      },
      "message": "surfaceflinger: fix static analyzer complaints\n\nDue to https://bugs.llvm.org/show_bug.cgi?id\u003d34365, the static analyzer\ncomplains about use of copied `sp`s. In this case, the copy is entirely\nunnecessary, since we\u0027re just going to destroy the copied-from sp\nanyway.\n\nSpeed things up a bit + appease the analyzer by moving instead.\n\nBug: 27101951\nTest: mma. Static analyzer no longer complains.\nChange-Id: Idf45abcc5c9b3694ef710e330e88a7c2fd766929\n"
    },
    {
      "commit": "a9f883c6950fe8b6613aab88cd171550ebe44bc0",
      "tree": "43c533aabbf05ce91e91dd99b57cdefcae3a601e",
      "parents": [
        "4fe5ade750074176fa96321ab5763725669484ec",
        "c9674336c053c071022279211eeffc6c9e7c1e99"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Tue Aug 29 00:46:11 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 29 00:46:11 2017 +0000"
      },
      "message": "Merge \"Traverse all layers to check if parent exists to add child layer.\""
    },
    {
      "commit": "c9674336c053c071022279211eeffc6c9e7c1e99",
      "tree": "348e4b96940b294969340200122102bd5ff85166",
      "parents": [
        "e04a8005193b6bbdfaf924373acb927cb75dc072"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Aug 28 12:32:18 2017 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Aug 28 15:20:12 2017 -0700"
      },
      "message": "Traverse all layers to check if parent exists to add child layer.\n\nWith the current implementation, when adding a child layer, the code\nonly looks in the layersSortedByZ vector to see if the parent exists.\nThe layersSortedByZ vector only contains the top most layers and not the\nchild layers. The current behavior prevents creating child layers that\nhave a parent that is also a child layer. This won\u0027t allow for nested child\nlayers. Instead, traverse the list of layers, which will include looking\nat the child layers, to see if the parent layer exists.\n\nTest: NestedChildren test in Transaction_test\n\nChange-Id: I6c1a773b65e450010733f74f459fc327c7af3aea\n"
    },
    {
      "commit": "3ddccdb183aa8b0f83b8f6e4444fcdc1cfd3fb6e",
      "tree": "578098b9883692d8411f4e515baaad28b09232b8",
      "parents": [
        "c7dc3784a3302b74b895c2e8318adc62b3a0db4d"
      ],
      "author": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Sat Aug 26 00:53:06 2017 -0700"
      },
      "committer": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Sat Aug 26 01:17:40 2017 -0700"
      },
      "message": "thermalservice: don\u0027t register IThermalCallback service\n\nThis service is only to be registered with IThermal 1.1 HALs via a\nregistration method, not for lookup via hwservicemanager.\n\nBug: 64986538\nBug: 30982366\nTest: manual on w\nChange-Id: I2c14a454dd4446267529f2e1cbf99ff23fbd1737\n"
    },
    {
      "commit": "3f05602a8c33a4b66a47dc077eaba95f9f1e3977",
      "tree": "546c84007792b06e8c7369514c563dcb70002281",
      "parents": [
        "c7bad6edfcf41d0e239ed7087934ea1210dad58b"
      ],
      "author": {
        "name": "David Hanna Jr",
        "email": "dhanna@google.com",
        "time": "Thu Jul 27 19:19:15 2017 -0700"
      },
      "committer": {
        "name": "David Hanna",
        "email": "dhanna@google.com",
        "time": "Fri Aug 25 21:57:09 2017 +0000"
      },
      "message": "test-hwc2: Added virtual Display tests\n\nVirtualDisplay tests added.\nTest: Ran on (heavily modified) ryu\nChange-Id: I5cc92d11d4cde6c3407d71652f87ea3c3fb63228\n"
    },
    {
      "commit": "e04a8005193b6bbdfaf924373acb927cb75dc072",
      "tree": "9fa4c2bda732441509474876a76c99a375c40adc",
      "parents": [
        "f47f71ba18171662eb34361d9398318aa0e277b7",
        "0617894190ea0c3ee50889bee1d4df0f369b0761"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Fri Aug 25 15:14:27 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 25 15:14:27 2017 +0000"
      },
      "message": "Merge \"Add a re-parent function to re-parent a specific child.\""
    },
    {
      "commit": "4cab6aac0dca13a79701e86ac6ff3cbb1584a8ab",
      "tree": "a0dbe02e7e424eedf9d15e47d736a9c93b06a4b3",
      "parents": [
        "54fd92f28fd81cb3b14829286663f254c77fb3d4"
      ],
      "author": {
        "name": "David Hanna Jr",
        "email": "dhanna@google.com",
        "time": "Tue Aug 15 13:49:24 2017 -0700"
      },
      "committer": {
        "name": "David Hanna",
        "email": "dhanna@google.com",
        "time": "Thu Aug 24 22:59:14 2017 +0000"
      },
      "message": "test-hwc2: Fix usage flags in test-hwc2\n\nThis uses 64-bit usage flags as 32-bit usage is depreciated and was\npartially causing problems with ryu\n\nTest: ran on ryu\nChange-Id: I56c2c3da1ae94d97e2accbe236333f46803aea14\n"
    },
    {
      "commit": "8c3b6ac2012ad6731f214fca6fea73fd13619d0c",
      "tree": "b94e15ff30c0574f698ee9ce944634c5bd6296e9",
      "parents": [
        "4908fe5617855aace933ad25b1071170e2606688"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Aug 24 10:25:42 2017 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Aug 24 10:25:44 2017 -0700"
      },
      "message": "Fix layer Z dump\n\n%u -\u003e %d to match that Z is an int32_t\n\nTest: manual\n\nChange-Id: Ia7f1f3575953e63eeb77a2f776142007f23ad1a4\n"
    },
    {
      "commit": "0617894190ea0c3ee50889bee1d4df0f369b0761",
      "tree": "77cd6f74a747fa53216f7b55899030a45c35910a",
      "parents": [
        "4908fe5617855aace933ad25b1071170e2606688"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Jul 27 10:25:59 2017 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Aug 23 11:28:02 2017 -0700"
      },
      "message": "Add a re-parent function to re-parent a specific child.\n\nThis is similar to reparentChildren, but the reparentChild will\nonly re-parent a specific child to the new parent and not all\nchildren.\n\nTest: Added test in Transaction_test for reparentChild.\n\nChange-Id: I4275e0d5f1d5601b489956753c78a56d1a5d4c1c\n"
    },
    {
      "commit": "1d8d412b5d8c294c7a141bd62141c9e1750dcf73",
      "tree": "ce4b212308e79dcec9135b17c77fbacbe73b1ddf",
      "parents": [
        "a33670dc4df38feff7b6193b82dcc3fc21700fe7"
      ],
      "author": {
        "name": "David Hanna Jr",
        "email": "dhanna@google.com",
        "time": "Tue Aug 15 19:53:57 2017 -0700"
      },
      "committer": {
        "name": "David Hanna",
        "email": "dhanna@google.com",
        "time": "Fri Aug 18 19:28:13 2017 +0000"
      },
      "message": "test-hwc2: Corrected rotation to be clock-wise\n\nTest: Ran on (heavily modified ryu)\n\nBug: 64723426\nChange-Id: I203fb313b6b2c865f6d9a0920a2ffd3714be5e96\n"
    },
    {
      "commit": "11a6204760b295648ee2735f8e66c56dec9e38f5",
      "tree": "f7a0c38d84b3926f5ba6a95f47bfd89f2c6c1818",
      "parents": [
        "0cfef3c4f65e3b6dc5447aca16d4d9c57847bdb3",
        "d211903f16a3f1292b0d69f99510deafca2c89c9"
      ],
      "author": {
        "name": "Corey Tabaka",
        "email": "eieio@google.com",
        "time": "Thu Aug 17 07:04:11 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 17 07:04:11 2017 +0000"
      },
      "message": "Merge \"Add cpuset switching to scheduler policy mechanism.\" into oc-mr1-dev am: 1c6fdd5ea6\nam: d211903f16\n\nChange-Id: I94b0c41d596015a9dbb19c4818828bbfb66217c4\n"
    },
    {
      "commit": "d211903f16a3f1292b0d69f99510deafca2c89c9",
      "tree": "966c9c44918dcaaa0ba4902e838d27a67bf7eb29",
      "parents": [
        "f7a6a461668186a3dd19517b602ad80f0387e658",
        "1c6fdd5ea6da420f2904e41ff28112496da35962"
      ],
      "author": {
        "name": "Corey Tabaka",
        "email": "eieio@google.com",
        "time": "Thu Aug 17 04:05:23 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 17 04:05:23 2017 +0000"
      },
      "message": "Merge \"Add cpuset switching to scheduler policy mechanism.\" into oc-mr1-dev\nam: 1c6fdd5ea6\n\nChange-Id: I0e1c35816de46929a1e25c2046bf70d9b2c5ab14\n"
    },
    {
      "commit": "92f1377ef1abfd1dfda7e2ec7493f6f779d7d533",
      "tree": "c7c002288670eb723fcfd538f495e7c4a539bf53",
      "parents": [
        "1e35190fc711256b867ca2bb17b2ff69eb9f072c"
      ],
      "author": {
        "name": "Corey Tabaka",
        "email": "eieio@google.com",
        "time": "Wed Aug 16 14:52:01 2017 -0700"
      },
      "committer": {
        "name": "Corey Tabaka",
        "email": "eieio@google.com",
        "time": "Wed Aug 16 16:41:08 2017 -0700"
      },
      "message": "Add cpuset switching to scheduler policy mechanism.\n\nAdd the ability to add a cpuset to the supported scheduler policies.\nThis enables services that use the scheduler policy API to run in\nthe correct cpuset without explicitly requesting a cpuset via the\ndeprecated API.\n\nAdd tests to confirm the correct operation and fix flaky test due\nto racing with thread.join().\n\nAlso fix log messages on performanced startup related to failure to\naccess /proc/\u003cpid\u003e directories for certain tasks: this failure is\nexpected due to sepolicy settings and the log spam is unnecessary.\n\nBug: 64337476\nTest: performance_service_tests passes.\nChange-Id: I8a82852e63e39fe72fa3b731e03237f3652cddc7\n"
    },
    {
      "commit": "8ab935040c01e6591fa8c478ce6f8b4058b5e314",
      "tree": "803d5eba5ba8db72cb1ec9cf1e30a638952d9494",
      "parents": [
        "deb53e7ae894c2ce0ee51b7eb6de65c0d63a5497",
        "c8a1e48ea0a0eddacdbccc58a2b087e4d925cedd"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Aug 16 21:25:45 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 16 21:25:45 2017 +0000"
      },
      "message": "Merge \"surfaceflinger: fix z-relative layer destruction\" into oc-mr1-dev am: 11e66edfad\nam: c8a1e48ea0\n\nChange-Id: I01182bd305e160e057694151edcabf4c2d8fee8a\n"
    },
    {
      "commit": "c8a1e48ea0a0eddacdbccc58a2b087e4d925cedd",
      "tree": "7100089fe90947e0698ba39492ed99059f59ddc9",
      "parents": [
        "eebd76a6094cd9f5808ebd21245e20e3d01468f6",
        "11e66edfad9fe7aa370e99ceeadbafdd7d563f81"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Aug 16 18:11:13 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 16 18:11:13 2017 +0000"
      },
      "message": "Merge \"surfaceflinger: fix z-relative layer destruction\" into oc-mr1-dev\nam: 11e66edfad\n\nChange-Id: I8210bbb66165da88aa3331a31f134f0088d9f01e\n"
    },
    {
      "commit": "11e66edfad9fe7aa370e99ceeadbafdd7d563f81",
      "tree": "a9efeaf88945fd86baa2df4062d8f46e9b2cbb72",
      "parents": [
        "19d9cf4dd83107a84ba35b883939ad47b0fd147d",
        "c665702cea06c5c42360b7f66fed1693127e6680"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Aug 16 15:57:15 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 16 15:57:15 2017 +0000"
      },
      "message": "Merge \"surfaceflinger: fix z-relative layer destruction\" into oc-mr1-dev"
    },
    {
      "commit": "76f33e7dd4cc37d5fbdd06a3898efdfe7564403a",
      "tree": "19d1b4beb2cee3d5fb8c311f41b06f83b6258777",
      "parents": [
        "53ab1315c4418e489535c84981a18ee6f1b13f90",
        "1c901cdd7a9273e160fd1c27ad9e279b5eabfba0"
      ],
      "author": {
        "name": "Thierry Strudel",
        "email": "tstrudel@google.com",
        "time": "Wed Aug 16 02:05:14 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 16 02:05:14 2017 +0000"
      },
      "message": "Revert \"Postpone color mode change until after boot animation\" am: 2924d01304 am: 53bb4e138c\nam: 1c901cdd7a\n\nChange-Id: I13001e6be0f197db6105a1b7f397865699411288\n"
    },
    {
      "commit": "1c901cdd7a9273e160fd1c27ad9e279b5eabfba0",
      "tree": "22341baa1056897be5c1216e5a74a5d253199112",
      "parents": [
        "d58286e98e6fc91e0e56cd542cb7afcf99c50071",
        "53bb4e138c95045ab8fc5f5dedd47dd1012d6ef2"
      ],
      "author": {
        "name": "Thierry Strudel",
        "email": "tstrudel@google.com",
        "time": "Wed Aug 16 01:59:56 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 16 01:59:56 2017 +0000"
      },
      "message": "Revert \"Postpone color mode change until after boot animation\" am: 2924d01304\nam: 53bb4e138c\n\nChange-Id: If76cb24f722ab33c9c36e799f025fa02c2baf5ce\n"
    },
    {
      "commit": "53bb4e138c95045ab8fc5f5dedd47dd1012d6ef2",
      "tree": "8d834cc6ea711fd0e85ebddba0db4e51cc18674f",
      "parents": [
        "d2bc3ac8c4d7e71975a8c99762b63307a5e6e449",
        "2924d01304dba0b714c556b14e45e34f70472e96"
      ],
      "author": {
        "name": "Thierry Strudel",
        "email": "tstrudel@google.com",
        "time": "Wed Aug 16 01:46:14 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 16 01:46:14 2017 +0000"
      },
      "message": "Revert \"Postpone color mode change until after boot animation\"\nam: 2924d01304\n\nChange-Id: If182308e0602e3e5af0998698f0e428f7c3ff18d\n"
    },
    {
      "commit": "53ab1315c4418e489535c84981a18ee6f1b13f90",
      "tree": "09a8156d90b739b701b41ddc1825b79c4b9463fa",
      "parents": [
        "b4146f93e2898c8c74ec3b7d51f173903a1eb201",
        "152279d2725cd59369bcdf70f9622b011cae5a14"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 15 22:08:35 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 15 22:08:35 2017 +0000"
      },
      "message": "Merge \"Add method to get surface dataspace\""
    },
    {
      "commit": "c665702cea06c5c42360b7f66fed1693127e6680",
      "tree": "492521de4c7a73aeb48a08c7d670bed9e7bececa",
      "parents": [
        "d2bc3ac8c4d7e71975a8c99762b63307a5e6e449"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Aug 15 11:18:17 2017 -0700"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Aug 15 14:20:49 2017 -0700"
      },
      "message": "surfaceflinger: fix z-relative layer destruction\n\nLayer::commitTransaction is called before Layer::onRemoved.  The\nremoval of a layer from another layer\u0027s zOrderRelatives is not\nreflected in Layer::mDrawingState until Layer::commitTransaction is\ncalled again.  As a result, we may draw a removed layer, which is\nnot supposed to own any HWC or GL resource.\n\nAdd Layer::onRemovedFromCurrentState that is called when a layer is\nremoved from mCurrentState to mLayersPendingRemoval.  Move\nzOrderRelative* updates from onRemoved to the new\nonRemovedFromCurrentState, and set eTraversalNeeded as needed.\n\nAlso fix Layer::~Layer to restore the old behavior and destroy all\nstale HWC layers just in case.\n\nBug: 64572777\nTest: manual and AUPT\nChange-Id: I546c5b4b7ecac0937fead655733402fae664331c\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": "2924d01304dba0b714c556b14e45e34f70472e96",
      "tree": "ed7aeed10ffb568ed9e33fb5a5f30c6e527ad2d8",
      "parents": [
        "34ec404b4baf067ce6dd6ca6c7de824d29f280bc"
      ],
      "author": {
        "name": "Thierry Strudel",
        "email": "tstrudel@google.com",
        "time": "Mon Aug 14 15:19:37 2017 -0700"
      },
      "committer": {
        "name": "Patrick Tjin",
        "email": "pattjin@google.com",
        "time": "Tue Aug 15 10:33:15 2017 -0700"
      },
      "message": "Revert \"Postpone color mode change until after boot animation\"\n\nThis reverts commit c53d3558d55dfd1d1c424b0d632fea693113e83e.\n\nTo have better control on when the color shift is happening, the\nbootloader asset will be aligned with the Android OS applied\nsaturation. So apply the color setting as soon as SF is up.\n\nBug: 63520186\nBug: 63823274\nTest: Verify that sRGB is applied at the start of boot animation\nChange-Id: I611eb61266c909fde50e7ea2b4c1314541228736\n"
    },
    {
      "commit": "b0c44466da25301fbee5b69ea775eb70a24efea9",
      "tree": "a60d4c62a5c672c84b145c9a6718901dc4224648",
      "parents": [
        "2babde084b9afaca7c2c715b59cf16098a545c81",
        "7c47163851a9f20dea67b50f2e8abe57f6ea3f56"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Tue Aug 15 10:28:02 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 15 10:28:02 2017 +0000"
      },
      "message": "Merge \"Mark libEGL, GLESv1_CM, GLESv2, and GLESv3 as LLNDK\" into oc-mr1-dev am: d2bc3ac8c4\nam: 7c47163851\n\nChange-Id: I246fce7ec09f2969a2691b2b2ccb1c3c7af37a40\n"
    },
    {
      "commit": "7c47163851a9f20dea67b50f2e8abe57f6ea3f56",
      "tree": "7d1f6e5be2e4181ee05b8c92c13f5c4eaeaddcf8",
      "parents": [
        "e33504a9078cff660073bef8fcfb30976db63d33",
        "d2bc3ac8c4d7e71975a8c99762b63307a5e6e449"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Tue Aug 15 10:22:56 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 15 10:22:56 2017 +0000"
      },
      "message": "Merge \"Mark libEGL, GLESv1_CM, GLESv2, and GLESv3 as LLNDK\" into oc-mr1-dev\nam: d2bc3ac8c4\n\nChange-Id: I2ac5a8e4bf53de7f8a7e47ea77c8818c6f036c66\n"
    },
    {
      "commit": "d2bc3ac8c4d7e71975a8c99762b63307a5e6e449",
      "tree": "dfa19617db99b5b7210ba57f803411193f1e4c0b",
      "parents": [
        "9afe0a990cdf1433e14340c8f5ba6b4ddd94ef60",
        "00b15b8f223976d016e16536e4720771ef634695"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 15 10:16:18 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 15 10:16:18 2017 +0000"
      },
      "message": "Merge \"Mark libEGL, GLESv1_CM, GLESv2, and GLESv3 as LLNDK\" into oc-mr1-dev"
    },
    {
      "commit": "434113b8e4f9b956465ddf50b00ca1ff022e9dff",
      "tree": "ffcb0c3088d1af95abee4d3f928ed3cec7418144",
      "parents": [
        "c50be85de01a61cbb004837e960d9db294436969",
        "40cf2a4326f49ea24a92a5bf4237086a09075116"
      ],
      "author": {
        "name": "Daniel Nicoara",
        "email": "dnicoara@google.com",
        "time": "Sat Aug 12 03:50:31 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Aug 12 03:50:31 2017 +0000"
      },
      "message": "Merge \"Signal display refresh when a VR_HWC client is registered\" into oc-mr1-dev\nam: 40cf2a4326\n\nChange-Id: I5bef7ecedbbd1a607e52d1e5ec83f204b8cd853e\n"
    },
    {
      "commit": "c50be85de01a61cbb004837e960d9db294436969",
      "tree": "ad3f3407e96f50ac2869b1d98048e5f1a7dc533b",
      "parents": [
        "319682ef5a2bdf7fc0ad718a79d20cd34586be99",
        "64c9a3ee48208183f90ed9b2c5112ef796cce6e2"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Sat Aug 12 03:50:00 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Aug 12 03:50:00 2017 +0000"
      },
      "message": "Merge \"libgui: support 64-bit BQ consumer usage\" into oc-mr1-dev\nam: 64c9a3ee48\n\nChange-Id: I2f28217c4c372c57b1a3b4ca64e499c7a1b34459\n"
    },
    {
      "commit": "a43d602906ca59d3ea09d9ddd8e78ccb37bde36f",
      "tree": "c7b6aa3fd27ca7df044a0f62d6434a0254c8f9c6",
      "parents": [
        "5a9b7c9cacc0a1bb278059bc19e0ba1cc582cd8f",
        "042baecf01205183376c55f734d7623d4ff96e21"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 11 08:59:31 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 11 08:59:31 2017 +0000"
      },
      "message": "Merge \"Checking exisitence before calling editValueFor in SensorDevice\""
    },
    {
      "commit": "042baecf01205183376c55f734d7623d4ff96e21",
      "tree": "768f32e3756d008d1d7c710187f9a7bf66c408c9",
      "parents": [
        "48af4c688182afc9a2890dc629153a43df808841"
      ],
      "author": {
        "name": "Peng Xu",
        "email": "pengxu@google.com",
        "time": "Wed Aug 09 19:28:27 2017 -0700"
      },
      "committer": {
        "name": "Peng Xu",
        "email": "pengxu@google.com",
        "time": "Fri Aug 11 00:25:29 2017 -0700"
      },
      "message": "Checking exisitence before calling editValueFor in SensorDevice\n\nBug: 26320541\nTest: compiles, test a few sensor and they all works\nChange-Id: If0859e7560419f3955f29ae108f9268d0a2bbaa9\n"
    },
    {
      "commit": "4c39e35301475c482cfbcf3e8a255e356a2caf9b",
      "tree": "847aa28a17503ee1f3ef0fe93c7a8f3099b60344",
      "parents": [
        "2c9e2f715bf5aabf650078e209cef5c50f162ca3",
        "588baa0c42f7f72316cb57beeea21d271d6ce848"
      ],
      "author": {
        "name": "Peng Xu",
        "email": "pengxu@google.com",
        "time": "Fri Aug 11 01:59:30 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 11 01:59:30 2017 +0000"
      },
      "message": "Merge \"Adding OWNERS files for services/sensorservice, libs/sensor\""
    },
    {
      "commit": "00b15b8f223976d016e16536e4720771ef634695",
      "tree": "45134dd4d7c3fdfddc81275f9e9147b4b0a1dd95",
      "parents": [
        "df0518c13b8d7e3faf0d491db5fa4e44afa0e787"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Thu Aug 10 20:30:56 2017 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Fri Aug 11 10:08:54 2017 +0900"
      },
      "message": "Mark libEGL, GLESv1_CM, GLESv2, and GLESv3 as LLNDK\n\nThey are used by libRSDriver and libRS_internal which are VNDK-SP\nlibraries. Therefore, the EGL/GLES libs must be LLNDK or VNDK-SP. We\nchoose to make them as LLNDK since they already have stable ABIs (as\nthey are NDK).\n\nIn addition, two more functions of libEGL are exposed to vendors\n\neglQueryStringImplementationANDROID and eglDupNativeFenceFDANDROID are\nnon-NDK symbols but are being used by libgui, which is a library marked\nwith vendor_available:true. In order to provide the symbols to the\nlibrary, they are added to the map.txt file and tagged as \"# vndk\" so\nthat they are exposed only when built for vendor libs (and hidden when\nbuilt for NDK).\n\nFurthermore, eglQueryStringImplementationANDROID is changed to C-symbol\nin order to be mentioned in the map.txt file, where C++ mangled symbol\nname can\u0027t be used.\n\nBug: 64425518\nTest: BOARD_VNDK_VERSION\u003dcurrent m -j libRSDriver.vendor\nTest: BOARD_VNDK_VERSION\u003dcurrent m -j libRS_internal.vendor\nChange-Id: I4d5bcd5f72fb05a7908887f5192de70fd1d8c8f1\n"
    },
    {
      "commit": "588baa0c42f7f72316cb57beeea21d271d6ce848",
      "tree": "1966a2db23cd64a8b3ab134067090b4556b939cb",
      "parents": [
        "48af4c688182afc9a2890dc629153a43df808841"
      ],
      "author": {
        "name": "Peng Xu",
        "email": "pengxu@google.com",
        "time": "Thu Aug 10 17:39:55 2017 -0700"
      },
      "committer": {
        "name": "Peng Xu",
        "email": "pengxu@google.com",
        "time": "Thu Aug 10 17:42:28 2017 -0700"
      },
      "message": "Adding OWNERS files for services/sensorservice, libs/sensor\n\nTest: n/a\nChange-Id: I696adec7831f95f22fc91988e644e55392c60b46\n"
    },
    {
      "commit": "f26579863da884f7b8603965cf849b080a5acf75",
      "tree": "b679dad5df09084fd079c7153978a48459710cf2",
      "parents": [
        "b97da6db70a333d3eea781483dbcf58599724483",
        "96200969af02adff6de0f77211a03fdb335b17e2"
      ],
      "author": {
        "name": "Daniel Nicoara",
        "email": "dnicoara@google.com",
        "time": "Thu Aug 10 23:02:21 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 10 23:02:21 2017 +0000"
      },
      "message": "Merge \"Signal display refresh when a VR_HWC client is registered\" into oc-mr1-dev am: 40cf2a4326\nam: 96200969af\n\nChange-Id: If65ac1aded0bbe59e776167d0283876659057ab7\n"
    },
    {
      "commit": "96200969af02adff6de0f77211a03fdb335b17e2",
      "tree": "32a4bfcb18065ba1c531d0a6296db7eec8ea080d",
      "parents": [
        "57f89fd7718c9aeb0285dd25a6aec76c94ad85bb",
        "40cf2a4326f49ea24a92a5bf4237086a09075116"
      ],
      "author": {
        "name": "Daniel Nicoara",
        "email": "dnicoara@google.com",
        "time": "Thu Aug 10 22:47:37 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 10 22:47:37 2017 +0000"
      },
      "message": "Merge \"Signal display refresh when a VR_HWC client is registered\" into oc-mr1-dev\nam: 40cf2a4326\n\nChange-Id: I7f7d7ea383b96900bd43e208ef45a74ee3d4ea07\n"
    },
    {
      "commit": "57f89fd7718c9aeb0285dd25a6aec76c94ad85bb",
      "tree": "292a352b30d5fe13bd1de34a0d59c6da0a8c2996",
      "parents": [
        "7321cedf0e2c69463ae881fa04c46b818332e2f7",
        "64c9a3ee48208183f90ed9b2c5112ef796cce6e2"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Aug 10 22:47:12 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 10 22:47:12 2017 +0000"
      },
      "message": "Merge \"libgui: support 64-bit BQ consumer usage\" into oc-mr1-dev\nam: 64c9a3ee48\n\nChange-Id: I19a73bf1e6d82e64e8d8f3165e47f0ad73651e98\n"
    },
    {
      "commit": "40cf2a4326f49ea24a92a5bf4237086a09075116",
      "tree": "4ac0f042f8ae74b53c6a112e1e7419633c260aad",
      "parents": [
        "64c9a3ee48208183f90ed9b2c5112ef796cce6e2",
        "8fc9822f3b20f6547c3398c55e8b70c4f3940db9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 10 19:12:13 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 10 19:12:13 2017 +0000"
      },
      "message": "Merge \"Signal display refresh when a VR_HWC client is registered\" into oc-mr1-dev"
    },
    {
      "commit": "9a2a21243cb7febdeff6813c0c57fd8d9563264b",
      "tree": "c3ce7ea6a18bd4324aec93744377be86d18855ee",
      "parents": [
        "13ededd7ff16015444d8215b4614a558d556e85d",
        "6030eaa504cda1df2515e428611f4cf8a6c84c33"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Aug 10 15:20:03 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 10 15:20:03 2017 +0000"
      },
      "message": "Merge \"libgui: support 64-bit BQ consumer usage\" into oc-mr1-dev am: 64c9a3ee48\nam: 6030eaa504\n\nChange-Id: I41b0dbd4894d379c68dfac6f8fb9599c723765b8\n"
    },
    {
      "commit": "6030eaa504cda1df2515e428611f4cf8a6c84c33",
      "tree": "a16415a1cdae2248b24b28c20dd13f834294753b",
      "parents": [
        "87d7e196ef0b733ff19dc4c63c04774afd7de35f",
        "64c9a3ee48208183f90ed9b2c5112ef796cce6e2"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Aug 10 15:16:33 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 10 15:16:33 2017 +0000"
      },
      "message": "Merge \"libgui: support 64-bit BQ consumer usage\" into oc-mr1-dev\nam: 64c9a3ee48\n\nChange-Id: I683b14b9070e0536217f67f6f4369bdecd8114be\n"
    },
    {
      "commit": "64c9a3ee48208183f90ed9b2c5112ef796cce6e2",
      "tree": "28ff2c4465fbea07f10c6066116c4db2815d1e00",
      "parents": [
        "aae3f2cb018e37d1128e5370fdefef4b7cc65dbc",
        "e2786ea5aec3a12d948feb85ffbb535fc89c0fe6"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 10 15:12:01 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 10 15:12:01 2017 +0000"
      },
      "message": "Merge \"libgui: support 64-bit BQ consumer usage\" into oc-mr1-dev"
    },
    {
      "commit": "3bc82e4c44f7d76c4d45d47ce3cefeece24de15c",
      "tree": "660bf106ff51b47e987e7f5a2ebb30f7ea788106",
      "parents": [
        "5e371614708ef0a3164813bb359ae846ae610666",
        "b02664ddc146893e6bbe7939ee2b948d54e7166a"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Wed Aug 09 23:59:11 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 09 23:59:11 2017 +0000"
      },
      "message": "Merge \"Use a separate hwcomposer hidl instance for vr flinger\" into oc-mr1-dev-plus-aosp"
    },
    {
      "commit": "359d3ab4abc8d0ec59c33068f8a69398af2181c0",
      "tree": "c5068b05f5fadefc9bba877e484787c6c3cc7be2",
      "parents": [
        "50bd661d4bac9c903946f95ead7770252032bd1a",
        "65186a22bec1af2ef06dff3f94e62689c9b9829b"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Wed Aug 09 23:40:08 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 09 23:40:08 2017 +0000"
      },
      "message": "Merge \"Fix out-of-order transactions (2/2)\" into oc-dr1-dev am: 0436b01d1b\nam: 65186a22be\n\nChange-Id: I4323d366104435fa5e04262d546fd00be06722e2\n"
    },
    {
      "commit": "b02664ddc146893e6bbe7939ee2b948d54e7166a",
      "tree": "3377693a4f147d4c9193d3aa74b5752fc5f6fe24",
      "parents": [
        "50bd661d4bac9c903946f95ead7770252032bd1a"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Wed Jul 26 18:48:28 2017 -0700"
      },
      "committer": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Wed Aug 09 16:28:52 2017 -0700"
      },
      "message": "Use a separate hwcomposer hidl instance for vr flinger\n\nImprove robustness of vr flinger \u003c--\u003e surface flinger switching by\nhaving vr flinger use a separate hardware composer hidl instance instead\nof sharing the instance with surface flinger. Sharing the hardware\ncomposer instance has proven to be error prone, with situations where\nboth the vr flinger thread and surface flinger main thread would write\nto the composer at the same time, causing hard to diagnose\ncrashes (b/62925812).\n\nInstead of sharing the hardware composer instance, when switching to vr\nflinger we now delete the existing instance, create a new instance\ndirected to the vr hardware composer shim, and vr flinger creates its\nown composer instance connected to the real hardware composer. By\ncreating a separate composer instance for vr flinger, crashes like the\nones found in b/62925812 are no longer impossible.\n\nMost of the changes in this commit are related to enabling surface\nflinger to delete HWComposer instances cleanly. In particular:\n\n- Previously the hardware composer callbacks (which come in on a\n  hwbinder thread) would land in HWC2::Device and bubble up to the\n  SurfaceFlinger object. But with the new behavior the HWC2::Device\n  might be dead or in the process of being destroyed, so instead we have\n  SurfaceFlinger receive the composer callbacks directly, and forward\n  them to HWComposer and HWC2::Device. We include a composer id field in\n  the callbacks so surface flinger can ignore stale callbacks from dead\n  composer instances.\n\n- Object ownership for HWC2::Display and HWC2::Layer was shared by\n  passing around shared_ptrs to these objects. This was problematic\n  because they referenced and used the HWC2::Device, which can now be\n  destroyed when switching to vr flinger. Simplify the ownership model\n  by having HWC2::Device own (via unique_ptr\u003c\u003e) instances of\n  HWC2::Display, which owns (again via unique_ptr\u003c\u003e) instances of\n  HWC2::Layer. In cases where we previously passed std::shared_ptr\u003c\u003e to\n  HWC2::Display or HWC2::Layer, instead pass non-owning HWC2::Display*\n  and HWC2::Layer* pointers. This ensures clean composer instance\n  teardown with no stale references to the deleted HWC2::Device.\n\n- When the hardware composer instance is destroyed and the HWC2::Layers\n  are removed, notify the android::Layer via a callback, so it can\n  remove the HWC2::Layer from its internal table of hardware composer\n  layers. This removes the burden to explicitly clear out all hardware\n  composer layers when switching to vr flinger, which has been a source\n  of bugs.\n\n- We were missing an mStateLock lock in\n  SurfaceFlinger::setVsyncEnabled(), which was necessary to ensure we\n  were setting vsync on the correct hardware composer instance. Once\n  that lock was added, surface flinger would sometimes deadlock when\n  transitioning to vr flinger, because the surface flinger main thread\n  would acquire mStateLock and then EventControlThread::mMutex, whereas\n  the event control thread would acquire the locks in the opposite\n  order. The changes in EventControlThread.cpp are to ensure it doesn\u0027t\n  hold a lock on EventControlThread::mMutex while calling\n  setVsyncEnabled(), to avoid the deadlock.\n\nI found that without a composer callback registered in vr flinger the\nvsync_event file wasn\u0027t getting vsync timestamps written, so vr flinger\nwould get stuck in an infinite loop trying to parse a vsync\ntimestamp. Since we need to have a callback anyway I changed the code in\nhardware_composer.cpp to get the vsync timestamp from the callback, as\nsurface flinger does. I confirmed the timestamps are the same with\neither method, and this lets us remove some extra code for extracting\nthe vsync timestamp that (probably) wasn\u0027t compatible with all devices\nwe want to run on anyway. I also added a timeout to the vysnc wait so\nwe\u0027ll see an error message in the log if we fail to wait for vsync,\ninstead of looping forever.\n\nBug: 62925812\n\nTest: - Confirmed surface flinger \u003c--\u003e vr flinger switching is robust by\n        switching devices on and off hundreds of times and observing no\n        hardware composer related issues, surface flinger crashes, or\n        hardware composer service crashes.\n\n- Confirmed 2d in vr works as before by going through the OOBE flow on a\n  standalone. This also exercises virtual display creation and usage\n  through surface flinger.\n\n- Added logs to confirm perfect layer/display cleanup when destroying\n  hardware composer instances.\n\n- Tested normal 2d phone usage to confirm basic layer create/destroy\n  functionality works as before.\n\n- Monitored surface flinger file descriptor usage across dozens of\n  surface flinger \u003c--\u003e vr flinger transitions and observed no file\n  descriptor leaks.\n\n- Confirmed the HWC1 code path still compiles.\n\n- Ran the surface flinger tests and confirmed there are no new test\n  failures.\n\n- Ran the hardware composer hidl in passthrough mode on a Marlin and\n  confirmed it works.\n\n- Ran CTS tests for virtual displays and confirmed they all pass.\n\n- Tested Android Auto and confirmed basic graphics functionality still\n  works.\n\nChange-Id: Ibf1dbdf3ec15ca66467697d711f8109dc9e46a47\nMerged-In: I17dc0e060bfb5cb447ffbaa573b279fc6d2d8bd1\n"
    },
    {
      "commit": "8fc9822f3b20f6547c3398c55e8b70c4f3940db9",
      "tree": "1cb65d68b64a461173a305c4b9175d88848de54a",
      "parents": [
        "27a7c02f0ca4afa27cd1516b342ab485df03c15b"
      ],
      "author": {
        "name": "Daniel Nicoara",
        "email": "dnicoara@google.com",
        "time": "Wed Aug 09 18:10:44 2017 -0400"
      },
      "committer": {
        "name": "Daniel Nicoara",
        "email": "dnicoara@google.com",
        "time": "Wed Aug 09 18:10:44 2017 -0400"
      },
      "message": "Signal display refresh when a VR_HWC client is registered\n\nIn steady state, SurfaceFlinger will not update the surfaces. If the\nobserver is registered after steady state, the client will not receive\nany updates. This forces SurfaceFlinger to update the display surfaces\n\nBug: 64207223\nTest: Updated unittest\nChange-Id: Ied7ffcaaacec25d36dafb948489538155a0c865f\n"
    },
    {
      "commit": "50bd661d4bac9c903946f95ead7770252032bd1a",
      "tree": "b27ed9c49a4928508fd05bb91ec7fccf19778c87",
      "parents": [
        "5205430bd067b93d2c5af13d0cbd55b543d6107c",
        "88f99396fd53ce3a5b3306ed05057f477604ac69"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Aug 09 22:10:06 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 09 22:10:06 2017 +0000"
      },
      "message": "libsurfaceflinger: fix screenshot permission check am: fc0b911090\nam: 88f99396fd\n\nChange-Id: I41c256f2b96bf0adbe7e7aa05828c3e4e1725ff5\n"
    },
    {
      "commit": "e8f788f8594aedbe30a87d48f50293d96346424a",
      "tree": "872f67bcc4332602356167b3275e15b804c2d4bc",
      "parents": [
        "5d4c3d052e9eb0cd225b009d4978dafd9a249a4f",
        "5fd661362c175e8641f91dd6400708c3f6a7e5cb"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Wed Aug 09 16:38:48 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 09 16:38:48 2017 +0000"
      },
      "message": "Merge \"Fix out-of-order transactions (2/2)\" into oc-dr1-dev am: 0436b01d1b am: e89483f1bd\nam: 5fd661362c\n\nChange-Id: Ic5f1c2a2d92aad10ed3aa113b17e809037c2b697\n"
    },
    {
      "commit": "5fd661362c175e8641f91dd6400708c3f6a7e5cb",
      "tree": "c7d88b5ab2822bc6df35ec8ea96572187a12733f",
      "parents": [
        "d636f6138a5d0749c67f32525aaf1b5090136ee8",
        "e89483f1bda1468a8f58fc8bcd8477a7d4cb0c92"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Wed Aug 09 16:26:43 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 09 16:26:43 2017 +0000"
      },
      "message": "Merge \"Fix out-of-order transactions (2/2)\" into oc-dr1-dev am: 0436b01d1b\nam: e89483f1bd\n\nChange-Id: Iab6cc70e806f9471d83c1a17764db4ebf98f5b37\n"
    },
    {
      "commit": "e89483f1bda1468a8f58fc8bcd8477a7d4cb0c92",
      "tree": "55900db1ade339119f0a60f472b05372463e942e",
      "parents": [
        "5b1a00f4af5e4fde764593952a730377e60de4f3",
        "0436b01d1b48c55e59d8ad21187c0e80b7828a9f"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Wed Aug 09 16:16:14 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 09 16:16:14 2017 +0000"
      },
      "message": "Merge \"Fix out-of-order transactions (2/2)\" into oc-dr1-dev\nam: 0436b01d1b\n\nChange-Id: I021a2635b40e74f29e1d94ad4a738f3b043ed5db\n"
    },
    {
      "commit": "0436b01d1b48c55e59d8ad21187c0e80b7828a9f",
      "tree": "3db100599bd38d642fe04076f845478516c0a021",
      "parents": [
        "fc0b9110901cd9814a83c574fdaf5c4428838424",
        "bdcf09c4984d47e30e34ff0d3cb1b797ba7fd778"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Wed Aug 09 16:10:29 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 09 16:10:29 2017 +0000"
      },
      "message": "Merge \"Fix out-of-order transactions (2/2)\" into oc-dr1-dev"
    },
    {
      "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": "4ac0e7e66b9b8b8e76bc7f53399eb97201c11a7c",
      "tree": "67aedb04f79976abb93fef026576c660a3ddef38",
      "parents": [
        "9a13672e31a0f39138b4a57de7d0e13cfab60058"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Wed Jul 26 18:48:28 2017 -0700"
      },
      "committer": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Tue Aug 08 14:37:13 2017 -0700"
      },
      "message": "Use a separate hwcomposer hidl instance for vr flinger\n\nImprove robustness of vr flinger \u003c--\u003e surface flinger switching by\nhaving vr flinger use a separate hardware composer hidl instance instead\nof sharing the instance with surface flinger. Sharing the hardware\ncomposer instance has proven to be error prone, with situations where\nboth the vr flinger thread and surface flinger main thread would write\nto the composer at the same time, causing hard to diagnose\ncrashes (b/62925812).\n\nInstead of sharing the hardware composer instance, when switching to vr\nflinger we now delete the existing instance, create a new instance\ndirected to the vr hardware composer shim, and vr flinger creates its\nown composer instance connected to the real hardware composer. By\ncreating a separate composer instance for vr flinger, crashes like the\nones found in b/62925812 are no longer impossible.\n\nMost of the changes in this commit are related to enabling surface\nflinger to delete HWComposer instances cleanly. In particular:\n\n- Previously the hardware composer callbacks (which come in on a\n  hwbinder thread) would land in HWC2::Device and bubble up to the\n  SurfaceFlinger object. But with the new behavior the HWC2::Device\n  might be dead or in the process of being destroyed, so instead we have\n  SurfaceFlinger receive the composer callbacks directly, and forward\n  them to HWComposer and HWC2::Device. We include a composer id field in\n  the callbacks so surface flinger can ignore stale callbacks from dead\n  composer instances.\n\n- Object ownership for HWC2::Display and HWC2::Layer was shared by\n  passing around shared_ptrs to these objects. This was problematic\n  because they referenced and used the HWC2::Device, which can now be\n  destroyed when switching to vr flinger. Simplify the ownership model\n  by having HWC2::Device own (via unique_ptr\u003c\u003e) instances of\n  HWC2::Display, which owns (again via unique_ptr\u003c\u003e) instances of\n  HWC2::Layer. In cases where we previously passed std::shared_ptr\u003c\u003e to\n  HWC2::Display or HWC2::Layer, instead pass non-owning HWC2::Display*\n  and HWC2::Layer* pointers. This ensures clean composer instance\n  teardown with no stale references to the deleted HWC2::Device.\n\n- When the hardware composer instance is destroyed and the HWC2::Layers\n  are removed, notify the android::Layer via a callback, so it can\n  remove the HWC2::Layer from its internal table of hardware composer\n  layers. This removes the burden to explicitly clear out all hardware\n  composer layers when switching to vr flinger, which has been a source\n  of bugs.\n\n- We were missing an mStateLock lock in\n  SurfaceFlinger::setVsyncEnabled(), which was necessary to ensure we\n  were setting vsync on the correct hardware composer instance. Once\n  that lock was added, surface flinger would sometimes deadlock when\n  transitioning to vr flinger, because the surface flinger main thread\n  would acquire mStateLock and then EventControlThread::mMutex, whereas\n  the event control thread would acquire the locks in the opposite\n  order. The changes in EventControlThread.cpp are to ensure it doesn\u0027t\n  hold a lock on EventControlThread::mMutex while calling\n  setVsyncEnabled(), to avoid the deadlock.\n\nI found that without a composer callback registered in vr flinger the\nvsync_event file wasn\u0027t getting vsync timestamps written, so vr flinger\nwould get stuck in an infinite loop trying to parse a vsync\ntimestamp. Since we need to have a callback anyway I changed the code in\nhardware_composer.cpp to get the vsync timestamp from the callback, as\nsurface flinger does. I confirmed the timestamps are the same with\neither method, and this lets us remove some extra code for extracting\nthe vsync timestamp that (probably) wasn\u0027t compatible with all devices\nwe want to run on anyway. I also added a timeout to the vysnc wait so\nwe\u0027ll see an error message in the log if we fail to wait for vsync,\ninstead of looping forever.\n\nBug: 62925812\n\nTest: - Confirmed surface flinger \u003c--\u003e vr flinger switching is robust by\n        switching devices on and off hundreds of times and observing no\n        hardware composer related issues, surface flinger crashes, or\n        hardware composer service crashes.\n\n- Confirmed 2d in vr works as before by going through the OOBE flow on a\n  standalone. This also exercises virtual display creation and usage\n  through surface flinger.\n\n- Added logs to confirm perfect layer/display cleanup when destroying\n  hardware composer instances.\n\n- Tested normal 2d phone usage to confirm basic layer create/destroy\n  functionality works as before.\n\n- Monitored surface flinger file descriptor usage across dozens of\n  surface flinger \u003c--\u003e vr flinger transitions and observed no file\n  descriptor leaks.\n\n- Confirmed the HWC1 code path still compiles.\n\n- Ran the surface flinger tests and confirmed there are no new test\n  failures.\n\n- Ran the hardware composer hidl in passthrough mode on a Marlin and\n  confirmed it works.\n\n- Ran CTS tests for virtual displays and confirmed they all pass.\n\n- Tested Android Auto and confirmed basic graphics functionality still\n  works.\n\nChange-Id: I17dc0e060bfb5cb447ffbaa573b279fc6d2d8bd1\nMerged-In: I17dc0e060bfb5cb447ffbaa573b279fc6d2d8bd1\n"
    },
    {
      "commit": "a7de594782a5a7fcfd0300117f362f173631e1af",
      "tree": "7aa14645304f3699556b62f569cbbeccdd9cb81b",
      "parents": [
        "90c709dc88117e3e6b72a85ff9c46ef976a63639"
      ],
      "author": {
        "name": "Kalle Raita",
        "email": "kraita@google.com",
        "time": "Tue Aug 08 14:34:04 2017 -0700"
      },
      "committer": {
        "name": "Kalle Raita",
        "email": "kraita@google.com",
        "time": "Tue Aug 08 14:37:02 2017 -0700"
      },
      "message": "Use HWC_DISPLAY_PRIMARY and _EXTERNAL\n\nSome of the code in the SurfaceFlinger and VR composer assume that the\ncomposer has display IDs HWC_DISPLAY_PRIMARY and HWC_DISPLAY_EXTERNAL\nfor those specific displays. Modify test to follow the requirement.\n\nBug: 64446190\nTest: Run the test on Marlin\nChange-Id: I7fef17158d62bd7cd242b97d37724a229f9c7418\n"
    },
    {
      "commit": "27a7c02f0ca4afa27cd1516b342ab485df03c15b",
      "tree": "7bb8afe645d00961bfe52a4700ca519717c19d2a",
      "parents": [
        "88f99396fd53ce3a5b3306ed05057f477604ac69",
        "d7f49c5e93a554c2f0e85e279a765f92fb1e66f1"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Tue Aug 08 19:29:10 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 08 19:29:10 2017 +0000"
      },
      "message": "Merge \"Use a separate hwcomposer hidl instance for vr flinger\" into oc-mr1-dev"
    },
    {
      "commit": "7493fc585e9d346a378d50d124cf3830470bdaab",
      "tree": "08ef566c9a686335d923e3663ec79434627861a3",
      "parents": [
        "643e1306abcd3aa0f30349ee001cf2a6248b76a1",
        "f0e9eaf841e38f416994b5d4cb7c9635709dc645"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Aug 08 19:28:36 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 08 19:28:36 2017 +0000"
      },
      "message": "libsurfaceflinger: fix screenshot permission check am: fc0b911090 am: 88f99396fd\nam: f0e9eaf841\n\nChange-Id: I5652f12bebd0a5f284d5c1d92d954dd4f3f586a1\n"
    },
    {
      "commit": "f0e9eaf841e38f416994b5d4cb7c9635709dc645",
      "tree": "1e77ab9e35ce95f1a7b58f02e962bd72ae4f6ef1",
      "parents": [
        "5c3a2353318c3fbfd02db6b14c11dccaf3734b15",
        "88f99396fd53ce3a5b3306ed05057f477604ac69"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Aug 08 19:25:04 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 08 19:25:04 2017 +0000"
      },
      "message": "libsurfaceflinger: fix screenshot permission check am: fc0b911090\nam: 88f99396fd\n\nChange-Id: I828d45310a26a30205588b0f25716d994a538a4a\n"
    },
    {
      "commit": "88f99396fd53ce3a5b3306ed05057f477604ac69",
      "tree": "b8a34a3f65799f85ae6d509cc4898a955bdde706",
      "parents": [
        "74313fcd012d4d321f77f3e80fb7e5cd3e4b5d06",
        "fc0b9110901cd9814a83c574fdaf5c4428838424"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Aug 08 19:22:06 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 08 19:22:06 2017 +0000"
      },
      "message": "libsurfaceflinger: fix screenshot permission check\nam: fc0b911090\n\nChange-Id: I9a2c42ea76572e5200f99d65f56ee4b10da4ca15\n"
    },
    {
      "commit": "bdcf09c4984d47e30e34ff0d3cb1b797ba7fd778",
      "tree": "e340e163a1d43a9ca21e806f554a3e0539053785",
      "parents": [
        "8f09b6abecbd8bf0e00c72b5eab6dd743e0f35ac"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Tue Aug 08 15:22:08 2017 +0200"
      },
      "committer": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Tue Aug 08 15:22:08 2017 +0200"
      },
      "message": "Fix out-of-order transactions (2/2)\n\nThe following sequence of order may happen which cause wrong\nsurface positions:\n- WA.animate updates surfaces properties to S\n- WA.animate closes the surface transaction\n- Since the previous animation transaction wasn\u0027t commited yet,\ncloseSurfaceTransaction blocks and updating the surface properties\non SF side is deferred.\n- In the meantime, since we are not holding WM lock, we have\nanother thread updating surfaces properties to S\u0027\n- Closing the transaction in this thread completes immediately\nbecause it\u0027s not a synchronous transaction or animation\ntransaction.\n- After a frame has been processed S gets applied on SF side as\nthe other transaction is done waiting for the frame to complete.\n\nThe issue here is that properties are now set to S instead of S\u0027.\nSad!\n\nWe originally started calling closeTransaction without the WM\nlock being held because it lead to thread starvation (b/38192114).\nHowever, that fix has this big flaw as described above.\n\nTo fix this, we create an empty animation transaction before\nupdating the animation properties to simulate the back-pressuring\nbehavior of animation transactions without the WM lock being held.\nIf that transaction arrives out of order, it doesn\u0027t matter at all\nbecause it is empty.\n\nAfter that, we perform the animation udpate in a transaction that\nis not marked as an animation transaction, and thus will not\nblock, which avoids the starvation issue.\n\nPart of this change is also a change in SF to allow executing\nempty animation transactions.\n\nTest: go/wm-smoke\nTest: Open VideoPlayer from VRCore, close it, observe no wrong\npositiioning of surfaces.\nTest: Inspect traces while animating. Ensure back pressuring still\nworks.\n\nChange-Id: Ie545463e71e0d1bc73439d14381077a290d2f959\nFixes: 63905190\nBug: 38192114\n"
    },
    {
      "commit": "d7f49c5e93a554c2f0e85e279a765f92fb1e66f1",
      "tree": "aa2ddf0f8f361a00c9f10277efc123fb508b1e5a",
      "parents": [
        "0632b778331dfc46979b8865fdd530e61d5bdef9"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Wed Jul 26 18:48:28 2017 -0700"
      },
      "committer": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Mon Aug 07 20:32:36 2017 -0700"
      },
      "message": "Use a separate hwcomposer hidl instance for vr flinger\n\nImprove robustness of vr flinger \u003c--\u003e surface flinger switching by\nhaving vr flinger use a separate hardware composer hidl instance instead\nof sharing the instance with surface flinger. Sharing the hardware\ncomposer instance has proven to be error prone, with situations where\nboth the vr flinger thread and surface flinger main thread would write\nto the composer at the same time, causing hard to diagnose\ncrashes (b/62925812).\n\nInstead of sharing the hardware composer instance, when switching to vr\nflinger we now delete the existing instance, create a new instance\ndirected to the vr hardware composer shim, and vr flinger creates its\nown composer instance connected to the real hardware composer. By\ncreating a separate composer instance for vr flinger, crashes like the\nones found in b/62925812 are no longer impossible.\n\nMost of the changes in this commit are related to enabling surface\nflinger to delete HWComposer instances cleanly. In particular:\n\n- Previously the hardware composer callbacks (which come in on a\n  hwbinder thread) would land in HWC2::Device and bubble up to the\n  SurfaceFlinger object. But with the new behavior the HWC2::Device\n  might be dead or in the process of being destroyed, so instead we have\n  SurfaceFlinger receive the composer callbacks directly, and forward\n  them to HWComposer and HWC2::Device. We include a composer id field in\n  the callbacks so surface flinger can ignore stale callbacks from dead\n  composer instances.\n\n- Object ownership for HWC2::Display and HWC2::Layer was shared by\n  passing around shared_ptrs to these objects. This was problematic\n  because they referenced and used the HWC2::Device, which can now be\n  destroyed when switching to vr flinger. Simplify the ownership model\n  by having HWC2::Device own (via unique_ptr\u003c\u003e) instances of\n  HWC2::Display, which owns (again via unique_ptr\u003c\u003e) instances of\n  HWC2::Layer. In cases where we previously passed std::shared_ptr\u003c\u003e to\n  HWC2::Display or HWC2::Layer, instead pass non-owning HWC2::Display*\n  and HWC2::Layer* pointers. This ensures clean composer instance\n  teardown with no stale references to the deleted HWC2::Device.\n\n- When the hardware composer instance is destroyed and the HWC2::Layers\n  are removed, notify the android::Layer via a callback, so it can\n  remove the HWC2::Layer from its internal table of hardware composer\n  layers. This removes the burden to explicitly clear out all hardware\n  composer layers when switching to vr flinger, which has been a source\n  of bugs.\n\n- We were missing an mStateLock lock in\n  SurfaceFlinger::setVsyncEnabled(), which was necessary to ensure we\n  were setting vsync on the correct hardware composer instance. Once\n  that lock was added, surface flinger would sometimes deadlock when\n  transitioning to vr flinger, because the surface flinger main thread\n  would acquire mStateLock and then EventControlThread::mMutex, whereas\n  the event control thread would acquire the locks in the opposite\n  order. The changes in EventControlThread.cpp are to ensure it doesn\u0027t\n  hold a lock on EventControlThread::mMutex while calling\n  setVsyncEnabled(), to avoid the deadlock.\n\nI found that without a composer callback registered in vr flinger the\nvsync_event file wasn\u0027t getting vsync timestamps written, so vr flinger\nwould get stuck in an infinite loop trying to parse a vsync\ntimestamp. Since we need to have a callback anyway I changed the code in\nhardware_composer.cpp to get the vsync timestamp from the callback, as\nsurface flinger does. I confirmed the timestamps are the same with\neither method, and this lets us remove some extra code for extracting\nthe vsync timestamp that (probably) wasn\u0027t compatible with all devices\nwe want to run on anyway. I also added a timeout to the vysnc wait so\nwe\u0027ll see an error message in the log if we fail to wait for vsync,\ninstead of looping forever.\n\nBug: 62925812\n\nTest: - Confirmed surface flinger \u003c--\u003e vr flinger switching is robust by\n        switching devices on and off hundreds of times and observing no\n        hardware composer related issues, surface flinger crashes, or\n        hardware composer service crashes.\n\n- Confirmed 2d in vr works as before by going through the OOBE flow on a\n  standalone. This also exercises virtual display creation and usage\n  through surface flinger.\n\n- Added logs to confirm perfect layer/display cleanup when destroying\n  hardware composer instances.\n\n- Tested normal 2d phone usage to confirm basic layer create/destroy\n  functionality works as before.\n\n- Monitored surface flinger file descriptor usage across dozens of\n  surface flinger \u003c--\u003e vr flinger transitions and observed no file\n  descriptor leaks.\n\n- Confirmed the HWC1 code path still compiles.\n\n- Ran the surface flinger tests and confirmed there are no new test\n  failures.\n\n- Ran the hardware composer hidl in passthrough mode on a Marlin and\n  confirmed it works.\n\n- Ran CTS tests for virtual displays and confirmed they all pass.\n\n- Tested Android Auto and confirmed basic graphics functionality still\n  works.\n\nChange-Id: I17dc0e060bfb5cb447ffbaa573b279fc6d2d8bd1\nMerged-In: I17dc0e060bfb5cb447ffbaa573b279fc6d2d8bd1\n"
    },
    {
      "commit": "d11dc5b0f713b0de78c89ec8b61f09129f8807d8",
      "tree": "d4b9873b7becf73fa11979956a357102a179d72d",
      "parents": [
        "08ff413e7e5615f064bf4769e02494ee5bf63471",
        "94e35b93537c7f9da018688ac8a8ba87f4689915"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Tue Aug 08 03:24:25 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 08 03:24:25 2017 +0000"
      },
      "message": "Merge \"Use a separate hwcomposer hidl instance for vr flinger\""
    },
    {
      "commit": "c7d606d4cdc628a3fbc8ca082f872c7098ffba89",
      "tree": "61a3498f96db3dbce12260c70c008a533d3d41fb",
      "parents": [
        "b280352bb61d4b832d9d40b1048c1ebefc790154"
      ],
      "author": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Thu Jun 22 18:13:56 2017 -0700"
      },
      "committer": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Mon Aug 07 23:11:34 2017 +0000"
      },
      "message": "thermalservice: add HIDL ThermalCallback implementation\n\nThe IThermalCallback implementation in thermalserviced enables vendor\nthermal management code to send thermal events to ThermalService.\n\nTest: manual: marlin with modified thermal-engine.conf\nBug: 30982366\nChange-Id: Ic566bc51aebcd03163f8909f846ee4f7025ed472\n"
    },
    {
      "commit": "b280352bb61d4b832d9d40b1048c1ebefc790154",
      "tree": "455d15a75058557f817d3dc30b920fbd86c09413",
      "parents": [
        "0632b778331dfc46979b8865fdd530e61d5bdef9"
      ],
      "author": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Wed May 24 17:19:18 2017 -0700"
      },
      "committer": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Mon Aug 07 23:10:46 2017 +0000"
      },
      "message": "thermalservice: add ThermalService interfaces and thermalserviced\n\nBinder interfaces IThermalService and IThermalEventListener are used\nby frameworks native and Java code to publish and subscribe to\nthermal events, and to detect thermal throttling status.\n\nA following change adds HwBinder interfaces for vendor thermal\nmanagement code to send thermal events to this service.\n\nTest: marlin\nBug: 30982366\nChange-Id: I246ddd9b386e2388701b73fa0ecf9aff78ce0adb\n"
    },
    {
      "commit": "fc0b9110901cd9814a83c574fdaf5c4428838424",
      "tree": "51d7deb2233103db979a2bdd1036f62f6773a89d",
      "parents": [
        "8f09b6abecbd8bf0e00c72b5eab6dd743e0f35ac"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Aug 07 15:27:49 2017 -0700"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Aug 07 15:33:55 2017 -0700"
      },
      "message": "libsurfaceflinger: fix screenshot permission check\n\nFix the logic for layers we check isSecure or isVisible for.  It was\nregressed by my previous change to support\nWINDOW_TYPE_DONT_SCREENSHOT.\n\nBug: 63311708\nBug: 62656774\nTest: CTS\nChange-Id: I7768cb590014cc610ec564847958bbd98742c277\n"
    },
    {
      "commit": "94e35b93537c7f9da018688ac8a8ba87f4689915",
      "tree": "d8f228e6a3aa571814187030f9b9b7e97b8140b8",
      "parents": [
        "021a23991e6ddd5e6a625f283d992cd63aa7073a"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Wed Jul 26 18:48:28 2017 -0700"
      },
      "committer": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Mon Aug 07 15:25:05 2017 -0700"
      },
      "message": "Use a separate hwcomposer hidl instance for vr flinger\n\nImprove robustness of vr flinger \u003c--\u003e surface flinger switching by\nhaving vr flinger use a separate hardware composer hidl instance instead\nof sharing the instance with surface flinger. Sharing the hardware\ncomposer instance has proven to be error prone, with situations where\nboth the vr flinger thread and surface flinger main thread would write\nto the composer at the same time, causing hard to diagnose\ncrashes (b/62925812).\n\nInstead of sharing the hardware composer instance, when switching to vr\nflinger we now delete the existing instance, create a new instance\ndirected to the vr hardware composer shim, and vr flinger creates its\nown composer instance connected to the real hardware composer. By\ncreating a separate composer instance for vr flinger, crashes like the\nones found in b/62925812 are no longer impossible.\n\nMost of the changes in this commit are related to enabling surface\nflinger to delete HWComposer instances cleanly. In particular:\n\n- Previously the hardware composer callbacks (which come in on a\n  hwbinder thread) would land in HWC2::Device and bubble up to the\n  SurfaceFlinger object. But with the new behavior the HWC2::Device\n  might be dead or in the process of being destroyed, so instead we have\n  SurfaceFlinger receive the composer callbacks directly, and forward\n  them to HWComposer and HWC2::Device. We include a composer id field in\n  the callbacks so surface flinger can ignore stale callbacks from dead\n  composer instances.\n\n- Object ownership for HWC2::Display and HWC2::Layer was shared by\n  passing around shared_ptrs to these objects. This was problematic\n  because they referenced and used the HWC2::Device, which can now be\n  destroyed when switching to vr flinger. Simplify the ownership model\n  by having HWC2::Device own (via unique_ptr\u003c\u003e) instances of\n  HWC2::Display, which owns (again via unique_ptr\u003c\u003e) instances of\n  HWC2::Layer. In cases where we previously passed std::shared_ptr\u003c\u003e to\n  HWC2::Display or HWC2::Layer, instead pass non-owning HWC2::Display*\n  and HWC2::Layer* pointers. This ensures clean composer instance\n  teardown with no stale references to the deleted HWC2::Device.\n\n- When the hardware composer instance is destroyed and the HWC2::Layers\n  are removed, notify the android::Layer via a callback, so it can\n  remove the HWC2::Layer from its internal table of hardware composer\n  layers. This removes the burden to explicitly clear out all hardware\n  composer layers when switching to vr flinger, which has been a source\n  of bugs.\n\n- We were missing an mStateLock lock in\n  SurfaceFlinger::setVsyncEnabled(), which was necessary to ensure we\n  were setting vsync on the correct hardware composer instance. Once\n  that lock was added, surface flinger would sometimes deadlock when\n  transitioning to vr flinger, because the surface flinger main thread\n  would acquire mStateLock and then EventControlThread::mMutex, whereas\n  the event control thread would acquire the locks in the opposite\n  order. The changes in EventControlThread.cpp are to ensure it doesn\u0027t\n  hold a lock on EventControlThread::mMutex while calling\n  setVsyncEnabled(), to avoid the deadlock.\n\nI found that without a composer callback registered in vr flinger the\nvsync_event file wasn\u0027t getting vsync timestamps written, so vr flinger\nwould get stuck in an infinite loop trying to parse a vsync\ntimestamp. Since we need to have a callback anyway I changed the code in\nhardware_composer.cpp to get the vsync timestamp from the callback, as\nsurface flinger does. I confirmed the timestamps are the same with\neither method, and this lets us remove some extra code for extracting\nthe vsync timestamp that (probably) wasn\u0027t compatible with all devices\nwe want to run on anyway. I also added a timeout to the vysnc wait so\nwe\u0027ll see an error message in the log if we fail to wait for vsync,\ninstead of looping forever.\n\nBug: 62925812\n\nTest: - Confirmed surface flinger \u003c--\u003e vr flinger switching is robust by\n        switching devices on and off hundreds of times and observing no\n        hardware composer related issues, surface flinger crashes, or\n        hardware composer service crashes.\n\n- Confirmed 2d in vr works as before by going through the OOBE flow on a\n  standalone. This also exercises virtual display creation and usage\n  through surface flinger.\n\n- Added logs to confirm perfect layer/display cleanup when destroying\n  hardware composer instances.\n\n- Tested normal 2d phone usage to confirm basic layer create/destroy\n  functionality works as before.\n\n- Monitored surface flinger file descriptor usage across dozens of\n  surface flinger \u003c--\u003e vr flinger transitions and observed no file\n  descriptor leaks.\n\n- Confirmed the HWC1 code path still compiles.\n\n- Ran the surface flinger tests and confirmed there are no new test\n  failures.\n\n- Ran the hardware composer hidl in passthrough mode on a Marlin and\n  confirmed it works.\n\n- Ran CTS tests for virtual displays and confirmed they all pass.\n\n- Tested Android Auto and confirmed basic graphics functionality still\n  works.\n\nChange-Id: I17dc0e060bfb5cb447ffbaa573b279fc6d2d8bd1\n"
    },
    {
      "commit": "41e9cf9e22f189ca16e2af7cc7e2aab2b03bc91f",
      "tree": "4e2e97a0b8f2256ab29632399da959a6472c66da",
      "parents": [
        "021a23991e6ddd5e6a625f283d992cd63aa7073a",
        "0b8fd899576e7df72f0c18fdd83b95d1a840987b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 07 18:44:44 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 07 18:44:44 2017 +0000"
      },
      "message": "Merge \"test-hwc2: Fix hwc2-tests\""
    },
    {
      "commit": "a564aa8c84efed8555119dff31109e588225b298",
      "tree": "25d8ca461fd0d13cdfb59146c3ad95bd89224072",
      "parents": [
        "6aa5b4e7fdaa86a76e00e2508d7122e59cbd2aa2"
      ],
      "author": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Wed Aug 02 15:55:06 2017 -0600"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 04 23:47:03 2017 +0000"
      },
      "message": "Fix build error from diamond merge\n\nSomehow between various merges on master and oc-dr1-dev\nmaster ended up in bad state.\nCL\u0027s involved are:\ncd939aa6622430 Fix build for non-HWC2 targets (master)\n281e8113d0ce Communicate composition buffer dataspace to HWC (oc-dr1-dev)\n79d272442ce13 Communicate composition buffer dataspace to HWC (master)\nI think 281e got merged into master and re-introduced the change that\nwas fixed by cd93.\nTest: make\n\nChange-Id: I087244348392098f516905eb1cebebf0362fcc20\n(cherry picked from commit 6461806da8d8f0677ce337700153e5a972c36593)\n"
    },
    {
      "commit": "a099a24c93bfa599fc5c36a647e946c26f68514f",
      "tree": "a28d284ac7ff816f6cd08a3710a65eb9fbe1e6ed",
      "parents": [
        "d9fd3caf92c541e1ba8120f1e95bfb855183b905"
      ],
      "author": {
        "name": "Kalle Raita",
        "email": "kraita@google.com",
        "time": "Wed Jan 11 11:17:29 2017 -0800"
      },
      "committer": {
        "name": "Kalle Raita",
        "email": "kraita@google.com",
        "time": "Fri Aug 04 15:20:09 2017 -0700"
      },
      "message": "Faked HWC for SurfaceFlinger testing\n\nInfrastructure and initial port of transaction tests. Faking the HWC\nallows exercising the real path through the SurfaceFlinger, not relying\non screen captures. Faked HWC also opens up the possibility of faking\ninteractions like display hotplugs.\n\nThe tests are verifying the composition rectangles instead of a set of\nselect pixels. GLES rendering differences won\u0027t affect the\nresults. Also, the test expectations become clearer.\n\nThe ported transaction tests ran roughly twice as fast when compared\nwith the original transaction test. This is mostly due to the thighter\ncontrol over the vsyncs.\n\nTest: Running the test on Marlin\nChange-Id: I1c876cda78db94c1965498af957e64fdd23459ce\n"
    },
    {
      "commit": "0b8fd899576e7df72f0c18fdd83b95d1a840987b",
      "tree": "6fcc331512cd75afc222be61bf39fc0f4ed7aae2",
      "parents": [
        "2b58d3726043893ef34a5a6b670a30a23fe7e34b"
      ],
      "author": {
        "name": "Arun Kumar K.R",
        "email": "akumarkr@codeaurora.org",
        "time": "Fri Jun 16 15:20:01 2017 +0530"
      },
      "committer": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Fri Aug 04 12:24:04 2017 -0700"
      },
      "message": "test-hwc2: Fix hwc2-tests\n\nFix some basic checks in hwc2-tests\n\nTest: run test-hwc2\n\nChange-Id: Ib5e964425712cde81e081199ebfd38c0893c457b\n"
    },
    {
      "commit": "449fec5d089ffec2debdbcd09f766c16517a0631",
      "tree": "96ffad00eeb0d3367b19395fb8c756e165279acf",
      "parents": [
        "46f388ce7db5a88c34ddbd2cf7fef15b6ccfe943",
        "0fd740c5115b122a9b41f57fc325ab2b3cdc882c"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Aug 03 13:13:57 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 03 13:13:57 2017 +0000"
      },
      "message": "Merge \"libsurfaceflinger: handle WINDOW_TYPE_DONT_SCREENSHOT\" into oc-dr1-dev am: 1e9bf7c91b am: ebc55de1a8\nam: 0fd740c511\n\nChange-Id: I427ba9348e63a390407453d12a9dd7b226c9daee\n"
    },
    {
      "commit": "0fd740c5115b122a9b41f57fc325ab2b3cdc882c",
      "tree": "2a81aa7b5b59ef45d36496a7b23d635b7b14cabf",
      "parents": [
        "6fbac8d297d4e70fa579811567acda39edd54974",
        "ebc55de1a8c625d2c91aff535687f2c8a96adac1"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Aug 03 13:01:33 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 03 13:01:33 2017 +0000"
      },
      "message": "Merge \"libsurfaceflinger: handle WINDOW_TYPE_DONT_SCREENSHOT\" into oc-dr1-dev am: 1e9bf7c91b\nam: ebc55de1a8\n\nChange-Id: I7f00ef3c36326aef9cb3789a07946d7f29dac612\n"
    },
    {
      "commit": "7cc9d29816baaa85185b4e13ebb05bfb1cc2dfce",
      "tree": "6bec42646ff214ba9e4cf45f7a5f9eb4083d1686",
      "parents": [
        "0f6c276edd9b0ab86636c23070fae763d4baad9c",
        "1e9bf7c91b359747cc3d043caec66922618ca79d"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Thu Aug 03 12:53:49 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 03 12:53:49 2017 +0000"
      },
      "message": "Merge \"libsurfaceflinger: handle WINDOW_TYPE_DONT_SCREENSHOT\" into oc-dr1-dev\nam: 1e9bf7c91b\n\nChange-Id: Ie0d80934d0bf1d92ecfb2ab491cdf2b374132c17\n"
    },
    {
      "commit": "1e9bf7c91b359747cc3d043caec66922618ca79d",
      "tree": "6dc148298f4bcd7bd29823f8933a3b1bf91eadb8",
      "parents": [
        "d8fb01fe774598a5daf0511b1724f9b460f7ba60",
        "ab0c319824632c463ea624cee6f0bc3c8cd8a779"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 03 12:45:02 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 03 12:45:02 2017 +0000"
      },
      "message": "Merge \"libsurfaceflinger: handle WINDOW_TYPE_DONT_SCREENSHOT\" into oc-dr1-dev"
    },
    {
      "commit": "46f388ce7db5a88c34ddbd2cf7fef15b6ccfe943",
      "tree": "bd7ce51cb4d62d3d413a2beb5aa0c61cf5984f30",
      "parents": [
        "e2938987764e1e7b744d80561b59a5949e396a00"
      ],
      "author": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Thu Jun 22 18:13:56 2017 -0700"
      },
      "committer": {
        "name": "Todd Poynor",
        "email": "toddpoynor@google.com",
        "time": "Thu Aug 03 05:31:04 2017 +0000"
      },
      "message": "thermalservice: add HIDL ThermalCallback implementation\n\nThe IThermalCallback implementation in thermalserviced enables vendor\nthermal management code to send thermal events to ThermalService.\n\nTest: manual: marlin with modified thermal-engine.conf\nBug: 30982366\nChange-Id: Ic566bc51aebcd03163f8909f846ee4f7025ed472\n"
    },
    {
      "commit": "28fab2da46d9aa3bee9f45877425b500c3308f28",
      "tree": "b27e7cc7e6d085ff7dc81ad084024760de69a490",
      "parents": [
        "650e9ecbd7167391073d8ccf3f60f8a58b7ffd4b",
        "857abdb88cc71f9e1d4e2893627aee94c39d2143"
      ],
      "author": {
        "name": "Kevin Schoedel",
        "email": "kpschoedel@google.com",
        "time": "Thu Aug 03 01:15:18 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Aug 03 01:15:18 2017 +0000"
      },
      "message": "Merge \"Remove constraint on touch location.\" into oc-dr1-dev am: d8fb01fe77 am: 9393de424b\nam: 857abdb88c\n\nChange-Id: I02da92155ed2c80375c465a47be56feaf93a4783\n"
    },
    {
      "commit": "650e9ecbd7167391073d8ccf3f60f8a58b7ffd4b",
      "tree": "3802420d56f52f9b16938f0b927c00b2cffe500a",
      "parents": [
        "6461806da8d8f0677ce337700153e5a972c36593",
        "13c058fc180b1b1831ca52cc4a9c13d59ec67c34"
      ],
      "author": {
        "name": "Tarandeep Singh",
        "email": "tarandeep@google.com",
        "time": "Wed Aug 02 23:44:38 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 02 23:44:38 2017 +0000"
      },
      "message": "Merge changes from topic \u002762033391\u0027 into oc-dr1-dev am: 97d1c4f234 am: e6e2e1b431\nam: 13c058fc18\n\nChange-Id: I8350fe6962e86573663a988fee1e74ba854f214b\n"
    },
    {
      "commit": "0f6c276edd9b0ab86636c23070fae763d4baad9c",
      "tree": "be117c4bafe5ccef57067e0c2a2267a62a67a578",
      "parents": [
        "50010a893911f56cbe02c500df9c1d8858ee71e8",
        "d8fb01fe774598a5daf0511b1724f9b460f7ba60"
      ],
      "author": {
        "name": "Kevin Schoedel",
        "email": "kpschoedel@google.com",
        "time": "Wed Aug 02 23:16:45 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 02 23:16:45 2017 +0000"
      },
      "message": "Merge \"Remove constraint on touch location.\" into oc-dr1-dev\nam: d8fb01fe77\n\nChange-Id: Iebda7471bcff007c88f2cb67472c914988337e33\n"
    },
    {
      "commit": "857abdb88cc71f9e1d4e2893627aee94c39d2143",
      "tree": "47e0d7fa3c1fb11c485927b008305f09c2bde2cb",
      "parents": [
        "13c058fc180b1b1831ca52cc4a9c13d59ec67c34",
        "9393de424bc02398550b792d511e98d7e2a6908d"
      ],
      "author": {
        "name": "Kevin Schoedel",
        "email": "kpschoedel@google.com",
        "time": "Wed Aug 02 23:07:19 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 02 23:07:19 2017 +0000"
      },
      "message": "Merge \"Remove constraint on touch location.\" into oc-dr1-dev am: d8fb01fe77\nam: 9393de424b\n\nChange-Id: I298fb174dc62a6c02478597fb4b0b869eb61d94e\n"
    },
    {
      "commit": "50010a893911f56cbe02c500df9c1d8858ee71e8",
      "tree": "0a077296585834b60b5af8a3c38c3bb115e7da93",
      "parents": [
        "aca5f668713347173fe164d49a8fd1010f014102",
        "97d1c4f234d319b476f03c74a72487869fb43e1f"
      ],
      "author": {
        "name": "Tarandeep Singh",
        "email": "tarandeep@google.com",
        "time": "Wed Aug 02 23:00:21 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 02 23:00:21 2017 +0000"
      },
      "message": "Merge changes from topic \u002762033391\u0027 into oc-dr1-dev\nam: 97d1c4f234\n\nChange-Id: I33111bae2e009087d979b5f83b0d76a6ba9328c1\n"
    },
    {
      "commit": "13c058fc180b1b1831ca52cc4a9c13d59ec67c34",
      "tree": "2920cb40e1488c2adf6d9e7cd309b3c87f5979f8",
      "parents": [
        "a7030f726a6d502c017f72f5d5e7df80c8e5740c",
        "e6e2e1b431c2a482aa7ee7e48fb3bf07e298186e"
      ],
      "author": {
        "name": "Tarandeep Singh",
        "email": "tarandeep@google.com",
        "time": "Wed Aug 02 23:00:15 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 02 23:00:15 2017 +0000"
      },
      "message": "Merge changes from topic \u002762033391\u0027 into oc-dr1-dev am: 97d1c4f234\nam: e6e2e1b431\n\nChange-Id: I90d6d35abf452d61bc0a9dc0fe21848a483f6f9f\n"
    },
    {
      "commit": "aca5f668713347173fe164d49a8fd1010f014102",
      "tree": "15ece951413112af8ec195f3915c7bac64840fac",
      "parents": [
        "ac8661beae733fde679c3ec190ea4f04974ed0cb",
        "48aeb512e9c9492cb7b5ccf642795af7b4b97cd6"
      ],
      "author": {
        "name": "Tarandeep Singh",
        "email": "tarandeep@google.com",
        "time": "Wed Aug 02 23:00:06 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 02 23:00:06 2017 +0000"
      },
      "message": "Enable InputMonitors for non-default display.\nam: 48aeb512e9\n\nChange-Id: I8d7faebe9c57bc17ddeeb7d4df3a69afa908171c\n"
    },
    {
      "commit": "6461806da8d8f0677ce337700153e5a972c36593",
      "tree": "c1c0ab687c4f44ee64cf32d816836e52a3b0dbf4",
      "parents": [
        "9b67ec1df383de4e63b7e0346ec068dda325e072"
      ],
      "author": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Wed Aug 02 15:55:06 2017 -0600"
      },
      "committer": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Wed Aug 02 16:00:31 2017 -0600"
      },
      "message": "Fix build error from diamond merge\n\nSomehow between various merges on master and oc-dr1-dev\nmaster ended up in bad state.\nCL\u0027s involved are:\ncd939aa6622430 Fix build for non-HWC2 targets (master)\n281e8113d0ce Communicate composition buffer dataspace to HWC (oc-dr1-dev)\n79d272442ce13 Communicate composition buffer dataspace to HWC (master)\nI think 281e got merged into master and re-introduced the change that\nwas fixed by cd93.\nTest: make\n\nChange-Id: I087244348392098f516905eb1cebebf0362fcc20\n"
    },
    {
      "commit": "d8fb01fe774598a5daf0511b1724f9b460f7ba60",
      "tree": "31840145a452b7d2c9b86e71da5566100941c144",
      "parents": [
        "97d1c4f234d319b476f03c74a72487869fb43e1f",
        "7b5be760f13cbec3ee4996016d7a609174ccd8ce"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 02 21:40:32 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 02 21:40:32 2017 +0000"
      },
      "message": "Merge \"Remove constraint on touch location.\" into oc-dr1-dev"
    },
    {
      "commit": "ab0c319824632c463ea624cee6f0bc3c8cd8a779",
      "tree": "61262143a15424ea11f6a6749b333c09a5d63588",
      "parents": [
        "37d8c19a193d41b535e91a8ea1637938f5a10faf"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Tue Aug 01 11:29:00 2017 -0700"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Aug 02 14:13:02 2017 -0700"
      },
      "message": "libsurfaceflinger: handle WINDOW_TYPE_DONT_SCREENSHOT\n\nWhen a layer has type WINDOW_TYPE_DONT_SCREENSHOT, hide it from\neverywhere but the primary display.  This should be reverted when we\nswitch to use layer hierarchy properly.\n\nBug: 63311708\nTest: screencap, screenrecord, android.view.cts.SurfaceViewSyncTest\nChange-Id: I6a8d6b93399b0dc42832588f9a6c5e8879a8b754\n"
    },
    {
      "commit": "97d1c4f234d319b476f03c74a72487869fb43e1f",
      "tree": "b6ab08c4235474e9689508fbf7392e4ef8fd60f2",
      "parents": [
        "ddd9c712727881acbedec8a66535ab31fa2a5b4f",
        "58641508af4e3d3f553ff7e73304866755cfbd5b"
      ],
      "author": {
        "name": "Tarandeep Singh",
        "email": "tarandeep@google.com",
        "time": "Wed Aug 02 20:32:58 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 02 20:32:58 2017 +0000"
      },
      "message": "Merge changes from topic \u002762033391\u0027 into oc-dr1-dev\n\n* changes:\n  Add displayId in InputDispatcher, InputTransport\n  Enable InputMonitors for non-default display.\n"
    },
    {
      "commit": "d0bdfcb261c4c27cb048ea4abd9e0cd67454bbf5",
      "tree": "df436e307de5641c28db4b7deaed6d97741cbece",
      "parents": [
        "896a01d7ddc323184e5a038226c8b77c78065131",
        "346203f942789898b8be209049fa2c73a29a9330"
      ],
      "author": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Wed Aug 02 19:51:51 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 02 19:51:51 2017 +0000"
      },
      "message": "Merge changes If4271719,I9c9b5de9,I46a26a67 into oc-dr1-dev am: ddd9c71272 am: e124f74dff\nam: 346203f942\n\nChange-Id: Ied0a2337150aaf982833dc99dacb7015ae0fa01e\n"
    },
    {
      "commit": "ac8661beae733fde679c3ec190ea4f04974ed0cb",
      "tree": "e0930b493e0aac334ca484b8d9a0bfa843bd27c8",
      "parents": [
        "e15271d37e5bd94caa9c1d766862679d80279d82",
        "ddd9c712727881acbedec8a66535ab31fa2a5b4f"
      ],
      "author": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Wed Aug 02 19:46:22 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 02 19:46:22 2017 +0000"
      },
      "message": "Merge changes If4271719,I9c9b5de9,I46a26a67 into oc-dr1-dev\nam: ddd9c71272\n\nChange-Id: Ie3868b140dfc675f450ac5f436f3533c1d2bdc93\n"
    },
    {
      "commit": "346203f942789898b8be209049fa2c73a29a9330",
      "tree": "929adf4b7960edc2d035e35d47ddd3ba52ece821",
      "parents": [
        "98583cc7b2ea775fdbebe2418fbc78c54e766ce4",
        "e124f74dff97dfd178babd6e857a06e23e1d3394"
      ],
      "author": {
        "name": "Courtney Goeltzenleuchter",
        "email": "courtneygo@google.com",
        "time": "Wed Aug 02 19:36:35 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Aug 02 19:36:35 2017 +0000"
      },
      "message": "Merge changes If4271719,I9c9b5de9,I46a26a67 into oc-dr1-dev am: ddd9c71272\nam: e124f74dff\n\nChange-Id: I17280865ba7570933c3bfd04f2104704ac854607\n"
    },
    {
      "commit": "ddd9c712727881acbedec8a66535ab31fa2a5b4f",
      "tree": "3923fe3132b19051013550bdf1f8d3fe4d31e80c",
      "parents": [
        "d5e8f47effe8f7d3cc64ab1e3ae3fea05b9400b5",
        "281e8113d0ce20c702e847caf971663021eb65e3"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 02 18:35:41 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 02 18:35:41 2017 +0000"
      },
      "message": "Merge changes If4271719,I9c9b5de9,I46a26a67 into oc-dr1-dev\n\n* changes:\n  Communicate composition buffer dataspace to HWC\n  Add VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT.\n  Check wide-color support before adding extensions\n"
    },
    {
      "commit": "58641508af4e3d3f553ff7e73304866755cfbd5b",
      "tree": "bd7055925d0277f05b1dc723e24f7343e8f5638b",
      "parents": [
        "48aeb512e9c9492cb7b5ccf642795af7b4b97cd6"
      ],
      "author": {
        "name": "Tarandeep Singh",
        "email": "tarandeep@google.com",
        "time": "Mon Jul 31 10:51:54 2017 -0700"
      },
      "committer": {
        "name": "Tarandeep Singh",
        "email": "tarandeep@google.com",
        "time": "Tue Aug 01 13:36:10 2017 -0700"
      },
      "message": "Add displayId in InputDispatcher, InputTransport\n\nBug: 62033391\nTest: make StructLayout_test\nmake libinput_tests_InputEvent_test\nmake libinput_tests_InputPublisherAndConsumer_test\nRun tests under /data/nativetest64/libinput_tests/\n\nChange-Id: Id02cab83924d399eae0c1c233dc545fbb64945c2\n"
    }
  ],
  "next": "48561d635af5863a6c26ef7aaf0b73df926cfed3"
}
