)]}'
{
  "log": [
    {
      "commit": "fb64fca3da4633a0fc96c41da2a6622f3875532c",
      "tree": "1ed436fea201ceb802477f629f9295c83c9ce7b6",
      "parents": [
        "a96235081c2cc8453c9dbefb96fa96c02dca241c"
      ],
      "author": {
        "name": "Arthur Ishiguro",
        "email": "arthuri@google.com",
        "time": "Tue Apr 14 11:28:11 2020 -0700"
      },
      "committer": {
        "name": "Arthur Ishiguro",
        "email": "arthuri@google.com",
        "time": "Tue Apr 14 11:28:36 2020 -0700"
      },
      "message": "Revert \"Fail on flush if no sensors are found\"\n\nThis reverts commit 6eb75be73c6e368a8c2b9293b125b669429030f7.\n\nBug: 74395023\nTest: Revert\n\nChange-Id: I140b5502ab8ed1e37b7774236d8190dde774a6b7\n"
    },
    {
      "commit": "a96235081c2cc8453c9dbefb96fa96c02dca241c",
      "tree": "54efaadc2a8acd1a211ffc060068abbb9ef56152",
      "parents": [
        "fce46c19d112fb981ad1fa7b4b0fb465a7af69c9"
      ],
      "author": {
        "name": "Arthur Ishiguro",
        "email": "arthuri@google.com",
        "time": "Mon Apr 13 08:04:45 2020 -0700"
      },
      "committer": {
        "name": "Arthur Ishiguro",
        "email": "arthuri@google.com",
        "time": "Tue Apr 14 11:26:01 2020 -0700"
      },
      "message": "Revert \"Fix deadlock on SensorService\"\n\nThis reverts commit 410d567e0df67dc386b34267b077f84051e6b5fa.\n\nBug: 74395023\nTest: Revert\n\nChange-Id: Ib8507a5d51a480442431e23d39e0ebc648a8ad98\n"
    },
    {
      "commit": "fce46c19d112fb981ad1fa7b4b0fb465a7af69c9",
      "tree": "2383e7d6db9a42a24b132a005314d06209864d3b",
      "parents": [
        "06e0cee7de37628cb39898903300ae55c83189c0",
        "1162e4703be6f1a9e2958be20171930b13a37874"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 10 02:14:14 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 10 02:14:14 2020 +0000"
      },
      "message": "Merge \"SF: Fix color transform for composited virtual displays\" into rvc-dev"
    },
    {
      "commit": "06e0cee7de37628cb39898903300ae55c83189c0",
      "tree": "ac7891892e19581cc706f836af41d97499dce5b0",
      "parents": [
        "81ab746c41b355f03eca90849d9d45adea8a3bca",
        "3bb979136595c6132d6c3b2a2aacac5bf352c4ef"
      ],
      "author": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Thu Apr 09 21:07:03 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 09 21:07:03 2020 +0000"
      },
      "message": "Merge \"Check for no error in getting planeLayout in lock\" into rvc-dev"
    },
    {
      "commit": "3bb979136595c6132d6c3b2a2aacac5bf352c4ef",
      "tree": "7e4cdea928e421605a19facde709d77286129fa7",
      "parents": [
        "14f49cd4d3566751258de3b050c2aea181fea9fc"
      ],
      "author": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Thu Apr 09 10:40:10 2020 -0700"
      },
      "committer": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Thu Apr 09 10:40:10 2020 -0700"
      },
      "message": "Check for no error in getting planeLayout in lock\n\nBug: 153375197\nTest: build, boot, libui_test\nChange-Id: I47715b31d759367f22ca14598e43b078094d9d75\n"
    },
    {
      "commit": "81ab746c41b355f03eca90849d9d45adea8a3bca",
      "tree": "aa9873412aecded865db6e55b588021cd17191c6",
      "parents": [
        "164a1d8b1eb9b12894e62e76813421d8bd7fd830",
        "7539872015a3f0af9bc5c74eb3c313595db5123b"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Apr 09 01:57:30 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 09 01:57:30 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Reset VsyncReactor\u0027s timer thread\" into rvc-dev"
    },
    {
      "commit": "164a1d8b1eb9b12894e62e76813421d8bd7fd830",
      "tree": "379f43d1d2432e577159209769b23d65b9a8ad3d",
      "parents": [
        "db283837dc09d0f5d7f9d54ea1b26d2651488ece",
        "73454c3371c6c031c602b6ae90a565a96175e685"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 09 00:19:23 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 09 00:19:23 2020 +0000"
      },
      "message": "Merge \"Check if the trace was stopped before starting the tracing thread\" into rvc-dev"
    },
    {
      "commit": "db283837dc09d0f5d7f9d54ea1b26d2651488ece",
      "tree": "c8c87f42fdcd715711869c0832c95b39cabd21df",
      "parents": [
        "90bce2d72316b931bd27c03253f054c654f29ef9",
        "2803792bfa2dbefc2bf03f9417d13aaae2ce5673"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 08 23:33:25 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 08 23:33:25 2020 +0000"
      },
      "message": "Merge changes Ibe02e76d,Ibb542595,Ic63aba39 into rvc-dev\n\n* changes:\n  SurfaceComposerClient BLAST: Avoid recaching buffers.\n  SurfaceComposerClient BLAST: cacheBuffers before writing transaction to parcel.\n  SurfaceComposerClient BLAST Transactions: Correctly merge mContainsBuffer\n"
    },
    {
      "commit": "2803792bfa2dbefc2bf03f9417d13aaae2ce5673",
      "tree": "65cec076da97bba6d5d869d8fb690cff02dcb141",
      "parents": [
        "158531d044690c52dfd1889e699a5f723df44b95"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Apr 08 10:57:07 2020 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Apr 08 10:57:07 2020 -0700"
      },
      "message": "SurfaceComposerClient BLAST: Avoid recaching buffers.\n\ncacheBuffers works like this:\n 1. Look for any State with eBufferChanged\n 2. If it has a cache entry clear eBufferChanged and set the cache\n 3. If it doesn\u0027t have an entry leave eBufferChanged set, but also set\n    the cache so we can use it next time.\nIn the third case where we don\u0027t clear eBufferChanged we might attempt\nto recache buffers that have already been cached. This might happen\nin the wrong process.\n\nBug: 153561718\nTest: Existing tests pass. BLAST Sync Engine manual test.\nChange-Id: Ibe02e76d40fedef46a2418587e28e598d6e2c614\n"
    },
    {
      "commit": "158531d044690c52dfd1889e699a5f723df44b95",
      "tree": "4d4db53c263d16cb0be7c52c1b29fba61a5d47b6",
      "parents": [
        "bbc8562601d272343df7649f2561ad475f8639f0"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Apr 08 10:53:30 2020 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Apr 08 10:54:00 2020 -0700"
      },
      "message": "SurfaceComposerClient BLAST: cacheBuffers before writing transaction to parcel.\n\nIf we write the Transaction to a parcel, we want to ensure the Buffers are cached\nbefore crossing the IPC boundary. Otherwise the receiving party will cache the buffers\nbut is unlikely to use them again as they are owned by the other process.\nYou may be asking yourself, is this const cast safe? Const cast is safe up\nuntil the point where you try and write to an object that was originally const at which\npoint we enter undefined behavior. In this case we are safe though, because there are\ntwo possibilities:\n   1. The SurfaceComposerClient::Transaction was originally non-const. Safe.\n   2. It was originall const! In this case not only was it useless, but it by definition\n      contains no composer states and so cacheBuffers will not perform any writes.\n\nBug: 153561718\nTest: Existing tests pass. Manual test of BLAST Sync Engine.\nChange-Id: Ibb5425955f3d8c40f8c227d8911989dd76f8afe4\n"
    },
    {
      "commit": "bbc8562601d272343df7649f2561ad475f8639f0",
      "tree": "9a8daa251956c9554288d12aa38ed8a04577953b",
      "parents": [
        "5653ee259cc67b186b056e8a3474741d2dc35289"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Apr 08 10:45:12 2020 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Apr 08 10:45:12 2020 -0700"
      },
      "message": "SurfaceComposerClient BLAST Transactions: Correctly merge mContainsBuffer\n\nIf we merge a transaction which does not contain a buffer in to a transaction\nwhich already contained a buffer, the resulting transaction still needs to\nhave mContainsBuffer\u003dtrue, otherwise we won\u0027t properly cache the buffers.\n\nBug: 153561718\nTest: Existing tests pass. Manual test of BLASTSyncEngine.\nChange-Id: Ic63aba390757285730cb19406dc5c6b73d0c3437\n"
    },
    {
      "commit": "90bce2d72316b931bd27c03253f054c654f29ef9",
      "tree": "4173578f196984f212701d8799d2ffefd3dcc857",
      "parents": [
        "5a6d857f3361f46d58314ff45a074157b2600a92",
        "23839621268f2d25d976047754a24c6618d513e9"
      ],
      "author": {
        "name": "Oli Lan",
        "email": "olilan@google.com",
        "time": "Wed Apr 08 08:39:11 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 08 08:39:11 2020 +0000"
      },
      "message": "Merge \"Add installd method to delete CE snapshots.\" into rvc-dev"
    },
    {
      "commit": "5a6d857f3361f46d58314ff45a074157b2600a92",
      "tree": "ea61553b7646cd0aa39995553821da5eafa9355a",
      "parents": [
        "dd543193a946ee8e65211742bfc6f667f906e141"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Mar 23 23:56:15 2020 -0700"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Tue Apr 07 19:53:18 2020 -0700"
      },
      "message": "Fix filtering for screenshotting custom displays.\n\nPreviously, filtering was computed for screenshots by checking if\nfiltering was required for the DisplayDevice itself. That\u0027s correct for\nrendering custom display sizes since we need to upsample to the\nphysical panel, but it\u0027s wrong for screenshotting to an output buffer\nwhere the logical transform does not involve a scale. Instead, we want\nto compare the source crop with the destination buffer size when\ndetermining whether we need to apply linear filtering.\n\nAs part of this, some of the rendering math is now simpler. Rather than\nsetting DisplaySettings::physicalDisplay and DisplaySettings::clip to be\nthe same and explicitly computing the transform matrix in RenderEngine,\nwe instead set DisplaySettings::clip to be the logical viewport. Then\nthe global transform is implicitly applied as part of mapping the output\nin glViewport. This is because if the logical display is smaller than\nthe screen size, with the previous behavior applying the global transform\nwill scale up the layer stack to the physical display size. But if we\nwant pixel-accurate screenshots we will need to downsample back down to\nthe logical display size, which may cause errors. The math simplification\nwill avoid that scenario entirely.\n\nThis also means that screenshot code needs to be adjusted - some callers\npass in a cropping rectangle that assumes the display screenshot is\ncaptured in portrait orientation. Other callers pass in a cropping\nrectangle relative to a particular layer\u0027s coordinate space. For each of\nthose paths, the cropping rectangle must be transformed to the logical\ndisplay space.\n\nThis has also discovered a bug in setting the background fill of the\nscreenshot, which has now been fixed.\n\nBug: 129101431\nTest: adb shell screepcap\nTest: Modify wm size and density, and run\nSurfaceViewTests#testMovingWhiteSurfaceView\nTest: Capture screenshots through vysor\nTest: Capture screenshots on Pixel 3XL with notch hide\nTest: Physically capture screenshots\nTest: Display rotations\nTest: SurfaceFlinger_test\nTest: librenderengine_test\nTest: libsurfaceflinger_unittest\nTest: libcompositionengine_test\n\nChange-Id: I7f4e98d4c5aa53a995fd7da70078a2e5ea43b14f\n"
    },
    {
      "commit": "dd543193a946ee8e65211742bfc6f667f906e141",
      "tree": "88e358abb56c2a39f36c7d7b8891b478b324c0f3",
      "parents": [
        "8aea79013448caab444bb6d43de5eb4199774e10",
        "40773d938215e0f4387951a4ce5608cb2e4dfe49"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 08 02:27:25 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 08 02:27:25 2020 +0000"
      },
      "message": "Merge \"SF: Include fence returned from renderScreen into layers\u0027 release fence\" into rvc-dev"
    },
    {
      "commit": "7539872015a3f0af9bc5c74eb3c313595db5123b",
      "tree": "81e171a255495c1257847fec54fa842d4b016e62",
      "parents": [
        "2dbf7c97a39db33331c21fbd95d5cfea0947eadd"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Apr 07 14:08:45 2020 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Apr 07 18:29:06 2020 -0700"
      },
      "message": "SurfaceFlinger: Reset VsyncReactor\u0027s timer thread\n\nIf any of the syscalls the timer uses returns an error, reset the timer.\nThis is a workaround for an issue seen where VsyncReactor is not calling\nnew callbacks. In addition this change adds more log prints to help\nidentifying the underlying issue.\n\nBug: 151892277\nTest: simulate an error in syscall and observe timer resets\nChange-Id: I6fd62f9d73f75f32a87d1483cea14f3f1b358507\n"
    },
    {
      "commit": "8aea79013448caab444bb6d43de5eb4199774e10",
      "tree": "483355b6be4a49d29d78a69d3ac63d69294284e1",
      "parents": [
        "5e614328d7da6608eee181549102bae745bc25b7",
        "c43b88edd15b73dc46010d3fb303cbde76ff0eac"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 07 23:24:35 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 07 23:24:35 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: fix app duration by reducing 16.6ms\" into rvc-dev"
    },
    {
      "commit": "5e614328d7da6608eee181549102bae745bc25b7",
      "tree": "5ffb7cc5e60afc247480eebd0b164a7ef12172ac",
      "parents": [
        "fcf9aeceb7e5ea2142f347e7575c649cd291768d",
        "65bc2aef5e6b3f4f155c03c9e0ec038f161fbc80"
      ],
      "author": {
        "name": "Collin Fijalkovich",
        "email": "cfijalkovich@google.com",
        "time": "Tue Apr 07 19:30:46 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 07 19:30:46 2020 +0000"
      },
      "message": "Merge \"Add mm_event trace events to the atrace \u0027memory\u0027 category\" into rvc-dev"
    },
    {
      "commit": "fcf9aeceb7e5ea2142f347e7575c649cd291768d",
      "tree": "c1073b4bdc7c9288ae5e8c8609cf2cf1d4f0964b",
      "parents": [
        "e9c8f5f59525dcb022baf4a54896caa86ecb54ed",
        "d407190b3691b8b404143281840b805ee21d7f8f"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Tue Apr 07 18:20:36 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 07 18:20:36 2020 +0000"
      },
      "message": "Merge \"Add frame rate flexibility token\" into rvc-dev"
    },
    {
      "commit": "e9c8f5f59525dcb022baf4a54896caa86ecb54ed",
      "tree": "cf84ca1af63ac3230832afa9efe329002c39eceb",
      "parents": [
        "a473a08b15c0733516567ff515794c97e2c9d147",
        "410d567e0df67dc386b34267b077f84051e6b5fa"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 07 17:22:44 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 07 17:22:44 2020 +0000"
      },
      "message": "Merge \"Fix deadlock on SensorService\" into rvc-dev"
    },
    {
      "commit": "65bc2aef5e6b3f4f155c03c9e0ec038f161fbc80",
      "tree": "7a6258152a4c5f914a87124bdba401908368fcfe",
      "parents": [
        "cd5ecdbe3a03663a2852a16106b435e4acb940ce"
      ],
      "author": {
        "name": "Collin Fijalkovich",
        "email": "cfijalkovich@google.com",
        "time": "Wed Apr 01 18:15:48 2020 +0000"
      },
      "committer": {
        "name": "Collin Fijalkovich",
        "email": "cfijalkovich@google.com",
        "time": "Tue Apr 07 16:28:42 2020 +0000"
      },
      "message": "Add mm_event trace events to the atrace \u0027memory\u0027 category\n\nBug: 150130660\nTest: Recorded a trace via the atrace commandline and verified\nmm_event entries were included.\n\nMerged-In: Ia5e13cf0aaaeb88c0c6efa68f89427b01af81f97\nChange-Id: Ia5e13cf0aaaeb88c0c6efa68f89427b01af81f97\n(cherry picked from commit f1fb849a35186abfe8d0c356452418db0607ccad)\n"
    },
    {
      "commit": "a473a08b15c0733516567ff515794c97e2c9d147",
      "tree": "195c75a42548be04d5d8c247110ef877ed5c996d",
      "parents": [
        "9dd3abd518bdfb94b0e612497e2e26f7f9c79608",
        "60db8c061b2f94b8c36af2ed44ee74aed3a820cf"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 07 16:23:49 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 07 16:23:49 2020 +0000"
      },
      "message": "Merge \"Fix a long standing locking issue with tracing thread\" into rvc-dev"
    },
    {
      "commit": "9dd3abd518bdfb94b0e612497e2e26f7f9c79608",
      "tree": "f1c81c06c3c6c0f4920951b8fc32f0652ea1e4e1",
      "parents": [
        "24a3146fbe7cf21760e16fa455dee55b01955577",
        "49cbd510f1f1502eb5df38ce485087555623d72b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 07 12:15:00 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 07 12:15:00 2020 +0000"
      },
      "message": "Merge \"Pass updatable BCP packages to dex2oat.\" into rvc-dev"
    },
    {
      "commit": "49cbd510f1f1502eb5df38ce485087555623d72b",
      "tree": "ffe233ba6ed42d3c15656b54c4760f8480219641",
      "parents": [
        "fc4165121b6343e674f3899784eeef367f3801fa"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 06 10:38:58 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 07 09:36:54 2020 +0100"
      },
      "message": "Pass updatable BCP packages to dex2oat.\n\n(cherry picked from commit 79dc3c681f6d7a6bd9049092db27d3ca2d32785f)\n\nTest: aosp_taimen-userdebug boots.\nTest: Check logcat for the new argument in the dex2oat\n      invocations that happen on first boot.\nBug: 151314205\nMerged-In: I904fd0ba79350e01158321383b7b1fe5390caddf\nChange-Id: I8307fa10dae832787a8ddaa20125423c3c2e47df\n"
    },
    {
      "commit": "24a3146fbe7cf21760e16fa455dee55b01955577",
      "tree": "d812bf4a1aee745dadb93fdbaca6b896dd81ab76",
      "parents": [
        "584ab0d9d98d0f0ae0b5974353e8369f46fff889",
        "ffcba5e3cabb9a3b3e69d188d74fa4e2f2919923"
      ],
      "author": {
        "name": "Dan Shi",
        "email": "dshi@google.com",
        "time": "Tue Apr 07 02:50:24 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 07 02:50:24 2020 +0000"
      },
      "message": "Merge \"Rename vts-core to vts\" into rvc-dev"
    },
    {
      "commit": "410d567e0df67dc386b34267b077f84051e6b5fa",
      "tree": "4d3b089e0b2ed8035ae5b213394703f7ec3a28c4",
      "parents": [
        "584ab0d9d98d0f0ae0b5974353e8369f46fff889"
      ],
      "author": {
        "name": "Arthur Ishiguro",
        "email": "arthuri@google.com",
        "time": "Mon Apr 06 08:50:20 2020 -0700"
      },
      "committer": {
        "name": "Arthur Ishiguro",
        "email": "arthuri@google.com",
        "time": "Mon Apr 06 16:58:25 2020 -0700"
      },
      "message": "Fix deadlock on SensorService\n\nIf mLock is held by SensorService::threadLoop(), and a new call\nfrom SensorEventConnection comes in to e.g. enable/disable a sensor,\nthis thread must wait for the mLock to be released. However, if this\nthread holds mConnectionLock in SensorEventConnection, and SensorService\ninvokes SensorEventConnection.sendEvent, the system will come into a\ndeadlock because both threads are waiting for each other.\n\nTo avoid this situation unlock SensotEventConnection\u0027s mConnectionLock\nwhile going out of scope.\n\nAlso create separate mutexes for modifying mSensorInfo and\nmSensorInfoBackup for better separation.\n\nBug: 153188258\nTest: 1) Run sensor logger and enable sensor, put app in background.\n      2) Open a_sns_test and start streaming sensor samples\n      3) Open app again and verify no system ANR, sensor samples\n      continue to be received on app.\nChange-Id: If137f39918a8b1148dcc00f1b1d82b4454bb5c7b\n"
    },
    {
      "commit": "584ab0d9d98d0f0ae0b5974353e8369f46fff889",
      "tree": "4776e5f0cb21da73b991944a46955dd050248acf",
      "parents": [
        "cd5ecdbe3a03663a2852a16106b435e4acb940ce",
        "14c96b1019ef961e23ec972e0c8756039b58cf45"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 06 23:30:35 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 06 23:30:35 2020 +0000"
      },
      "message": "Merge \"Extend background app behavior for direct channel\" into rvc-dev"
    },
    {
      "commit": "c43b88edd15b73dc46010d3fb303cbde76ff0eac",
      "tree": "1cce35b7b94fd477ebcc83cca5f8be079d1b210a",
      "parents": [
        "2dbf7c97a39db33331c21fbd95d5cfea0947eadd"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Apr 06 16:25:31 2020 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Apr 06 16:25:31 2020 -0700"
      },
      "message": "SurfaceFlinger: fix app duration by reducing 16.6ms\n\nApp durations are programmed incorrectly with an additional 16.6ms\nto the value. This change doesn\u0027t have a real impact since the durations\nare translated to the same offsets in SurfaceFlinger.\n\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nBug: 153381686\nChange-Id: Ic433bfef4dfc53130e51e50975e527466e159d22\n"
    },
    {
      "commit": "ffcba5e3cabb9a3b3e69d188d74fa4e2f2919923",
      "tree": "3ddbb482305bb459ed593166efe8dc3a431e1c1d",
      "parents": [
        "4e2936c2d1d9fa231da596c4288a612574a194e8"
      ],
      "author": {
        "name": "Dan Shi",
        "email": "dshi@google.com",
        "time": "Mon Apr 06 16:15:58 2020 -0700"
      },
      "committer": {
        "name": "Dan Shi",
        "email": "dshi@google.com",
        "time": "Mon Apr 06 16:15:58 2020 -0700"
      },
      "message": "Rename vts-core to vts\n\nBug: 151896491\nTest: presubmit check\nExempt-From-Owner-Approval: This CL renames suite name vts-core to vts.\nIt won\u0027t change test logic or behavior.\n\nChange-Id: I4522a350a0920badc649f02bf98bd6b01745dd77\n"
    },
    {
      "commit": "cd5ecdbe3a03663a2852a16106b435e4acb940ce",
      "tree": "7023dbc54b03b5a52cdd273cf9b0ab5991b5bb39",
      "parents": [
        "f1274d453c8c2a23bb8e9f156b17dd5446c77703",
        "e5b5e45ee1b0edecf836152ae3236ed218ee8401"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Apr 06 20:43:34 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 06 20:43:34 2020 +0000"
      },
      "message": "Merge \"Wait longer for expected input events\" into rvc-dev"
    },
    {
      "commit": "d407190b3691b8b404143281840b805ee21d7f8f",
      "tree": "6f5ea79535e90f0c42940db76f4ef57d2b368c8d",
      "parents": [
        "4e2936c2d1d9fa231da596c4288a612574a194e8"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Tue Mar 24 16:02:53 2020 -0700"
      },
      "committer": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Mon Apr 06 12:55:16 2020 -0700"
      },
      "message": "Add frame rate flexibility token\n\nAdd support for temporarily relaxing frame rate restrictions in surface\nflinger. This is used by CTS tests to get a consistent device state\nwhile running frame rate tests.\n\nBug: 148033900\n\nTest: - On a Pixel 4, I turned the brightness down and covered the\nambient light sensor, causing the display manager to set a frame rate\nrestriction. I ran the frame rate CTS test without these CLs applied,\nand confirmed the test failed because surface flinger couldn\u0027t switch\nframe rates, as expected. Then I ran the tests with the CLs applied, and\nconfirmed the tests pass.\n\n- I confirmed that, without adopting shell permission identity, the CTS\ntest is denied the request to acquire a frame rate flexibility token. So\nnormal apps won\u0027t be able to access this.\n\nChange-Id: I6685edc4bc07c7888b79a9dd72a90f56b74e7604\n"
    },
    {
      "commit": "f1274d453c8c2a23bb8e9f156b17dd5446c77703",
      "tree": "235d4bdf22e549ae79a5301c12a07b69dc2c5356",
      "parents": [
        "5653ee259cc67b186b056e8a3474741d2dc35289"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Mon Mar 02 17:49:16 2020 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Mon Apr 06 17:56:22 2020 +0000"
      },
      "message": "SF: Parse HDMI Physical Address from EDID.\n\nThis CL parses HDMI Physical Address from the HDMI Vendor\nSpecific Data Block in the EDID of the connected display.\nThis information will be later added to the DeviceProductInfo\nstructure.\n\nBug: 147994746\nTest: atest DisplayIdentificationTest\nChange-Id: I5098f488b3cbf0b40896c837d24d2d29aa985431\n(cherry picked from commit 7a9ba3096a4cbbc0858e2ba822cc758c6e7b60d4)\n"
    },
    {
      "commit": "e5b5e45ee1b0edecf836152ae3236ed218ee8401",
      "tree": "08471a486ac1bc8836db9730f4889a677e03a7c3",
      "parents": [
        "34560b6d0950b54497d70a319d5496ccc0ffec10"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Apr 02 17:59:16 2020 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Mon Apr 06 08:47:56 2020 -0700"
      },
      "message": "Wait longer for expected input events\n\nSometimes, a device can be slow. That means, some events take a long\ntime to process, especially if they involve kernel processing these from\nuserspace and sending them back to userspace.\n\nWhen the input device is being added or removed, we are currently not\nwaiting long enough to be notified. The test currently fails because the\ninput device added notification never arrived.\n\nIt turns out there are 2 cases where we are currently waiting for an\ninput event from eventhub:\n1) When we know how many events we expect, and we don\u0027t care how long\nthey will take. We are willing to wait for a long time, because we know\nthey will come eventually. When we got the expected number of events, we\ncan stop waiting for more\n2) When we have no idea how many events to expect, and we don\u0027t want to\nwait - we just need to take all immediately available.\n\nTo account for the 2 (and only the 2 cases above), refactor\nEventHub_test to wait for a specific number of events instead of a\ntimeout. If no expected number of events is provided, read all\nimmediately available ones without a limit.\n\nThis change also makes the test ~ 50% faster, because we are now\nstopping the wait after we have received the expected number of events.\n\nBug: 149155998\nTest: /data/nativetest64/inputflinger_tests/inputflinger_tests --gtest_filter\u003d*EventHubTest* --gtest_repeat\u003d1000\nChange-Id: I732c14c09567e9231bcc83141368b1614805f9ac\n"
    },
    {
      "commit": "23839621268f2d25d976047754a24c6618d513e9",
      "tree": "22634251420813ad276f626bfd69a33a5a47f90d",
      "parents": [
        "5653ee259cc67b186b056e8a3474741d2dc35289"
      ],
      "author": {
        "name": "Oli Lan",
        "email": "olilan@google.com",
        "time": "Mon Mar 16 18:18:41 2020 +0000"
      },
      "committer": {
        "name": "Oli Lan",
        "email": "olilan@google.com",
        "time": "Mon Apr 06 14:16:06 2020 +0000"
      },
      "message": "Add installd method to delete CE snapshots.\n\nThis adds a new installd service method to allow CE snapshots to be\ndeleted.\n\n- This is the rvc-dev version of ag/10752794, to resolve a merge\n  conflict.\n\nThe existing method for deleting snapshots - destroyAppDataSnapshot -\ndoes not work if the user is not unlocked. Although it takes the inode\nof the snapshot directory, it still cannot access the parent directory\nand so the delete fails.\n\nThe new method is destroyCeSnapshotsNotSpecified, as it deletes all\nCE snapshots for the specified user, except for those with snapshot ids\nin a provided list.\n\nRollbackManager will call this method when the user unlocks, passing a\nlist of all current rollbacks. This will ensure that all expired\nsnapshots are deleted. It will also allow any \"orphaned\" snapshots\n(e.g. from tests or previous snapshots that have not been deleted) to\nbe cleaned up.\n\nThe new method is expected to be called when the user has unlocked -\nit will fail if the user is not unlocked.\n\nBug: 147806409\nTest: atest AppDataSnapshotTest#DestroyCeSnapshotsNotSpecified (new test)\nChange-Id: Iab048733ac794261f906ffb9e3b19f331dc67a76\nMerged-In: Iab048733ac794261f906ffb9e3b19f331dc67a76\n"
    },
    {
      "commit": "5653ee259cc67b186b056e8a3474741d2dc35289",
      "tree": "1d5d51e71fb5e4e0c6b197706272a65277aab971",
      "parents": [
        "4e2936c2d1d9fa231da596c4288a612574a194e8",
        "9ce94670ce0c3e7b96bb10f561169eaeb766c801"
      ],
      "author": {
        "name": "Abhijeet Kaur",
        "email": "abkaur@google.com",
        "time": "Mon Apr 06 12:35:56 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 06 12:35:56 2020 +0000"
      },
      "message": "Merge \"Copy Screenshot to fd if and only if user consent approved\" into rvc-dev"
    },
    {
      "commit": "40773d938215e0f4387951a4ce5608cb2e4dfe49",
      "tree": "43e06deade749c58707b6270eb48247fe14863db",
      "parents": [
        "5ea5df566c65074a7f405d8a31ed894f169785cd"
      ],
      "author": {
        "name": "Yichi Chen",
        "email": "yichichen@google.com",
        "time": "Wed Apr 01 10:10:18 2020 +0800"
      },
      "committer": {
        "name": "Yichi Chen",
        "email": "yichichen@google.com",
        "time": "Mon Apr 06 16:11:57 2020 +0800"
      },
      "message": "SF: Include fence returned from renderScreen into layers\u0027 release fence\n\nIn previous SurfaceFlinger implementation, the release fence generated\nfrom the call of renderScreen was returned to its callers only. However,\nthe access of those rendered buffers from other components wasn\u0027t aware\nof the extra work inside renderScreen. This patch includes the fence\ninto layers\u0027 release fence to allow the GPU to finish reading the buffer\nbefore codec writes new context into the buffer.\n\nBug: 149962883\nBug: 152292389\nTest: Rotate video on youtube over 1 hour without fence leakge\n\nChange-Id: I17cc3e816236d2695f30b45a0be560fb6741f16f\n"
    },
    {
      "commit": "73454c3371c6c031c602b6ae90a565a96175e685",
      "tree": "21f54b565ffae7ed645734dd47aa275c8c760989",
      "parents": [
        "6aa156cad417719c6ed9b84a8ed04e5ab7a2bc31"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Apr 03 18:56:19 2020 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Sat Apr 04 01:58:40 2020 +0000"
      },
      "message": "Check if the trace was stopped before starting the tracing thread\n\nIf a winscope trace is started and stopped quickly, the tracing thread\nwill not be stopped. The tracing thread waits for a conditional variable\nnotification that is sent before the thread starts running. To fix the\nissue, properly initialize the trace enabled variable in the tracing\nthread.\n\nTest: atest FlickerLibTest:LayersTraceMonitorTest\nFixes: 153206487\nChange-Id: I0c591c1fc3209327b40323b3ebb4fa4279c6ed05\n"
    },
    {
      "commit": "4e2936c2d1d9fa231da596c4288a612574a194e8",
      "tree": "0b343ff3f7e26f02ac3ddb6fc2b9485f056485d4",
      "parents": [
        "73e0f3501c5725c144fb743961be8bd522fec695",
        "8de697ed6117ba26d46196df4df5c9ce0295a2a9"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 03 23:39:11 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 03 23:39:11 2020 +0000"
      },
      "message": "Merge \"[SurfaceFlinger] Add refresh rate counts to TimeStats\" into rvc-dev"
    },
    {
      "commit": "73e0f3501c5725c144fb743961be8bd522fec695",
      "tree": "b863827c9e6654f357f0bf1c4af8b55ca4df4465",
      "parents": [
        "ef93134ef830f2f98ce97d07f4358cd81a351e4c",
        "571aa9c1d94f3de4bb55e03d26bcad962f03114d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 03 23:24:54 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 03 23:24:54 2020 +0000"
      },
      "message": "Merge \"Performance optimizations\" into rvc-dev"
    },
    {
      "commit": "ef93134ef830f2f98ce97d07f4358cd81a351e4c",
      "tree": "c74057582c24a8ff029f15a4763c34c45c472ede",
      "parents": [
        "fab6297a1f270c476db34117530a8c6faa836186",
        "fe76013f339325b68f00f3ce4491cf0f1ef3f7e7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 03 22:45:34 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 03 22:45:34 2020 +0000"
      },
      "message": "Merge \"Making native transactions one-way as well.\" into rvc-dev"
    },
    {
      "commit": "fab6297a1f270c476db34117530a8c6faa836186",
      "tree": "3282bc0f03a45a7aeff05ae070a543014db336ed",
      "parents": [
        "d9c19846a2331a02ef1a041299f061a9a05b2749",
        "28b9fa26f16b8d788d749c47d30ed3e450bff92b"
      ],
      "author": {
        "name": "Lucas Dupin",
        "email": "dupin@google.com",
        "time": "Fri Apr 03 22:03:50 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 03 22:03:50 2020 +0000"
      },
      "message": "Merge \"Reallocate blur textures if they don\u0027t fit\" into rvc-dev"
    },
    {
      "commit": "571aa9c1d94f3de4bb55e03d26bcad962f03114d",
      "tree": "921c23b7731941039e5d8ef91bbdaf561632c2b2",
      "parents": [
        "e8a88834b77ca9d861af1851b3708889bf3be60f"
      ],
      "author": {
        "name": "Lucas Dupin",
        "email": "dupin@google.com",
        "time": "Thu Apr 02 11:43:21 2020 -0700"
      },
      "committer": {
        "name": "Lucas Dupin",
        "email": "dupin@google.com",
        "time": "Fri Apr 03 14:41:07 2020 -0700"
      },
      "message": "Performance optimizations\n\n- Perform blur operation while downsampling to save 1 pass\n- Remove unnecessary glBindFrameBuffer calls, given that they might\n  flush the gl pipeline.\n\nBug: 152792193\nTest: systraces\nChange-Id: I462de2642c0400dd31d1808fdfcf522c319fa839\n"
    },
    {
      "commit": "fe76013f339325b68f00f3ce4491cf0f1ef3f7e7",
      "tree": "d8800c1dbe5d3579f3510d31a9fa6e282b77532a",
      "parents": [
        "e8a88834b77ca9d861af1851b3708889bf3be60f"
      ],
      "author": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Fri Apr 03 00:38:46 2020 -0700"
      },
      "committer": {
        "name": "Alex Buynytskyy",
        "email": "alexbuy@google.com",
        "time": "Fri Apr 03 13:55:27 2020 -0700"
      },
      "message": "Making native transactions one-way as well.\n\nFixing crash in native callback after changing permissions.\n\nBug: b/152633648\nTest: adb shell appops set 1000 GET_USAGE_STATS deny\nChange-Id: Ifbc2d2d982d2dd9b0b9c0ed109f827de9bed2768\n"
    },
    {
      "commit": "14c96b1019ef961e23ec972e0c8756039b58cf45",
      "tree": "503eb8a035d602afae4e8448f0170e592dc564b1",
      "parents": [
        "d9c19846a2331a02ef1a041299f061a9a05b2749"
      ],
      "author": {
        "name": "Arthur Ishiguro",
        "email": "arthuri@google.com",
        "time": "Thu Mar 26 15:09:03 2020 -0700"
      },
      "committer": {
        "name": "Arthur Ishiguro",
        "email": "arthuri@google.com",
        "time": "Fri Apr 03 12:42:42 2020 -0700"
      },
      "message": "Extend background app behavior for direct channel\n\nBug: 74395023\nTest: Modify sensor logger to use direct channel. Check that connection\nis not active when the app becomes idle, and becomes active once the app\nis no longer idle.\n\nChange-Id: Ib4ec4b639698bf81f58051af0047a4d0982124a5\n"
    },
    {
      "commit": "9ce94670ce0c3e7b96bb10f561169eaeb766c801",
      "tree": "523c5d400107826487b2f8353fd434e8e1f11b51",
      "parents": [
        "d9c19846a2331a02ef1a041299f061a9a05b2749"
      ],
      "author": {
        "name": "Abhijeet Kaur",
        "email": "abkaur@google.com",
        "time": "Wed Apr 01 17:22:36 2020 +0100"
      },
      "committer": {
        "name": "Abhijeet Kaur",
        "email": "abkaur@google.com",
        "time": "Fri Apr 03 18:50:36 2020 +0100"
      },
      "message": "Copy Screenshot to fd if and only if user consent approved\n\nCurrently the dumpstate screenshot file is copied to the screenshot fd\n(provided by the API caller) even when user consent times out.\n\nBug: 152944488\nTest: Manual\nChange-Id: I0ede8bc8cf5333ea586218a37fd6456f782a50c7\n"
    },
    {
      "commit": "d9c19846a2331a02ef1a041299f061a9a05b2749",
      "tree": "bfdb8566be7ac134764a28b7078b74aa3e06162a",
      "parents": [
        "58a17ca150dd6f1671c9cae27570f9e147117485",
        "daff25a9d742241b2cd29c024689e3004aa39ad5"
      ],
      "author": {
        "name": "Nandana Dutt",
        "email": "nandana@google.com",
        "time": "Fri Apr 03 15:01:29 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 03 15:01:29 2020 +0000"
      },
      "message": "Merge \"Make dumpstate listener methods async\" into rvc-dev"
    },
    {
      "commit": "58a17ca150dd6f1671c9cae27570f9e147117485",
      "tree": "4dd76471486c49f36a28cb7c5af1137fde2f3efb",
      "parents": [
        "fc4165121b6343e674f3899784eeef367f3801fa",
        "a407fb81372c6571c28d603504b23ece2d6bc79e"
      ],
      "author": {
        "name": "Abhijeet Kaur",
        "email": "abkaur@google.com",
        "time": "Fri Apr 03 11:05:17 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 03 11:05:17 2020 +0000"
      },
      "message": "Merge \"Update Last ID early in the bugreport generation\" into rvc-dev"
    },
    {
      "commit": "daff25a9d742241b2cd29c024689e3004aa39ad5",
      "tree": "69798d9d5a877155f54750664437551d542e8ae8",
      "parents": [
        "f835e028b3acb1838b4798a356073d07e76dfd9c"
      ],
      "author": {
        "name": "Nandana Dutt",
        "email": "nandana@google.com",
        "time": "Thu Apr 02 11:05:04 2020 +0100"
      },
      "committer": {
        "name": "Nandana Dutt",
        "email": "nandana@google.com",
        "time": "Fri Apr 03 08:16:50 2020 +0000"
      },
      "message": "Make dumpstate listener methods async\n\nonError can race with death recipient and trigger a different error,\nso not making it async.\n\nBUG: 147703592\nTest: Take an interactive bugreport - observe fewer warnings in logcat\nabout oneway.\n\nChange-Id: Idad33bf1927ad9573eb1891c9f56c7e606815fa6\n"
    },
    {
      "commit": "1162e4703be6f1a9e2958be20171930b13a37874",
      "tree": "ad2270707666d172d06f0cbe520b233268d752a7",
      "parents": [
        "edbc86de0530ebe4919ce9a84b221f4f32fd67e1"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Thu Apr 02 19:02:47 2020 -0700"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Thu Apr 02 20:23:10 2020 -0700"
      },
      "message": "SF: Fix color transform for composited virtual displays\n\nag/6455586 inadvertently changed the condition to never skip it.\n\nBug: 149968803\nTest: Overlay display is not doubly sepia when Night Light is on.\nTest: libcompositionengine_test\nChange-Id: Ic33ba3069be8544ada1304461ab881b39b9fd1f9\n"
    },
    {
      "commit": "28b9fa26f16b8d788d749c47d30ed3e450bff92b",
      "tree": "bba0631815fce7ec33c7f32665f7bffe22ee0e0d",
      "parents": [
        "e8a88834b77ca9d861af1851b3708889bf3be60f"
      ],
      "author": {
        "name": "Lucas Dupin",
        "email": "dupin@google.com",
        "time": "Thu Apr 02 15:29:35 2020 -0700"
      },
      "committer": {
        "name": "Lucas Dupin",
        "email": "dupin@google.com",
        "time": "Thu Apr 02 15:40:54 2020 -0700"
      },
      "message": "Reallocate blur textures if they don\u0027t fit\n\nRenderEngine#drawLayers might be called with multiple display sizes.\nSometimes, the display might be quite small, not reflecting a physical\ndevice. This happens becuse we support color sampling, and in those\ncases we can render only a small portion of the output.\n\nThis could lead to FBO allocation that doesn\u0027t represent the surface\nthat we\u0027ll render to. To fix the issue, the textures need to be\nresized when necessary.\n\nTest: manual\nFixes: 152282559\nChange-Id: I80d0c741b7f701a64fb862273433b167a97fe0bb\n"
    },
    {
      "commit": "fc4165121b6343e674f3899784eeef367f3801fa",
      "tree": "b2b1dcd294e402b1be249d98d41b450911e735d9",
      "parents": [
        "4fda61f5e6da553886ff8e84016db12d7c67a9ab"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu Apr 02 12:32:44 2020 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu Apr 02 12:35:00 2020 -0700"
      },
      "message": "BLASTBufferQueue: Avoid duplicate calls to setDefaultBufferSize\n\nCalling in to the consumer may acquire the BufferQueueCore mutex. We call\nBLASTBufferQueue::update from the UI thread. And so we can accidentally\nend up blocking the UI thread on allocateBuffers() during app start-up.\n\nBug: 152501005\nTest: Flip BLAST. Play.\nChange-Id: I89034211ed5725b5be6391cc2bac748c0acf1eb3\n"
    },
    {
      "commit": "60db8c061b2f94b8c36af2ed44ee74aed3a820cf",
      "tree": "70c9e6b4e4afc5efdd8ce7296af342292cacbc83",
      "parents": [
        "6aa156cad417719c6ed9b84a8ed04e5ab7a2bc31"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Apr 02 11:55:16 2020 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Apr 02 11:57:42 2020 -0700"
      },
      "message": "Fix a long standing locking issue with tracing thread\n\nIf winscope tracing is enabled, the tracing thread will read the drawing\nstate if the visible region changes and writes the state it to a proto.\nThis has a few issues: layer drawing state was being committed without\nholding the tracing lock, layers could be destroyed when\nfinalizePendingOutputLayers (without holding the tracing lock) making\naccess to offscreenlayers invalid, finally we could get miss a trace\nentry or have invalid entries.\n\nThis fix takes the tracing lock while committing the layer drawing\nstates and removes accessing the drawing states which are modified\nlater. It also identifies any missed entries.\n\nIn S, we will look at simplifying the tracing model to store a delta\nof changes per layer.\n\nFixes: b/152010382, b/144918813, b/140854698\n\nTest: w/ hwasan build and winscope enabled atest SurfaceFlinger_test libgui_test\nTest: w/ hwasan build and winscope enabled go/wm-tests\n\nChange-Id: I71c7b8e6567767ef97d82c5ea2e06a82ecc3c17a\n"
    },
    {
      "commit": "4fda61f5e6da553886ff8e84016db12d7c67a9ab",
      "tree": "d8cbbfe98bb27546e9d78a0561abff1fb5855038",
      "parents": [
        "fa17d4c69550f406e88eb5687200a85c7ded4b04",
        "9f133d7700b16b01070177f5e10750c8e8cf50fe"
      ],
      "author": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Thu Apr 02 17:35:58 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 02 17:35:58 2020 +0000"
      },
      "message": "Merge \"BLASTBufferQueue: Initialize transform hint on creation.\" into rvc-dev"
    },
    {
      "commit": "fa17d4c69550f406e88eb5687200a85c7ded4b04",
      "tree": "b1a62530d883646355087591bb394c076a4be519",
      "parents": [
        "e8a88834b77ca9d861af1851b3708889bf3be60f",
        "5b2ae91025bed064887c7178b1aa0a19c50caaed"
      ],
      "author": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Thu Apr 02 17:35:26 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 02 17:35:26 2020 +0000"
      },
      "message": "Merge \"BLASTBufferQueue: Pass same default usage as BufferQueueLayer\" into rvc-dev"
    },
    {
      "commit": "a407fb81372c6571c28d603504b23ece2d6bc79e",
      "tree": "17d7587ab566c26277e9bd7c14ee3b5d3dd8e2c4",
      "parents": [
        "a02bd1948597a829b4c72a1179a0897aa0c633e5"
      ],
      "author": {
        "name": "Abhijeet Kaur",
        "email": "abkaur@google.com",
        "time": "Fri Mar 27 12:51:12 2020 +0000"
      },
      "committer": {
        "name": "Abhijeet Kaur",
        "email": "abkaur@google.com",
        "time": "Thu Apr 02 12:56:30 2020 +0100"
      },
      "message": "Update Last ID early in the bugreport generation\n\nThe lifecycle of a bugreport triggered by Shell:\n\n1. Triggers a bugreport using bugreport API. At this point shell does not\nhave any state of the bugreport. mBugreportInfos is the sparse array in\nShell that tracks bugreportInfos keyed with the ID. The ID of the\nbugreport is currently incremented in RunInternal() which is called in a\ndifferent thread triggered by the DumpstateService (for an API call)\n2. dumpstate calls one of the callbacks #onProgress, #onError and\n #onFinished(), it is then that the corresponding bugreportinfo is\ntracked in mBugreportInfos keyed with the ID.\n\nProblem: Consider a case when 2 bugreports are triggered such that Shell\nhas not received #onProgress for the first one, and received #onError\nfor the second one. This results in a race condition as Shell assumes\nthat the first bugreport has called onError. This race condition occurs\ndue to the fact that Shell depends on the callback to track the\nbugreports.\n\nSolution: Update Id at a definite time (not in some other thread) in\nInitialize so that the service calling the API can track it right away.\n\nBug: 152292912\nTest: Tigger consecutive calls to bugreport from ActivityManager is WAI\nTest: adb bugreport (open the finished bugreport and check that the\ncorrect ID is shown)\nTest: atest dumpstate_test\n\nChange-Id: I63966800725d2aaa1d1d9d6eb997b86d564acf44\n"
    },
    {
      "commit": "e8a88834b77ca9d861af1851b3708889bf3be60f",
      "tree": "24cd5ba09c8778eecdd6914034e04909f4fd9748",
      "parents": [
        "a02bd1948597a829b4c72a1179a0897aa0c633e5",
        "6eb75be73c6e368a8c2b9293b125b669429030f7"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Apr 02 00:25:31 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 02 00:25:31 2020 +0000"
      },
      "message": "Merge changes from topic \"sensor_background_apps\" into rvc-dev\n\n* changes:\n  Fail on flush if no sensors are found\n  Disable sensors when an app goes to background\n  Convert KeyedVector to std::ordered_map\n"
    },
    {
      "commit": "9f133d7700b16b01070177f5e10750c8e8cf50fe",
      "tree": "46e7a562525f066a805d5fa228b8db0aa24e1a1e",
      "parents": [
        "5b2ae91025bed064887c7178b1aa0a19c50caaed"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Apr 01 15:51:46 2020 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Apr 01 15:52:45 2020 -0700"
      },
      "message": "BLASTBufferQueue: Initialize transform hint on creation.\n\nBufferQueueLayer does it (see onFirstRef) so we probably\nshould too. In particular it could be important to set\nit before buffer allocation.\n\nBug: 152501005\nTest: Existing tests pass\nChange-Id: I60edd273dabb1f5b2176f55b6bd7cf92c0557ae1\n"
    },
    {
      "commit": "5b2ae91025bed064887c7178b1aa0a19c50caaed",
      "tree": "1cbff96f9114822d35f5aa4e8ff20c84e9561f21",
      "parents": [
        "5ea5df566c65074a7f405d8a31ed894f169785cd"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Apr 01 15:40:40 2020 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Apr 01 15:40:40 2020 -0700"
      },
      "message": "BLASTBufferQueue: Pass same default usage as BufferQueueLayer\n\nThe default usage value for BufferQueueLayer is COMPOSER not\nFRAMEBUFFER (see Layer::getEffectiveUsage). It\u0027s unclear exactly\nwhat effect this was having.\n\nBug: 152501005\nTest: Existing tests pass.\nChange-Id: I33adc9c39c57b11c71a53e936448c9052bd83155\n"
    },
    {
      "commit": "6eb75be73c6e368a8c2b9293b125b669429030f7",
      "tree": "98f22ea8b32401e6334ed72b39884602cd8ac0f9",
      "parents": [
        "8a7ec57d045258e2d84beffd4e7d03f6b95e26e4"
      ],
      "author": {
        "name": "Arthur Ishiguro",
        "email": "arthuri@google.com",
        "time": "Wed Apr 01 11:58:43 2020 -0700"
      },
      "committer": {
        "name": "Arthur Ishiguro",
        "email": "arthuri@google.com",
        "time": "Wed Apr 01 19:19:56 2020 +0000"
      },
      "message": "Fail on flush if no sensors are found\n\nAccording to the SensorManager API, flush() is intended to return\nfalse when no sensor is registered with the listener. Modify the\nimplementation to be consistent with the API contract, since no\nflush command was successfully issued in this case.\n\nBug: 74395023\nTest: Compile\nChange-Id: I7e671c870aa684be54b7a5163052aac5258c0c86\n"
    },
    {
      "commit": "8de697ed6117ba26d46196df4df5c9ce0295a2a9",
      "tree": "95dfd3d29e220093504b608fb99c7b7452e67b87",
      "parents": [
        "8929001832590afd537f2e06147c039b951d862c"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Mar 19 10:52:01 2020 -0700"
      },
      "committer": {
        "name": "Wei Wang",
        "email": "wvw@google.com",
        "time": "Wed Apr 01 04:43:51 2020 +0000"
      },
      "message": "[SurfaceFlinger] Add refresh rate counts to TimeStats\n\nThis count will be exposed to lab tests as a breakdown metric for\nuncovering jank.\n\nBug: 144526027\nTest: dumpsys SurfaceFlinger --timestats -dump\nTest: libsurfaceflinger_unittest\nChange-Id: I921e147e96212ad6a08fa14d6e3d7a98893a8602\n"
    },
    {
      "commit": "a02bd1948597a829b4c72a1179a0897aa0c633e5",
      "tree": "00968e1bd78071422df1e62bdebd6ca3f26b5ef1",
      "parents": [
        "5ea5df566c65074a7f405d8a31ed894f169785cd",
        "72d8dc39f1a58491c9fb4495079baec6d5c4b41e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Apr 01 03:05:26 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 01 03:05:26 2020 +0000"
      },
      "message": "Merge \"Fix input infos are inconsistent between WMS and InputFlinger (2/2)\" into rvc-dev"
    },
    {
      "commit": "5ea5df566c65074a7f405d8a31ed894f169785cd",
      "tree": "9434b825d47eebe884093bf285384ae5c292497e",
      "parents": [
        "3bedba658e40c5427ac8cc9be359cc787e8f62c8",
        "04aec0b80900163c54c05477cd0594b12722501a"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Tue Mar 31 22:00:03 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 31 22:00:03 2020 +0000"
      },
      "message": "Merge \"Adding audiocontrol@2.0 to hal interfaces to dump\" into rvc-dev"
    },
    {
      "commit": "3bedba658e40c5427ac8cc9be359cc787e8f62c8",
      "tree": "fa8c85d8ebc7dcdf3c7e356904d71fc5bf2c0432",
      "parents": [
        "ef94e1c1103a9f3007e51a9cbffc5998dc38606e",
        "debadb8a591ee9ed10405f541138828871c7dc49"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Tue Mar 31 17:45:22 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 31 17:45:22 2020 +0000"
      },
      "message": "Merge \"Use pixel format from buffer to determine opacity.\" into rvc-dev"
    },
    {
      "commit": "ef94e1c1103a9f3007e51a9cbffc5998dc38606e",
      "tree": "72401a345cb6e7c480c95989a2cc2b03fad6b527",
      "parents": [
        "cf0d051a4d91d2b731dc1b7141b2783c8514f261",
        "4a42d43bf32ba88e0867717d22bae318ac00de5b"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Mar 31 17:31:11 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 31 17:31:11 2020 +0000"
      },
      "message": "Merge \"SF: Update display properties on hotplug connect\" into rvc-dev"
    },
    {
      "commit": "4a42d43bf32ba88e0867717d22bae318ac00de5b",
      "tree": "07cd4ce9fd890a119a58a01ed1aad0b86113c7a8",
      "parents": [
        "bdd5915fa6a398571da8ad28e5c8946c3715d39a"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Wed Feb 12 20:22:26 2020 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Mar 31 17:31:01 2020 +0000"
      },
      "message": "SF: Update display properties on hotplug connect\n\nWhen a hotplug connect event for already connected display\nis received, destroy and recreate the display device in SF,\nthen send a \"hotplug connect\" event to Display manager. This\nway display properties will be updated.\n\nBug: 143451809\nTest: atest libsurfaceflinger_unittest\nTest: atest SurfaceFligner_test\nTest: atest CompositionTest\nTest: Manually on device:\n      2. adb shell dumpsys display\n      3. unplug primary display\n      4. plug another display\n      5. adb shell dumpsys display\nTest: Manually on device:\n      1. disconnect and reconnect display\n      2. power off and on the screen\n      3. make sure the device didn\u0027t crash\n\nMerged-In: I89996d9340f6570fa5ae0cc0977eaba7a2d3693c\nChange-Id: I89996d9340f6570fa5ae0cc0977eaba7a2d3693c\n(cherry picked from commit 700e639f7d283987fb7b994a038dc0ca5dba3dbf)\n"
    },
    {
      "commit": "cf0d051a4d91d2b731dc1b7141b2783c8514f261",
      "tree": "1e8c2ac491af5d3ea2885c83b4f97a476e76a4f5",
      "parents": [
        "e983bd439a2148873eb28f7362272329d35e3742",
        "bdd5915fa6a398571da8ad28e5c8946c3715d39a"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Mar 31 17:28:16 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 31 17:28:16 2020 +0000"
      },
      "message": "Merge \"SF: Refactor HWComposer::onHotplug()\" into rvc-dev"
    },
    {
      "commit": "e983bd439a2148873eb28f7362272329d35e3742",
      "tree": "cb4d7fee5e4db9661350b1147a59ec8a46781e6a",
      "parents": [
        "879095d24aaed22090da1fbfc52fdd84049c710f",
        "4197f6b96f55d3c9d6fe2365be4c4ffcb49e9a7e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 31 14:55:18 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 31 14:55:18 2020 +0000"
      },
      "message": "Merge \"Fix tap is wrong in landscape with cutout disabled\" into rvc-dev"
    },
    {
      "commit": "bdd5915fa6a398571da8ad28e5c8946c3715d39a",
      "tree": "5eaf93c271820f977fcd6c4ce000d998f65de78a",
      "parents": [
        "2dbf7c97a39db33331c21fbd95d5cfea0947eadd"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Fri Feb 14 15:30:06 2020 +0100"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Mar 31 10:42:46 2020 +0000"
      },
      "message": "SF: Refactor HWComposer::onHotplug()\n\nCurrently HWComposer::onHotplug() contains logic that is\nexecuted when hotplug disconnect or connect event occurs.\nHowever reading what exactly is done during e.g. hotplug\nconnect is hard, because the logic is spread between two\nif statements and the function HWComposer::onHotplugConnect().\nThis change moves all hotplug connect logic to\nHWComposer::onHotplugConnect() and all disconnect logic\nto a new function HWComposer::onHotplugDisconnect().\n\nAdditionally this CLs refactors onHotplugConnect() which\nis currently responsible for multiple concerns, which is\nmaking the code hard to understand and reuse.\n\n - checking if the event should be ignored is moved to\n   a new function shouldIgnoreHotplugConnect()\n - creating the necessary state for the new display is\n   moved to a new function allocatePhysicalDisplay()\n\nSome of the newly created functions will be directly reused\nin following CLs.\n\nBug: 143451809\nTest: m surfaceflinger\nTest: atest libsurfaceflinger_unittest\nMerged-In: Ib4dae2ce81e8cac176a56b6de787a4f76d01c050\nChange-Id: Ib4dae2ce81e8cac176a56b6de787a4f76d01c050\n(cherry picked from commit 05f9398f9405587f8d1a5c5c17feffc89890ca2e)\n"
    },
    {
      "commit": "4197f6b96f55d3c9d6fe2365be4c4ffcb49e9a7e",
      "tree": "92d62a5221f5e49d9f20aad95ceba6b110f14742",
      "parents": [
        "6aa156cad417719c6ed9b84a8ed04e5ab7a2bc31"
      ],
      "author": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Mon Mar 16 15:39:59 2020 +0800"
      },
      "committer": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Tue Mar 31 16:28:32 2020 +0800"
      },
      "message": "Fix tap is wrong in landscape with cutout disabled\n\nThe coordinate values in TouchInputMapper and raw events should be\norientation-independent, we should not rotate the raw events while\nchecking the range. And it should start from the current logcial\nright/bottom instead of the original right/bottom when it needs to\nreverse the coordinate.\n\n- Let \u0027rotateAndScale\u0027 could transform raw coordinate to surface.\n- Range checking should only base on natural orientation.\n- Change the test case to be more robust and could test 90 and 270\n  degrees cases.\n\nBug: 138708005\nTest: atest inputflinger_tests\nTest: open foldable emulator, change to minimized state and rotate\n      device, test touch.\nTest: let device has display offset, rotate device and check touch.\n\nChange-Id: I945e489866bc41b5c14ed4a143952bc85248b3e9\n"
    },
    {
      "commit": "debadb8a591ee9ed10405f541138828871c7dc49",
      "tree": "0022f31b2ab6ab3b92f9fd1ac17b1ea2c2d28d62",
      "parents": [
        "edbc86de0530ebe4919ce9a84b221f4f32fd67e1"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Mar 26 14:57:24 2020 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Mar 30 19:12:42 2020 -0700"
      },
      "message": "Use pixel format from buffer to determine opacity.\n\nThe format that\u0027s passed into BufferQueueLayer creation is meant to\ndefine what format the buffers should have that are dequeued from the\nconsumer. If the client submits its own buffers, they can have any\npixel format. Therefore, the format from the activeBuffer should be used\nwhen determing opacity since that\u0027s the information about the buffer\nthat will be rendered.\n\nBug: 152162496\nTest: LayerTypeAndRenderTypeTransactionTest#SetBufferFormat\nChange-Id: I4295b837369b8ca8918d8398a29cab133a47cbf7\n"
    },
    {
      "commit": "879095d24aaed22090da1fbfc52fdd84049c710f",
      "tree": "271353d646a0c8b04c90f8ed4a9c304536ec9a57",
      "parents": [
        "6aa156cad417719c6ed9b84a8ed04e5ab7a2bc31",
        "4a322350b68f8998805032886642ce078066ef84"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 31 01:29:19 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 31 01:29:19 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: align init and resume mode priority\" into rvc-dev"
    },
    {
      "commit": "72d8dc39f1a58491c9fb4495079baec6d5c4b41e",
      "tree": "6bd3036f1b162b0071a4aead4209e3a08415fc7b",
      "parents": [
        "edbc86de0530ebe4919ce9a84b221f4f32fd67e1"
      ],
      "author": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Sat Mar 28 00:48:39 2020 +0000"
      },
      "committer": {
        "name": "Arthur Hung",
        "email": "arthurhung@google.com",
        "time": "Tue Mar 31 01:08:37 2020 +0000"
      },
      "message": "Fix input infos are inconsistent between WMS and InputFlinger (2/2)\n\nIn single focus system, the top focused display may change to the new\none when receive a key event. And we would expect the focus could be\nchanged before the event enqueued into inbound queue.\n\nThis patch refactor \u0027setInputWindows\u0027 to prevent early callback and\nwakeup in first display, and make sure \u0027syncInputWindow\u0027 could wait\nuntil all input windows from all displays updated.\n\nBug: 150250453\nTest: atest libinput_tests inputflinger_tests\nTest: atest --rerun-until-failure 100 WindowFocusTests#testMovingDisplayToTopByKeyEvent\n\nChange-Id: I60295975a833df330005943469233c158dd2b07b\n"
    },
    {
      "commit": "6aa156cad417719c6ed9b84a8ed04e5ab7a2bc31",
      "tree": "c704821fde53bd6d21687dd84650d244c4eac979",
      "parents": [
        "e22e38d28f748a3831bccb4c6d4850b137befd90",
        "0cffd2ce4704e636564d8352ccdc04a4e1e3f05a"
      ],
      "author": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Mon Mar 30 21:51:34 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 30 21:51:34 2020 +0000"
      },
      "message": "Merge \"Add new appops to native APIs\" into rvc-dev"
    },
    {
      "commit": "e22e38d28f748a3831bccb4c6d4850b137befd90",
      "tree": "be21bcd5496fcf7167c755797052e4d167ed5d8a",
      "parents": [
        "2dbf7c97a39db33331c21fbd95d5cfea0947eadd",
        "15b6f9c8961019debe63358b73572bd294b35349"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 30 20:55:22 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 30 20:55:22 2020 +0000"
      },
      "message": "Merge \"Clean up some formatting problems in the setFrameRate ndk docs\" into rvc-dev"
    },
    {
      "commit": "8a7ec57d045258e2d84beffd4e7d03f6b95e26e4",
      "tree": "485d012db270731b5e60f62048489e6f4535da04",
      "parents": [
        "ad46c786185e17ff75861c86595ab74d6fca0d93"
      ],
      "author": {
        "name": "Arthur Ishiguro",
        "email": "arthuri@google.com",
        "time": "Wed Mar 18 11:02:35 2020 -0700"
      },
      "committer": {
        "name": "Arthur Ishiguro",
        "email": "arthuri@google.com",
        "time": "Mon Mar 30 12:57:19 2020 -0700"
      },
      "message": "Disable sensors when an app goes to background\n\nBug: 74395023\nTest: 1) Enable sensor on SensorLogger\n      2) Put app to background and wait; verify sensor gets disabled.\n      3) Put app to foreground and wait; verify sensor gets re-enabled.\nChange-Id: Icf6ab253fad4133431c86bb9a49275f9190ad2e8\n"
    },
    {
      "commit": "0cffd2ce4704e636564d8352ccdc04a4e1e3f05a",
      "tree": "a0ee2fdd1e6713e00a4ed5b63bbaabec4750b18f",
      "parents": [
        "1718db1f09105a5393c7aa6b49a526ed5910ceb9"
      ],
      "author": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Tue Mar 24 10:23:09 2020 -0700"
      },
      "committer": {
        "name": "Philip P. Moltmann",
        "email": "moltmann@google.com",
        "time": "Mon Mar 30 18:34:33 2020 +0000"
      },
      "message": "Add new appops to native APIs\n\nThe bug was that native code started to use an op-code that was higher\nthan _NUM_OP which lead to array-out-of-bound exceptions.\n\nFixes: 152229280\nTest: TH\nChange-Id: I8831f0d161c770fcbab557934e0717b49dc1bd80\nExempt-From-Owner-Approval: Was +2\u0027ed. I had to resolve merge conflict.\n"
    },
    {
      "commit": "2dbf7c97a39db33331c21fbd95d5cfea0947eadd",
      "tree": "57afd8bdcb97b8b076c4f885fe9d01a48c0231a9",
      "parents": [
        "5f8d23383553a1bf80b6851078321a7134e17a70",
        "45cb21ad90694ff44d58afcccb5c3156b02bbf6e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 30 18:15:44 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 30 18:15:44 2020 +0000"
      },
      "message": "Merge \"Align transaction trace timestamps with wm and sf trace\" into rvc-dev"
    },
    {
      "commit": "4a322350b68f8998805032886642ce078066ef84",
      "tree": "f59b33e4840081d59027143a1c458e498ba0a3d7",
      "parents": [
        "89260bd4176b50932b3a9baf91b325a401a8932e"
      ],
      "author": {
        "name": "Martin Liu",
        "email": "liumartin@google.com",
        "time": "Tue Mar 24 21:30:38 2020 +0800"
      },
      "committer": {
        "name": "Martin Liu",
        "email": "liumartin@google.com",
        "time": "Tue Mar 31 01:38:31 2020 +0800"
      },
      "message": "SurfaceFlinger: align init and resume mode priority\n\nAlign init and resume mode RT priority. This could\nalso sync with HWC RT priority which reduces RT priority\ninherit effort during HWbinder transaction.\n\nBug: 152294747\nTest: check SF RT priority\nChange-Id: I7c2f8d37de9e3a5ee403120c5a8d523b64c39a51\n"
    },
    {
      "commit": "5f8d23383553a1bf80b6851078321a7134e17a70",
      "tree": "7f818f425831cd127b1694bf3eae566e773ed4ea",
      "parents": [
        "edbc86de0530ebe4919ce9a84b221f4f32fd67e1",
        "8ae16e67ee8d12ec14d08c0445533ff6da2988b4"
      ],
      "author": {
        "name": "Nandana Dutt",
        "email": "nandana@google.com",
        "time": "Mon Mar 30 17:06:07 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 30 17:06:07 2020 +0000"
      },
      "message": "Merge \"Handle cancelBugreport\" into rvc-dev"
    },
    {
      "commit": "8ae16e67ee8d12ec14d08c0445533ff6da2988b4",
      "tree": "21a9755a559b6db72e823b8a74531881795b148d",
      "parents": [
        "f835e028b3acb1838b4798a356073d07e76dfd9c"
      ],
      "author": {
        "name": "Nandana Dutt",
        "email": "nandana@google.com",
        "time": "Fri Mar 27 10:20:22 2020 +0000"
      },
      "committer": {
        "name": "Nandana Dutt",
        "email": "nandana@google.com",
        "time": "Mon Mar 30 09:12:13 2020 +0100"
      },
      "message": "Handle cancelBugreport\n\nClean up tmp files on receiving cancelBugreport.\n\nBUG: 146994281\nTest: manual\nChange-Id: Id759e088ecff8d3098e58470626dea8d5bf1bc20\n"
    },
    {
      "commit": "45cb21ad90694ff44d58afcccb5c3156b02bbf6e",
      "tree": "42ac29a5d497ff8bffe419751bad2d08464df767",
      "parents": [
        "8d8ff36ec0fef1450e7b72c5b03d8507c5f40c27"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Mar 27 17:39:24 2020 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Mar 27 17:40:03 2020 -0700"
      },
      "message": "Align transaction trace timestamps with wm and sf trace\n\nTransaction trace uses MONOTONIC while the other traces uses BOOTTIME\nwhich includes CPU suspend time.\n\nFixes: 152329759\nTest: Take winscope traces after the CPU has been suspended for a while and check timestamps\nChange-Id: I069827b786913de9f52792c1508dff395966bd11\n"
    },
    {
      "commit": "edbc86de0530ebe4919ce9a84b221f4f32fd67e1",
      "tree": "284e3611cc8156f864fb974c2c35a9af72d19b9a",
      "parents": [
        "b9d5afa5e36da2a50031b614065b00e2a6fbeb32",
        "bb108a18393edde0e767d882dceef70a9fb1839e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 28 00:33:39 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 28 00:33:39 2020 +0000"
      },
      "message": "Merge \"ServiceManager: Check guaranteeClient before unregistering services\" into rvc-dev"
    },
    {
      "commit": "b9d5afa5e36da2a50031b614065b00e2a6fbeb32",
      "tree": "53eaa39067525d24fdb354e54c6353d336c8f5c2",
      "parents": [
        "22c255cd9e98f7ac1a6104ce05e433d1422c43c1",
        "e17055a1c85e338d0928931d199bd31594ffa8df"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 28 00:33:39 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 28 00:33:39 2020 +0000"
      },
      "message": "Merge \"LazyServiceRegistrar: Add flag to prevent shutdown\" into rvc-dev"
    },
    {
      "commit": "22c255cd9e98f7ac1a6104ce05e433d1422c43c1",
      "tree": "ef2ebb0c3e5d7da7433c5909af18cd2a41ae9b47",
      "parents": [
        "1718db1f09105a5393c7aa6b49a526ed5910ceb9",
        "77f83368b1292557b70ff82b16a27a96ab424b04"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Mar 28 00:33:39 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 28 00:33:39 2020 +0000"
      },
      "message": "Merge \"Add flag to cmd for dynamic services\" into rvc-dev"
    },
    {
      "commit": "15b6f9c8961019debe63358b73572bd294b35349",
      "tree": "3c5605b7540fe469be82a763531a7aa81c02b532",
      "parents": [
        "75eec41f9b09d065688a2eecb393a0fce0d69efe"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Thu Mar 26 13:44:28 2020 -0700"
      },
      "committer": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Fri Mar 27 11:54:18 2020 -0700"
      },
      "message": "Clean up some formatting problems in the setFrameRate ndk docs\n\nBug: 152413112\n\nTest: Unfortunately there\u0027s no convenient way to build the ndk docs\nlocally, so we\u0027re just going to submit and see if the regenerated DAC\ndocs look correct. I talked with Dan Albert on the ndk team about this,\nand he decided to reopen b/115644359 to see if we can get some easy way\nto build the ndk docs locally again, so we can verify minor formatting\nfixes like this.\n\nChange-Id: Ie29a19a386887df6305ee9a4447702126fed7972\n"
    },
    {
      "commit": "04aec0b80900163c54c05477cd0594b12722501a",
      "tree": "868602b353ad8586d8fd3f19a963079ecd17589c",
      "parents": [
        "f687c9797500dbaaf5c29f352782a9e994358d4f"
      ],
      "author": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Thu Mar 26 14:23:33 2020 -0700"
      },
      "committer": {
        "name": "Hayden Gomes",
        "email": "haydengomes@google.com",
        "time": "Fri Mar 27 11:50:36 2020 -0700"
      },
      "message": "Adding audiocontrol@2.0 to hal interfaces to dump\n\nBug: 148098383\nTest: adb bugreport | grep audiocontrol\nChange-Id: I28610c75cdc8699f884dd9f330776bd477458229\nMerged-In: I28610c75cdc8699f884dd9f330776bd477458229\n"
    },
    {
      "commit": "1718db1f09105a5393c7aa6b49a526ed5910ceb9",
      "tree": "1d406b557f5116fa40617d13703e9bb28113babb",
      "parents": [
        "8f0b5bda58b843ca4d0bf7cd68f03766dc852ea0",
        "27ddcb559ad4fde529cc9216e1e9381e5a6cb6a2"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 27 18:07:32 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 27 18:07:32 2020 +0000"
      },
      "message": "Merge changes Iada825d7,Iaa056018 into rvc-dev\n\n* changes:\n  SF: Simplify initialization after a ui::Size fix\n  libui: Fix clamping of uint32_t source values\n"
    },
    {
      "commit": "8f0b5bda58b843ca4d0bf7cd68f03766dc852ea0",
      "tree": "33fa5fa52c46778d78bb5b5f42c156801d267051",
      "parents": [
        "8e8cec4c48603621552db8dbd2c090847ff0b5e4",
        "25e2af10b9200f2970985b54db17b6d427928e89"
      ],
      "author": {
        "name": "Kelly Rossmoyer",
        "email": "krossmo@google.com",
        "time": "Fri Mar 27 17:34:48 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 27 17:34:48 2020 +0000"
      },
      "message": "Merge \"Revert \"Fix input infos are inconsistent between WMS and InputFlinger (2/2)\"\" into rvc-dev"
    },
    {
      "commit": "8e8cec4c48603621552db8dbd2c090847ff0b5e4",
      "tree": "6212db1a65afd71f83c641d0f4a2dba12fb6c89d",
      "parents": [
        "b034fc50aa95fb2236ae0946c55df328ac9c6d7b"
      ],
      "author": {
        "name": "Chris Ye",
        "email": "lzye@google.com",
        "time": "Thu Mar 26 14:14:58 2020 -0700"
      },
      "committer": {
        "name": "Chris Ye",
        "email": "lzye@google.com",
        "time": "Fri Mar 27 17:00:01 2020 +0000"
      },
      "message": "AThermal_StatusCallback should return void\n\nAThermal_StatusCallback returns an int but it\u0027s totally ignored and\nundocumented, we should just make this a void function.\n\nBug: 152509392\nChange-Id: I044733f63007e942a6b1d04ce761891101b94e8f\n"
    },
    {
      "commit": "b034fc50aa95fb2236ae0946c55df328ac9c6d7b",
      "tree": "f61376528dab9387339d4407d3646eed17830db2",
      "parents": [
        "af8d8aa56af1e50d9cea72c77f5cc32834fdb16d",
        "af8f6cf3aba3398b36117dd3acce6f5a3c0610c6"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Fri Mar 27 08:20:24 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Fri Mar 27 08:20:24 2020 +0000"
      },
      "message": "Merge \"Fix addition/overflow checks.\" into qt-qpr1-dev am: af8f6cf3ab\n\nChange-Id: I8fb15e09172912f4a6d8757dfbddfe8fbfe379d4\n"
    },
    {
      "commit": "af8f6cf3aba3398b36117dd3acce6f5a3c0610c6",
      "tree": "8637c0c3300f6a1324bac0b35e2f0b2e69803e08",
      "parents": [
        "58e1ce0b3b6881d2ac3ff3bfd4b0548c121286ea",
        "93fe51840ebf2e2ea0c29d3c5aa196e328129469"
      ],
      "author": {
        "name": "Martijn Coenen",
        "email": "maco@google.com",
        "time": "Fri Mar 27 08:08:57 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 27 08:08:57 2020 +0000"
      },
      "message": "Merge \"Fix addition/overflow checks.\" into qt-qpr1-dev"
    },
    {
      "commit": "af8d8aa56af1e50d9cea72c77f5cc32834fdb16d",
      "tree": "f61376528dab9387339d4407d3646eed17830db2",
      "parents": [
        "e5e415084bf5bbe662743caca58e97e396097916",
        "50aeef66b82d8bccd84d8ea424d81334f3d4213d"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Fri Mar 27 01:11:32 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 27 01:11:32 2020 +0000"
      },
      "message": "Merge \"[SurfaceFlinger] Fix crash in SurfaceTracing\" into rvc-dev"
    },
    {
      "commit": "e5e415084bf5bbe662743caca58e97e396097916",
      "tree": "f79584d252e9aedc1e235abd18000b9840bcac12",
      "parents": [
        "494876c59f59325accdabb0b98255c6aa2a02c6b",
        "8980f0689c2379d2eef30dd50bdf03876d46057e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 26 22:42:01 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 26 22:42:01 2020 +0000"
      },
      "message": "Merge \"Add CtsGpuToolsHostTestCases into presubmit.\" into rvc-dev"
    },
    {
      "commit": "ad46c786185e17ff75861c86595ab74d6fca0d93",
      "tree": "f24999fd6d99317737e699e18690c37365226cac",
      "parents": [
        "a13a1f9692c24bbc9a2f1934516db32f058b9f8f"
      ],
      "author": {
        "name": "Arthur Ishiguro",
        "email": "arthuri@google.com",
        "time": "Thu Mar 26 11:24:43 2020 -0700"
      },
      "committer": {
        "name": "Arthur Ishiguro",
        "email": "arthuri@google.com",
        "time": "Thu Mar 26 14:58:58 2020 -0700"
      },
      "message": "Convert KeyedVector to std::ordered_map\n\nKeyedVector is not recommended per doc.\n\nBug: 74395023\nTest: Compile\nChange-Id: I7d7b1e43291677d3723e497d8e44a206ebb9a825\n"
    },
    {
      "commit": "494876c59f59325accdabb0b98255c6aa2a02c6b",
      "tree": "29ccd97fe7bf1b844a8f50e1b60016a8a8d23dfb",
      "parents": [
        "75eec41f9b09d065688a2eecb393a0fce0d69efe",
        "d36263a049ce49828ef698a04eef884d8a2720df"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 26 21:54:19 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 26 21:54:19 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: add RootTargetPreparer to SurfaceFlinger_test\" into rvc-dev"
    },
    {
      "commit": "50aeef66b82d8bccd84d8ea424d81334f3d4213d",
      "tree": "57ec59e61bc18d72e3193fa65fa46f2e76eb2ab1",
      "parents": [
        "f4f7283fc673534ab3a9807f936edc7888fe4004"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Wed Mar 25 18:52:29 2020 -0700"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Mar 26 14:41:00 2020 -0700"
      },
      "message": "[SurfaceFlinger] Fix crash in SurfaceTracing\n\nmThread is guarded by a lock, so acquire the lock to steal the thread\nwhen tracing finishes.\n\nBug: 147319235\nTest: winscope\nChange-Id: Id0e103c66c8937272aa9a1c02f153eea2e2f9859\n"
    },
    {
      "commit": "d36263a049ce49828ef698a04eef884d8a2720df",
      "tree": "0847a49926f7906cef9c7fa33a858ff17062046f",
      "parents": [
        "e56e17755945d138336f7c45978a4d883173e444"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Mar 26 12:58:23 2020 -0700"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Mar 26 13:13:15 2020 -0700"
      },
      "message": "SurfaceFlinger: add RootTargetPreparer to SurfaceFlinger_test\n\nSome of SurfaceFlinger tests such as SurfaceInterceptorTest requires\nroot access as they use sf backdoor interface.\n\nTest: adb unroot; atest SurfaceFlinger_test\nBug: 151830811\nChange-Id: Ie144891f1c413a18b705f560d70d23041d36772b\n"
    },
    {
      "commit": "75eec41f9b09d065688a2eecb393a0fce0d69efe",
      "tree": "622aedd985cffdf3ed2e7b10c82a8a74a270bef4",
      "parents": [
        "1dc6f8a1f3de158d97c49c4bc2b13fbe4c44ae6e",
        "655ca15dc33535c1a48f2b75948ff9b764bcb041"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Mar 26 20:10:55 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 26 20:10:55 2020 +0000"
      },
      "message": "Merge \"Keep screen on when running libgui_test\" into rvc-dev"
    },
    {
      "commit": "1dc6f8a1f3de158d97c49c4bc2b13fbe4c44ae6e",
      "tree": "e9c6094940d1c16dc1f7862ae663222b8d655273",
      "parents": [
        "abaf09aa04099dfe62aac8cb1935354882e6d2e3",
        "e695e01b303ae71e78b8c57d6a54b3af36c70344"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Mar 26 19:45:12 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 26 19:45:12 2020 +0000"
      },
      "message": "Merge \"otapreopt: use boot image from ART APEX\" into rvc-dev"
    },
    {
      "commit": "abaf09aa04099dfe62aac8cb1935354882e6d2e3",
      "tree": "0dc7949a037dfb9ecdc742e48563e43555a858f3",
      "parents": [
        "d982cfb6bc1af3437edc93d6909681eeeb9081b8",
        "27800499ab20551a2b2e64d360c5e2130c881dd2"
      ],
      "author": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Thu Mar 26 19:08:54 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 26 19:08:54 2020 +0000"
      },
      "message": "Merge \"[Vulkan] Expose device extensions from implicit layers.\" into rvc-dev"
    },
    {
      "commit": "e695e01b303ae71e78b8c57d6a54b3af36c70344",
      "tree": "c8cc6ba8bf671c3062b570d27b74b04b588e75e8",
      "parents": [
        "d982cfb6bc1af3437edc93d6909681eeeb9081b8"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Mar 26 09:24:41 2020 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Mar 26 15:05:07 2020 +0000"
      },
      "message": "otapreopt: use boot image from ART APEX\n\nEnsure presence of boot image and no longer try to generate if\nmissing. This is now an error.\n\nBug: 149794809\nTest: manual OTA\nChange-Id: I565c24dad8bd10a93cd92b2926a2d8b45f416e41\n"
    }
  ],
  "next": "25e2af10b9200f2970985b54db17b6d427928e89"
}
