)]}'
{
  "log": [
    {
      "commit": "9b6559c70788ea11134659f9f16565d2b0625332",
      "tree": "69177cec80d5e66178c294e0d66c067b7afb5590",
      "parents": [
        "4991c5978364f1b6e65486d972978c3f63342d34",
        "718f9601c611f657fd872f84f27d5cc9aec533b4"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 14 02:22:28 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 14 02:22:28 2020 +0000"
      },
      "message": "Merge \"ui: Deduplicate rotation types\""
    },
    {
      "commit": "4991c5978364f1b6e65486d972978c3f63342d34",
      "tree": "85b9a867ab5608d2e9fae2639b361ce7804c2d72",
      "parents": [
        "44825c34dfa1c2ae2d4714dd72d57f49b69c4740",
        "c4cdd3784119d40532fe4b6213652b3f7438e675"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 13 18:25:51 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 13 18:25:51 2020 +0000"
      },
      "message": "Merge \"SF: VSyncReactor ensure period change confirmation\""
    },
    {
      "commit": "44825c34dfa1c2ae2d4714dd72d57f49b69c4740",
      "tree": "d20c91316010967eb44ed859bd683e480b3753d0",
      "parents": [
        "e8c770d5d3bfdb06a8561847f08857f718f84d49",
        "97b8eec72bbb08f966487fa60f3e1e7c34b25938"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Mon Jan 13 18:08:23 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 13 18:08:23 2020 +0000"
      },
      "message": "Merge \"Handle different scale and offset for pointers in InputTarget.\""
    },
    {
      "commit": "e8c770d5d3bfdb06a8561847f08857f718f84d49",
      "tree": "fef115797a32bb43b3e16566309b7b622c74aeab",
      "parents": [
        "75bdb2e8aa7dc82c43d1afbc6e233cfe7fd7d2db",
        "977d9d528db74d14098575ff0913cc3bf5daf3d0"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Jan 13 17:36:01 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Jan 13 17:36:01 2020 +0000"
      },
      "message": "Merge \"Add vhau@ to OWNERS of SurfaceFlinger\" am: dd3a7cd6a7 am: 15647a6295 am: 977d9d528d\n\nChange-Id: Icad040fee6e94b7c02e8161c0e2fc92841f0f552\n"
    },
    {
      "commit": "75bdb2e8aa7dc82c43d1afbc6e233cfe7fd7d2db",
      "tree": "a057623efed07838f4bd82a26926425781dc439d",
      "parents": [
        "3ea3c1197fb1142775dda88ed5eedb9fef3d02a0",
        "e3ed2f91ae8ce539800f2eb3c63a7ff59c646723"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 13 17:32:31 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 13 17:32:31 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: Make LayerHistory virtual class\""
    },
    {
      "commit": "977d9d528db74d14098575ff0913cc3bf5daf3d0",
      "tree": "3d6a37b837fc9d0f7bdb2fcdcd0d6a5ef3d23d7b",
      "parents": [
        "3b8b70917d04f81803e4db7e1af27a91e07a40c7",
        "15647a6295dc40d63c0a13be6e5004a7132fa7b5"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Jan 13 17:22:41 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Jan 13 17:22:41 2020 +0000"
      },
      "message": "Merge \"Add vhau@ to OWNERS of SurfaceFlinger\" am: dd3a7cd6a7 am: 15647a6295\n\nChange-Id: Id892f625af2171cf1153379f4208909fd4a1086a\n"
    },
    {
      "commit": "448dba5c737a0abbaceeca1bcfd8224ae34fc022",
      "tree": "51caa8ff3c8c982510b585434f42c231e4d66fd8",
      "parents": [
        "f588b2f4e81b51d8a5e378f83614fdb7cce302ac",
        "783ec6803ca246ff5ccdf9809588f063b3107bb1"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 11 01:33:33 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 11 01:33:33 2020 +0000"
      },
      "message": "Merge \"unlinkToDeath only when the listener has no more callbacks\""
    },
    {
      "commit": "f588b2f4e81b51d8a5e378f83614fdb7cce302ac",
      "tree": "b5b9fc539632b0789da30496cae3335a739299fc",
      "parents": [
        "eba6c6d23a0425e1d66f0f1e2d2ef37969bc597a",
        "0258cebce308de9cbf83b9992ce69046b91a9bda"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 11 01:25:29 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 11 01:25:29 2020 +0000"
      },
      "message": "Merge \"[composer] Add createCommandWriter to command engine.\""
    },
    {
      "commit": "e3ed2f91ae8ce539800f2eb3c63a7ff59c646723",
      "tree": "bf80702bfbf03f11758670b62837ed8a540635e2",
      "parents": [
        "eba6c6d23a0425e1d66f0f1e2d2ef37969bc597a"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Jan 06 17:01:28 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Sat Jan 11 00:39:21 2020 +0000"
      },
      "message": "SurfaceFlinger: Make LayerHistory virtual class\n\nThis is a base CL for refresh rate selection algorithm enhancements\nby allowing a different implementation of LayerHistory which will be\ncontrolled by a switch.\n\nTest: watch 24fps video and observe refresh rate at 60Hz\nBug: 147516364\nChange-Id: Ifd12f6683bc96cd5aba04a8960b9235729820b49\n"
    },
    {
      "commit": "eba6c6d23a0425e1d66f0f1e2d2ef37969bc597a",
      "tree": "b8f10fc7622522b106f6517ca212617270666923",
      "parents": [
        "fa6fe1af069bb14513950fb5a79ffcb0b9c43fa4",
        "b0433bc72b1876aba02c5726144cd7cbec4ffee9"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Sat Jan 11 00:29:57 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Jan 11 00:29:57 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: plumb composer 2.4 onSeamlessPossible\""
    },
    {
      "commit": "97b8eec72bbb08f966487fa60f3e1e7c34b25938",
      "tree": "bead00da2d05acf7403452a8c6f58eb0e864422e",
      "parents": [
        "838817f1953feb7db7c927333b0abd3979daef41"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Thu Jan 09 18:09:08 2020 +0000"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Fri Jan 10 13:49:32 2020 -0800"
      },
      "message": "Handle different scale and offset for pointers in InputTarget.\n\nThis change allows an InputTarget to have multiple pointers in different\nscale and offsets. This was done by using an array to store each\npointerId to PointerInfo. PointerInfo contains the information that\u0027s\nunique to each pointer, scale and offset.\n\nOnce the dispatcher is ready to queue the event, the dispatcher will\nrequest the InputTarget to gather all it\u0027s pointer information and\nnormalize them to a single offset and scale. It will generate a new\nDispatcherEntry with a new MotionEvent that has all the coordinates in a\nsingle offset and scale. It will also set that offset and scale in the\nMotionEvent so it can be handled properly when sent to the client.\n\nChange-Id: I1793725760142e01dc3fe2372f76ecd44ad934b8\nTest: InputDispatcherMultiWindowSameTokenTests\nTest: manually with magnification\nTest: NexusLauncherOutOfProcTests:TaplTestsLauncher3\nTest: NexusLauncherOutOfProcTests:TaplTestsQuickstep\nFixes: 140756730\nFixes: 147371357\n"
    },
    {
      "commit": "c65d5c036a78c954c5369d72206cfc7c05cc1a5d",
      "tree": "0f77faf4af9bfc00b22e71d58ea58d4b1d047696",
      "parents": [
        "08c5dfcdd1985734fcea8a8841158dd19ef2ae73"
      ],
      "author": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Fri Jan 10 12:53:12 2020 -0800"
      },
      "committer": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Fri Jan 10 12:53:12 2020 -0800"
      },
      "message": "Add vhau@ to OWNERS of SurfaceFlinger\n\nBug: N/A\nTest: N/A\n"
    },
    {
      "commit": "c4cdd3784119d40532fe4b6213652b3f7438e675",
      "tree": "36a7ec605e761608b9a0c7b7bb1c1e5a87ffa717",
      "parents": [
        "842e9df6fca52d486e1a593c350b33c9d3d71760"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Thu Jan 09 14:12:02 2020 -0800"
      },
      "committer": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Fri Jan 10 11:43:57 2020 -0800"
      },
      "message": "SF: VSyncReactor ensure period change confirmation\n\n(Code being corrected is flagged off, no production problems)\n\nWhen a period change is happening, system turns on hwvsync and uses\nthe first vsync signal timed at the new vsync rate as confirmation\nthat the rate has indeed changed (and then things like modifying the\noffsets occurs).\n\nIf a presentation fence was added to the VSyncReactor system before\nthe first hwvsync sample arrived, this would result in the period never\nbeing confirmed, and would result in incorrect offsets and period\nestimations, resulting in bad jank scores.\n\nTest: 3 unit tests\nTest: uibench run\nFixes: 147321414\n\nChange-Id: Idbc87529e60333df5180de585dbba3525396562b\n"
    },
    {
      "commit": "c037d0f15e50b2072a0222f9c5135eb33bb8badd",
      "tree": "fb3702159ae7b6bdc49e06aff538b89910de4e67",
      "parents": [
        "d4e0439315dcd16a8379ab3d930e3bf9b3942580",
        "7618b235019514a8546e22fe20a74bb34a7b1acd"
      ],
      "author": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Fri Jan 10 19:11:29 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 10 19:11:29 2020 +0000"
      },
      "message": "Merge \"Force send callbacks when layer is detached\""
    },
    {
      "commit": "d4e0439315dcd16a8379ab3d930e3bf9b3942580",
      "tree": "d24a59392bae1ee115abb86d148564ef412af466",
      "parents": [
        "2bcf821155351f2c421cb1caa2a94dc687925005",
        "31ac64a8f55d998d0b7feaee98778c0cfb686c3b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 10 19:00:46 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 10 19:00:46 2020 +0000"
      },
      "message": "Merge \"[TimeStats] clear frame duration and renderengine histograms\""
    },
    {
      "commit": "0258cebce308de9cbf83b9992ce69046b91a9bda",
      "tree": "435fa9ccd8254351bf7713db667f4007703f8f24",
      "parents": [
        "815bb3d44a27cbb6d8d113bd070d6748cf7dc181"
      ],
      "author": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Fri Jan 10 10:06:38 2020 -0800"
      },
      "committer": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Fri Jan 10 10:06:38 2020 -0800"
      },
      "message": "[composer] Add createCommandWriter to command engine.\n\nCommand engine always uses V2.1 CommandWriterBase, change the creation of\ncommand writer inside command engine so that we can use the right version of\ncommand writer.\n\nThis patch updates VR composer to match the change.\n\nBUG: b/147365206\nTest: build and boot.\nChange-Id: I373768a80947a3856b10de72aac4ca72926fbee5\n"
    },
    {
      "commit": "783ec6803ca246ff5ccdf9809588f063b3107bb1",
      "tree": "6326c3162724361849c4ce2e0108378dadb9a4a2",
      "parents": [
        "7618b235019514a8546e22fe20a74bb34a7b1acd"
      ],
      "author": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Fri Jan 10 08:41:15 2020 -0800"
      },
      "committer": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Fri Jan 10 08:41:15 2020 -0800"
      },
      "message": "unlinkToDeath only when the listener has no more callbacks\n\nBug: N/A\nTest: build, boot, SurfaceFlinger_test\nChange-Id: I2bbca0f781897967a18731ade3a3b4724f16d361\n"
    },
    {
      "commit": "828a3e2ba0b98992118e3039b30f535901731e8c",
      "tree": "a87aa8fb6dd9b042dc8510bf84148ba06fdc41fe",
      "parents": [
        "0d4d966e093bbd4cb64d18b4b4bc56ad74774024",
        "090d42c752c3531ad69ec39bb876b1e1ba755a94"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 10 10:41:33 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 10 10:41:33 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: use margin when comparing fps in PhaseOffsets\""
    },
    {
      "commit": "0d4d966e093bbd4cb64d18b4b4bc56ad74774024",
      "tree": "1b370ad22082e6018a57b46c9e60f55d03fd5198",
      "parents": [
        "3b5d3692972912e6d68fec69ba77544ca1748356",
        "8be02e37686a3101f8a6d6137486a81e8cd5bfdc"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 10 10:10:30 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 10 10:10:30 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: relative size RefreshRateOverlay\""
    },
    {
      "commit": "3b5d3692972912e6d68fec69ba77544ca1748356",
      "tree": "9dbeb3148676f3af2903c05df8608a96789ad9a6",
      "parents": [
        "c10d83b67987a3f3b13a3f145ac3855b8076f82c",
        "5d6b6617e16eafd19fc1d003924d948def91ef1f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 10 09:04:39 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 10 09:04:39 2020 +0000"
      },
      "message": "Merge \"Use const reference instead of pointer\""
    },
    {
      "commit": "c10d83b67987a3f3b13a3f145ac3855b8076f82c",
      "tree": "5695f5ac6ad3a4ae77ba811663195ca59849c46e",
      "parents": [
        "93e7902237955a248c57378696b9c29ae71a4e00",
        "475b914c490418adafcb2496a815c9862f349b36"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Fri Jan 10 05:22:11 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 10 05:22:11 2020 +0000"
      },
      "message": "Merge \"Revert \"Add RefreshRateRangeTest to presubmit\"\""
    },
    {
      "commit": "7618b235019514a8546e22fe20a74bb34a7b1acd",
      "tree": "07a485d2ad000d73c91cbbd197887ff7e89864e2",
      "parents": [
        "966888df94240830d03d589600a35af2e5385e42"
      ],
      "author": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Thu Jan 09 16:03:08 2020 -0800"
      },
      "committer": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Thu Jan 09 16:07:21 2020 -0800"
      },
      "message": "Force send callbacks when layer is detached\n\nBug: 141706317\nTest: build, boot, ASurfaceControlTest, SurfaceFlinger_test,\nlibsurfaceflinger_unittest, manual\nChange-Id: Ib3566905a2e46cbbf88a1c80300744db03c3b7c7\n"
    },
    {
      "commit": "b0433bc72b1876aba02c5726144cd7cbec4ffee9",
      "tree": "225cfa307111640ad890e6dc86dbad8235c747ce",
      "parents": [
        "090d42c752c3531ad69ec39bb876b1e1ba755a94"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jan 08 17:31:06 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jan 09 22:49:04 2020 +0000"
      },
      "message": "SurfaceFlinger: plumb composer 2.4 onSeamlessPossible\n\nPlumb onSeamlessPossible callback to SurfaceFlinger.\n\nTest: rev up composer to 2.4\nBug: 141329414\nChange-Id: I2166b8ea066002c76781aacbcc985f85f7c255a8\n"
    },
    {
      "commit": "475b914c490418adafcb2496a815c9862f349b36",
      "tree": "94a5b1d39f2b96bb9ff0a8ef1905840aef33ead6",
      "parents": [
        "c11a37b701dddced4e024b4312597f80d7ff1dcf"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Thu Jan 09 22:21:09 2020 +0000"
      },
      "committer": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Thu Jan 09 22:22:55 2020 +0000"
      },
      "message": "Revert \"Add RefreshRateRangeTest to presubmit\"\n\nThis reverts commit c11a37b701dddced4e024b4312597f80d7ff1dcf.\n\nReason for revert: - should be in the code\n\nChange-Id: Ifae80b9b2e60d2b7a32275b9620b5df3a0e78637\n"
    },
    {
      "commit": "815bb3d44a27cbb6d8d113bd070d6748cf7dc181",
      "tree": "eb0bd6330315933cfec5a512f43b0e5b7c8125a0",
      "parents": [
        "97ee9007fb0942b2e62665d3a796b6e1c9ef3f35",
        "91a2b3d80488ea105cf2ca76375f54791ef701e0"
      ],
      "author": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Thu Jan 09 22:16:30 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 09 22:16:30 2020 +0000"
      },
      "message": "Merge \"Extend ADataspace.\""
    },
    {
      "commit": "4a818c0643fff20a43444453f6b020a1fefe0155",
      "tree": "4dfeb12fe1b1b059304a390bdc495362f929fc97",
      "parents": [
        "966888df94240830d03d589600a35af2e5385e42",
        "c11a37b701dddced4e024b4312597f80d7ff1dcf"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Thu Jan 09 21:44:22 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 09 21:44:22 2020 +0000"
      },
      "message": "Merge \"Add RefreshRateRangeTest to presubmit\""
    },
    {
      "commit": "8be02e37686a3101f8a6d6137486a81e8cd5bfdc",
      "tree": "821a29ecf881c049d14b844f235fb3c6310f15c7",
      "parents": [
        "0ecfc27cf8a847087b8ee0edef6ad52be03e9129"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Mon Jan 06 16:59:14 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Jan 09 19:28:55 2020 +0000"
      },
      "message": "SurfaceFlinger: relative size RefreshRateOverlay\n\nUse display size to calculate the overlay size.\n\nTest: Enable refresh rate overlay\nChange-Id: I4b53c8f8137ec9b59867079d70e1016e2a57a2e6\n"
    },
    {
      "commit": "31ac64a8f55d998d0b7feaee98778c0cfb686c3b",
      "tree": "aa5c985aaff6ea2b83b7c414b4ad8afd4bd06ac9",
      "parents": [
        "966888df94240830d03d589600a35af2e5385e42"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Jan 09 09:26:22 2020 -0800"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Jan 09 11:26:48 2020 -0800"
      },
      "message": "[TimeStats] clear frame duration and renderengine histograms\n\nBug: 119885568\nTest: adb shell dumpsys SurfaceFlinger --timstats -clear\nChange-Id: Id6b5411f1b69fdfef1a8513f64f282fa87e2690a\n"
    },
    {
      "commit": "090d42c752c3531ad69ec39bb876b1e1ba755a94",
      "tree": "97b5837b4158e9cf605791a32a32915d1b74fa4c",
      "parents": [
        "e950a4e1e932e95b78e757be811ac8e85993bd47"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jan 08 12:08:11 2020 -0800"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Thu Jan 09 20:04:03 2020 +0100"
      },
      "message": "SurfaceFlinger: use margin when comparing fps in PhaseOffsets\n\nTo avoid any incorrect float equality due to precision errors\nuse 0.01Hz margin.\n\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nBug: 147358911\nChange-Id: Ief43eb7b5064b250a6255fd41542640d9c77529d\n"
    },
    {
      "commit": "5d6b6617e16eafd19fc1d003924d948def91ef1f",
      "tree": "791b1b5fe30c47c34be1029874903ce894d47c82",
      "parents": [
        "966888df94240830d03d589600a35af2e5385e42"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Jan 08 16:03:04 2020 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Jan 09 10:07:07 2020 -0800"
      },
      "message": "Use const reference instead of pointer\n\nImprove dispatcher api\u0027s by using const reference instead of pointer.\nThis would highlight the fact that the object is not nullable.\n\nBug: 140756730\nTest: presubmit\nChange-Id: I54d600815b973c6172b60d8f7a3ce4a12175b82e\n"
    },
    {
      "commit": "c11a37b701dddced4e024b4312597f80d7ff1dcf",
      "tree": "0aa19a4507af6cbd0765bd5c4e9f8408089fbc7c",
      "parents": [
        "5a6640e8686ff6ea99664d1b5186535064078a0f"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Thu Jan 09 09:35:09 2020 -0800"
      },
      "committer": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Thu Jan 09 09:35:19 2020 -0800"
      },
      "message": "Add RefreshRateRangeTest to presubmit\n\nTest: atest passes, adding test back to presubmit.\nBug: 147108703\nChange-Id: I2bcfce39f3bc89ab76f59d2c44deb84bc0936fa3\n"
    },
    {
      "commit": "0c70b6d5bd79e6510b3fa9074aa7434da068fd8c",
      "tree": "3c809581911e8fe54a8c40d93c03e078364b67b5",
      "parents": [
        "f5fd1c6c9007662e10566d91ac559ff1034eadea",
        "b38d8c6ebc73eef1b897d4019ce5fdab8539ba13"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Wed Jan 08 23:15:23 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 08 23:15:23 2020 +0000"
      },
      "message": "Merge \"Revert \"Handle different scale and offset for pointers in InputTarget.\"\""
    },
    {
      "commit": "f5fd1c6c9007662e10566d91ac559ff1034eadea",
      "tree": "b3290509aeaa40e4c1e73edb88d736b240726ecd",
      "parents": [
        "c91f9c852894a57ce92eee6bffa78602060edbb4",
        "dc1990138c06aaf0b8d8c528df69c47a8156aadd"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 08 22:58:57 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 08 22:58:57 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: migrate capabilities to surfaceflinger.rc\" am: e03e9dd1aa am: 82072cf28e am: dc1990138c\n\nChange-Id: Iba220482cfface409aa45b30f22e611d0ff65e89\n"
    },
    {
      "commit": "dc1990138c06aaf0b8d8c528df69c47a8156aadd",
      "tree": "725d9529265562a572cad72ecf8ad166b793eb75",
      "parents": [
        "a37b7c652902dba57de8d3ac5381ee197fd7243f",
        "82072cf28ebdefebef47d30d2a384fe6fb44a5c3"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 08 22:40:54 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Wed Jan 08 22:40:54 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: migrate capabilities to surfaceflinger.rc\" am: e03e9dd1aa am: 82072cf28e\n\nChange-Id: I26c37a46ade0015982b0a10cfeef7c60fa8f0216\n"
    },
    {
      "commit": "b38d8c6ebc73eef1b897d4019ce5fdab8539ba13",
      "tree": "f1cdc12166c193136c8e4d4c14ba786fb12a06ec",
      "parents": [
        "5d22a2358e49e51782e980201e406fb4d592305a"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Wed Jan 08 21:20:39 2020 +0000"
      },
      "committer": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Wed Jan 08 21:48:15 2020 +0000"
      },
      "message": "Revert \"Handle different scale and offset for pointers in InputTarget.\"\n\nThis reverts commit 5d22a2358e49e51782e980201e406fb4d592305a.\n\nReason for revert: b/147371357\n\nChange-Id: I1987192eba55424265a9910237a2df96c2336807\nBug: 147371357\n"
    },
    {
      "commit": "5a6640e8686ff6ea99664d1b5186535064078a0f",
      "tree": "b579118a3be39a767bd44cd6d95371e69b9eeefe",
      "parents": [
        "ec10463423b53bbb6b23949d3319c16ab8e2e755",
        "72f0d6e0674d948ef74e8bd4b15ce1a428fd3aae"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Wed Jan 08 20:42:31 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 08 20:42:31 2020 +0000"
      },
      "message": "Merge \"SF: Round the min/max checking to the closest int\""
    },
    {
      "commit": "d596928a68a9d195ae02fd70087b04919c9d075e",
      "tree": "3584ad784921be2176b346cbf000ec1781aa39a0",
      "parents": [
        "b2067cf8e9c9cdc08d159ee222d0e209a977d354"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Jan 07 16:23:18 2020 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Jan 08 19:36:15 2020 +0000"
      },
      "message": "SurfaceFlinger: migrate capabilities to surfaceflinger.rc\n\nSurfaceFlinger requires CAP_SYS_NICE which is set in\nlibcutils/fs_config.cpp. This is the old way of setting capabilities\nand new the way is to set it directly on surfaceflnger.rc\n\nTest: adb shell /data/nativetest64/SurfaceFlinger_test/SurfaceFlinger_test\nTest: adb shell stop surfaceflinger \u0026\u0026 adb shell start surfaceflinger\nBug: 147271477\nChange-Id: I680509a385928a9c929d4fe4857118af219e2b13\n"
    },
    {
      "commit": "72f0d6e0674d948ef74e8bd4b15ce1a428fd3aae",
      "tree": "4657e9e2ae991a1ad44db26e70ef7ba063f1ab1d",
      "parents": [
        "234fca17effce057b6beaf2d8052583c2c1b04e6"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Mon Jan 06 15:24:47 2020 -0800"
      },
      "committer": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Wed Jan 08 10:14:22 2020 -0800"
      },
      "message": "SF: Round the min/max checking to the closest int\n\nPixel display config is reporting FPS for a given display at 60.000004.\nMake sure to take a small deviation into the account.\n\nTest: manual. open swappy and change between refresh rates.\nTest: manual. open setting and turn smooth display on/off.\nTest: unit.\nChange-Id: I0086c98406a2bd1a9b836fa171b8be14f3152acd\nBug: 147252378\n"
    },
    {
      "commit": "5d22a2358e49e51782e980201e406fb4d592305a",
      "tree": "c6dd9827fce874c5c8a7e7e04b8550673e1d0ea8",
      "parents": [
        "e950a4e1e932e95b78e757be811ac8e85993bd47"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Dec 11 16:47:32 2019 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Tue Jan 07 16:48:41 2020 -0800"
      },
      "message": "Handle different scale and offset for pointers in InputTarget.\n\nThis change allows an InputTarget to have multiple pointers in different\nscale and offsets. This was done by using an array to store each\npointerId to PointerInfo. PointerInfo contains the information that\u0027s\nunique to each pointer, scale and offset.\n\nOnce the dispatcher is ready to queue the event, the dispatcher will\nrequest the InputTarget to gather all it\u0027s pointer information and\nnormalize them to a single offset and scale. It will generate a new\nDispatcherEntry with a new MotionEvent that has all the coordinates in a\nsingle offset and scale. It will also set that offset and scale in the\nMotionEvent so it can be handled properly when sent to the client.\n\nTest: InputDispatcherMultiWindowSameTokenTests\nTest: manually with magnification\nBug: 140756730\nChange-Id: I449741a4b4b6fd7abc498d0a4b113da56fd42687\n"
    },
    {
      "commit": "91a2b3d80488ea105cf2ca76375f54791ef701e0",
      "tree": "f086529457548a88411c10a385fff247c8456abd",
      "parents": [
        "e950a4e1e932e95b78e757be811ac8e85993bd47"
      ],
      "author": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Thu Dec 12 21:33:11 2019 -0800"
      },
      "committer": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Tue Jan 07 15:34:05 2020 -0800"
      },
      "message": "Extend ADataspace.\n\nIn order to allow NDK image decoding to access more color spaces, extend\nADataspace to match Named.ColorSpace as many as possible.\n\nBUG: b/140635413\nTest: build\nChange-Id: I8e06071060ab19b103900ff04d60f1c3d3fccda9\n"
    },
    {
      "commit": "94ab71336e311aaf6c6a09aa4231ecaf442dd9ae",
      "tree": "f1cdc12166c193136c8e4d4c14ba786fb12a06ec",
      "parents": [
        "3b39539d3a09dabe055e6656771b171641e4dfea",
        "adfd4fa3745c9c414591bbd3141586e464a86750"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 07 23:05:25 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 07 23:05:25 2020 +0000"
      },
      "message": "Merge \"Update eventTime to prevent stale events\""
    },
    {
      "commit": "3b39539d3a09dabe055e6656771b171641e4dfea",
      "tree": "bc3a0df88bb6da0004d116be17151ba6b51d2a3a",
      "parents": [
        "09338ecefc077bd2e77dec58e825343636340c85",
        "1ac7ce9647b408043763f4b3da6e7799f8f217d2"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jan 07 21:49:22 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 07 21:49:22 2020 +0000"
      },
      "message": "Merge \"*common: use package as name\""
    },
    {
      "commit": "09338ecefc077bd2e77dec58e825343636340c85",
      "tree": "cdebd2f9fab1377e254ef6285dd5f4307188deba",
      "parents": [
        "d5e21492de9fa2af0f14fe7a1dddc1e91ec1b69f",
        "ba45baec175b66cacd28b52b0a27adefbb8a0332"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 07 21:13:46 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 07 21:13:46 2020 +0000"
      },
      "message": "Merge \"Add tracing for onFrameReplaced\""
    },
    {
      "commit": "718f9601c611f657fd872f84f27d5cc9aec533b4",
      "tree": "cf804b09c7c66fbb4b0babf583e3185744847998",
      "parents": [
        "d5e21492de9fa2af0f14fe7a1dddc1e91ec1b69f"
      ],
      "author": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Sat Nov 09 20:01:35 2019 -0800"
      },
      "committer": {
        "name": "Dominik Laskowski",
        "email": "domlaskowski@google.com",
        "time": "Tue Jan 07 12:24:35 2020 -0800"
      },
      "message": "ui: Deduplicate rotation types\n\nIntroduce ui::Rotation, replacing ISurfaceComposer::Rotation as well as\nDISPLAY_ORIENTATION_* and DisplayState::eOrientation* constants.\n\nlibinput has widespread use of int32_t for orientation, so move\nDISPLAY_ORIENTATION_* to input/DisplayViewport.h for now.\n\nBug: 144601064\nTest: go/wm-smoke\nTest: screencap\nChange-Id: Ic4b8494e37c9d79c00d5b4be5eb88585f09efebf\n"
    },
    {
      "commit": "d5e21492de9fa2af0f14fe7a1dddc1e91ec1b69f",
      "tree": "b49056b42f74d857d7ba963d5b89a5d8c27e43ce",
      "parents": [
        "f0d81e840284fdf73b9d409c0142cb15808ff6c1",
        "f77025c8a82cb64b29ece8e2511b447c14202a0e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 07 20:04:36 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 07 20:04:36 2020 +0000"
      },
      "message": "Merge \"SF: VSyncReactor change offsets at correct time\""
    },
    {
      "commit": "adfd4fa3745c9c414591bbd3141586e464a86750",
      "tree": "fa6ac8f9069f5a0cdd568790df9d95113f048742",
      "parents": [
        "a81d409ce10bc25bd8b3e28f8ef87376d5fa2b5b"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Dec 20 11:02:58 2019 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Tue Jan 07 09:08:04 2020 -0800"
      },
      "message": "Update eventTime to prevent stale events\n\nGenerate a new motionevent for each injection to ensure that eventtime\nremains up to date.\n\nIn the InputDispatcher benchmarks, if the eventTime is not updated, then\nthe test will be stuck, because dispatcher will just drop all events.\nTo hit this condition, the benchmark must be ran for a sufficiently long\namount of time so that isStaleEvent returns true.\nAt that point, the benchmark for injectMotion will be stuck, because all\nevents are dropped, and we cannot consume anything.\n\nThe setDownTime api is unsupportedAppUsage in the Java layer, so we\nshouldn\u0027t remove it.\n\nBug: none\nTest: flame:/data/benchmarktest64/inputflinger_benchmarks #\n./inputflinger_benchmarks --benchmark_min_time\u003d10\n\nChange-Id: I1eb93ca9ddac52562e0da50de355d5cdc584c893\n"
    },
    {
      "commit": "1ac7ce9647b408043763f4b3da6e7799f8f217d2",
      "tree": "7a8dc0937946cd2691715126a20865133af8b17c",
      "parents": [
        "ae73bff6bfc908e61b7621c081699cc99b8ba921"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Jan 06 13:58:00 2020 -0800"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Mon Jan 06 23:24:24 2020 +0000"
      },
      "message": "*common: use package as name\n\nIn order to provide a more descriptive name, and to be consistent\nwith HIDL, the stable AIDL package names are switching from\nvintf-*common format to the package format\n(android.hardware.*common).\n\nBug: N/A\nTest: all build time\nChange-Id: Ibbc3ec3d3e76059ff00ac10971520873d54da8c6\n"
    },
    {
      "commit": "c7c1f08fde0ac3b0d52138522ab8347adeb3213c",
      "tree": "34239bcd0e63e698d7b30d1a9ae3a9e5c277c356",
      "parents": [
        "aa05e6c057cb32fdf2d26dfb3745cbac0a1a1351",
        "60aee1c46b52852e140f05748f69e38f4e3de36e"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 06 23:19:18 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 06 23:19:18 2020 +0000"
      },
      "message": "Merge \"[AChoreographer] Add refresh rate callback.\""
    },
    {
      "commit": "f77025c8a82cb64b29ece8e2511b447c14202a0e",
      "tree": "be0bd9603f209db84348622a9d16e450f92003b7",
      "parents": [
        "69a2660af076a74435a1e9f38ec7916efe1af6b8"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Wed Dec 18 16:13:24 2019 -0800"
      },
      "committer": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Mon Jan 06 14:59:16 2020 -0800"
      },
      "message": "SF: VSyncReactor change offsets at correct time\n\nThe VRR/MRR timing loop (currently flagged off) was changing\noffsets incorrectly on the first hwvsync signal after initiating\na rate change. With HWC2.3 and prior, the correct strategy for\nDispSync to employ is to enable hwvsync, and await the first observed\nsignal at the new rate. This patch makes the new system apply the\nupdated offsets at the correct time.\n\nFixes: b/146455831\nTest: 2 new, 3 fixed unit tests\nTest: boot on coral with integrated patches, fiddle with rate changes.\n\nChange-Id: Iafae2e5112a5015441405055159538feb6c23a4b\n"
    },
    {
      "commit": "aa05e6c057cb32fdf2d26dfb3745cbac0a1a1351",
      "tree": "95dfad759c41da813376a0728203396895e1d179",
      "parents": [
        "0ecfc27cf8a847087b8ee0edef6ad52be03e9129",
        "6d2f5c33189b4768cf3cb3cf361de84fcc46befe"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Mon Jan 06 22:19:50 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 06 22:19:50 2020 +0000"
      },
      "message": "Merge \"Fix RefreshRateRangeTest\""
    },
    {
      "commit": "0ecfc27cf8a847087b8ee0edef6ad52be03e9129",
      "tree": "8d4cfacc1d9ad071884e73dd63159e2fcea5df13",
      "parents": [
        "ebd2e595f41be2c0c3775359c832fb9d9fca3e69",
        "236eba34ccbc3bdbe381f34148d2b283feb90b29"
      ],
      "author": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Mon Jan 06 21:25:10 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 06 21:25:10 2020 +0000"
      },
      "message": "Merge \"Fix callback registration during merging in same-process\""
    },
    {
      "commit": "ebd2e595f41be2c0c3775359c832fb9d9fca3e69",
      "tree": "edc95fe3d29d4c56f51534c7a3e412a04fc89b37",
      "parents": [
        "69a2660af076a74435a1e9f38ec7916efe1af6b8",
        "ddeae26fd12bffb19d6e8dbcb443f78aee244932"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Mon Jan 06 20:52:41 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 06 20:52:41 2020 +0000"
      },
      "message": "Merge \"Add ColorSaturation to proto dump\""
    },
    {
      "commit": "6d2f5c33189b4768cf3cb3cf361de84fcc46befe",
      "tree": "1cc0d3e0aebc8b585f2b66e43a80e40cd148848d",
      "parents": [
        "337513b7ccd0ba3d4730a412057404d7218013ae"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Mon Jan 06 12:15:59 2020 -0800"
      },
      "committer": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Mon Jan 06 12:15:59 2020 -0800"
      },
      "message": "Fix RefreshRateRangeTest\n\nRefreshRateRangeTest was broken in ag/9714241, where we made changes to\ndo more strict validation on the params passed to\nsetDesiredDisplayConfigSpecs().\n\nBug: 142507213\n\nTest: RefreshRateRangeTest\nChange-Id: I671f4b846a456c3978a52983caf64ffa2c055cab\n"
    },
    {
      "commit": "69a2660af076a74435a1e9f38ec7916efe1af6b8",
      "tree": "1655d8ce6f071ccaba8760ecda321171c0d3ae19",
      "parents": [
        "a81d409ce10bc25bd8b3e28f8ef87376d5fa2b5b",
        "00287387eef4ba1847245bfc15ccd94b07a9137c"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Mon Jan 06 19:48:32 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 06 19:48:32 2020 +0000"
      },
      "message": "Merge \"SF: add disabled VRR DispSync impl (VSyncReactor)\""
    },
    {
      "commit": "ddeae26fd12bffb19d6e8dbcb443f78aee244932",
      "tree": "a983bdd38b8ab48d3af5aba0afad3da011afb122",
      "parents": [
        "6f6e23056a9e2c1fc6128d2775ceeee0ac2dd374"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Jan 06 10:31:23 2020 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Jan 06 11:10:46 2020 -0800"
      },
      "message": "Add ColorSaturation to proto dump\n\nTest: ColorSaturation is in the proto dump\nBug: 140917834\nChange-Id: Ie3bde20f9717a2fe5c1b9a3d316cbed54e512a84\n"
    },
    {
      "commit": "236eba34ccbc3bdbe381f34148d2b283feb90b29",
      "tree": "10e2a8bf76f52a021418a59aae7d92961cd5cac8",
      "parents": [
        "a81d409ce10bc25bd8b3e28f8ef87376d5fa2b5b"
      ],
      "author": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Fri Jan 03 16:53:39 2020 -0800"
      },
      "committer": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Mon Jan 06 10:34:44 2020 -0800"
      },
      "message": "Fix callback registration during merging in same-process\n\nBug: 147109531\nTest: build, boot, libsurfaceflinger_unittest, SurfaceFlinger_test\nChange-Id: I17d9ba98ba85d45b3325588e94e978747786488c\n"
    },
    {
      "commit": "a81d409ce10bc25bd8b3e28f8ef87376d5fa2b5b",
      "tree": "578600220c456ecf11df9f18f771f0116f72fee5",
      "parents": [
        "ae73bff6bfc908e61b7621c081699cc99b8ba921",
        "e70079d973450d33010766b957ad98e1bbedc808"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Mon Jan 06 17:27:14 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 06 17:27:14 2020 +0000"
      },
      "message": "Merge \"Add all SF tests to presubmit, excluding failing tests\""
    },
    {
      "commit": "1ca25ba9dc813b1a97e14997ce6bf5cb59e42be5",
      "tree": "33b754b84cdbf44986d0aecfa939910c6d1e6386",
      "parents": [
        "337513b7ccd0ba3d4730a412057404d7218013ae",
        "011538f1ed7d102dc1e96911466805cdea63eecd"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 03 23:51:00 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 03 23:51:00 2020 +0000"
      },
      "message": "Merge \"GpuStats: track whether the app creates ES1 context\""
    },
    {
      "commit": "bdd08ccce72e4cb46c43c64caeec1fb624cad174",
      "tree": "a16047eeb247992ce41c8f413ecf3113ca661df0",
      "parents": [
        "f7308542d34d0b07ac860e2ea6e2cb601e213a44"
      ],
      "author": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Tue Dec 17 21:35:14 2019 -0800"
      },
      "committer": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Fri Jan 03 10:57:41 2020 -0800"
      },
      "message": "Unify hwc2_device_t and HWComposer.\n\nHWComposer can already represent the built-in hardware composer capabilities, a\ndevice notation is not needed. HWComposer now directly manages all displays and\nowns the lifetime of all displays.  The next step is to explore whether we can\nsafely deprecate all hwcomposer2.h types inside SurfaceFlinger, move to HIDL\ntypes and eventually use AIDL types.\n\nBUG: b/77585359\nTest: build, boot.\nChange-Id: Id0f77b49aa441bdbf578302a04ae03b5573eb2aa\n"
    },
    {
      "commit": "f7308542d34d0b07ac860e2ea6e2cb601e213a44",
      "tree": "4ffb72bce37719ffdaa7e087268b529a3ad47514",
      "parents": [
        "f02a0a675946eb918dce60928106ddfa4e7da2be",
        "9e16a485b39a9e39191666d56d7d847ee801830f"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 02 22:50:39 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 02 22:50:39 2020 +0000"
      },
      "message": "Merge \"SurfaceFlinger: introduce PhaseOffsetsAsDurations\""
    },
    {
      "commit": "e70079d973450d33010766b957ad98e1bbedc808",
      "tree": "228a7e594392922224ff2ae3d0c0808fb5fa738e",
      "parents": [
        "cb9232108322f4e74583feaf27c44c5331e4fa35"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Jan 02 14:24:21 2020 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Jan 02 14:24:21 2020 -0800"
      },
      "message": "Add all SF tests to presubmit, excluding failing tests\n\nBy default, all new tests will be run in presubmit for SurfaceFlinger.\nExcluded currently failing tests.\n\nTest: Tested with filter\nChange-Id: I8fb5e173e9d53f0897f9c6310a79f8d6c291119b\n"
    },
    {
      "commit": "cb9232108322f4e74583feaf27c44c5331e4fa35",
      "tree": "40c62a6baa2ecb60884632c3a2938172ca7625a9",
      "parents": [
        "6f6e23056a9e2c1fc6128d2775ceeee0ac2dd374"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Dec 30 14:05:11 2019 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Dec 30 14:40:51 2019 -0800"
      },
      "message": "Remove layer from window handle since it\u0027s no longer used\n\nFixes: 146671630\nTest: Builds and runs\nChange-Id: I095228a361ecdda8e1abd48c6d32b085b0dd20cf\n"
    },
    {
      "commit": "ba45baec175b66cacd28b52b0a27adefbb8a0332",
      "tree": "4364a8a8f3108556eeceef8c2479a4300b9bc3e8",
      "parents": [
        "6f6e23056a9e2c1fc6128d2775ceeee0ac2dd374"
      ],
      "author": {
        "name": "Adithya Srinivasan",
        "email": "adsrini@google.com",
        "time": "Mon Dec 30 12:39:11 2019 -0800"
      },
      "committer": {
        "name": "Adithya Srinivasan",
        "email": "adsrini@google.com",
        "time": "Mon Dec 30 12:39:11 2019 -0800"
      },
      "message": "Add tracing for onFrameReplaced\n\nAs a part of the queueBuffer call, in async mode, the buffer at the\nfront of the queue can be replaced. This change adds a tracing for such\nreplace call and will use the same event type as Queue.\n\nTest: Run GAPID vulkan cube app or any other app that uses async mode\nand check if Queue event shows up\nBug: 145828619\n\nChange-Id: I9f86c79dab09bf1071a79adbb743276e07a9b47f\n"
    },
    {
      "commit": "6f6e23056a9e2c1fc6128d2775ceeee0ac2dd374",
      "tree": "9cdf939dbbb05822a8264bdb9e395031e7cadaa0",
      "parents": [
        "0cde87d4578c2cae15758f51d7513c84e926cdb5",
        "af87b3e09141558215e28f84d954590b5e7f2f16"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Fri Dec 27 00:44:46 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 27 00:44:46 2019 +0000"
      },
      "message": "Merge \"Added input support for cloned layers\""
    },
    {
      "commit": "0cde87d4578c2cae15758f51d7513c84e926cdb5",
      "tree": "31d622b266fe4f12ab8021b4c6633a7367d9284f",
      "parents": [
        "032c995d011917b503c6445e553b14f5169727c0",
        "95a1ed40c58a7631abd7a94468e523065cfb33f8"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 26 23:22:51 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 26 23:22:51 2019 +0000"
      },
      "message": "Merge \"Add shadow radius and corner radius crop to sf and transaction trace\""
    },
    {
      "commit": "af87b3e09141558215e28f84d954590b5e7f2f16",
      "tree": "1f19e28978e9b1e9dab840da35ba0ba49a0ed03a",
      "parents": [
        "c41ab321c1361ef9faabeefc78c69d606ef2aceb"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Tue Oct 01 16:59:28 2019 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Dec 26 15:18:03 2019 -0800"
      },
      "message": "Added input support for cloned layers\n\nThis was done with a few changes:\n1. Added a layerId in the input info so the InputInfo objects can be\nuniquely identified as per layer\n2. When setting input info in InputDispatcher, compare InputInfo objects\nusing layer id instead of input token.\n3. Updated the crop region for layers based on the cloned hierarchy so\nthe input is cropped to the correct region.\n\nBug: 140756730\nTest: InputDispatcherMultiWindowSameTokenTests\n\nChange-Id: I980f5d29d091fecb407f5cd6a289615505800927\n"
    },
    {
      "commit": "032c995d011917b503c6445e553b14f5169727c0",
      "tree": "725e3bfa996f2b3fb8c9a4da93791f1bb44b9c77",
      "parents": [
        "234fca17effce057b6beaf2d8052583c2c1b04e6",
        "a483b4aae955319e48fc3837eae58f2049c63f4b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 26 21:22:20 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 26 21:22:20 2019 +0000"
      },
      "message": "Merge \"Draw shadows when the casting layer is occluded or transparent\""
    },
    {
      "commit": "60aee1c46b52852e140f05748f69e38f4e3de36e",
      "tree": "7a29657039f1f8911fdef5689aa39e7fd4f3f6bd",
      "parents": [
        "516de508aa52a0907a496890dc191501481bca7b"
      ],
      "author": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Mon Oct 28 16:18:59 2019 -0700"
      },
      "committer": {
        "name": "Alec Mouri",
        "email": "alecmouri@google.com",
        "time": "Thu Dec 26 10:28:47 2019 -0800"
      },
      "message": "[AChoreographer] Add refresh rate callback.\n\nThis will augment the NDK to respond to display events where the display\nrefresh rate changes. Consumers of this api will include:\n* HWUI, for implementing a policy for determining whether to use\nrender-ahead,\n* Swappy, to potentially replace jumping into Java from native code to\nrespond to display evnets there.\n* Any other native app that would rely on the up-to-date display refresh\nrate.\n\nCurrently however this is not yet exposed to NDK as CTS is not yet\nwritten. Once CTS is written then this will be formally exposed to NDK.\nFor now we\u0027ll leave these as APEX apis to represent incremental\nprogress.\n\nBug: 136262896\nTest: builds\nChange-Id: I66d393f93eb5d681547411e330ef1b8950a35c5d\n"
    },
    {
      "commit": "234fca17effce057b6beaf2d8052583c2c1b04e6",
      "tree": "9206d898740078a9e2d1d6d45373bb504de39e5d",
      "parents": [
        "7de936e87069ed8853fa613ae63420fe9ecedd93",
        "5492cb5c4dddc0ae10bbd77f09e3591428033c3d"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 25 13:14:50 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 25 13:14:50 2019 +0000"
      },
      "message": "Merge \"Add Auto Low Latency Mode to native framework\""
    },
    {
      "commit": "d1c2318674b79af266e40e9f7c31e9ffea357b77",
      "tree": "221d9bd97d00091f84e9d7d59f1f86f2dd645a1b",
      "parents": [
        "516de508aa52a0907a496890dc191501481bca7b"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Fri Dec 20 18:44:56 2019 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Dec 23 15:08:31 2019 -0800"
      },
      "message": "Separated Receiver and Window for input tests\n\nThis will allow for testing of multiple windows with the same receiver.\nAlso added the ability to send a vector of points for touch events to\nprepare for tests with multiple points.\n\nTest: /data/nativetest64/inputflinger_tests/inputflinger_tests\nBug: 140756730\nChange-Id: I0c5d75ba1aa57233b4e82a4e97f2a661c8dff018\n"
    },
    {
      "commit": "5492cb5c4dddc0ae10bbd77f09e3591428033c3d",
      "tree": "89602deb0d7548818a45e54d27e6b59360d37f3b",
      "parents": [
        "516de508aa52a0907a496890dc191501481bca7b"
      ],
      "author": {
        "name": "Galia Peycheva",
        "email": "galinap@google.com",
        "time": "Wed Oct 30 14:13:16 2019 +0100"
      },
      "committer": {
        "name": "Galia Peycheva",
        "email": "galinap@google.com",
        "time": "Mon Dec 23 15:46:15 2019 +0100"
      },
      "message": "Add Auto Low Latency Mode to native framework\n\nBug: 132731049\n\nTest: m\nTest: atest libsurfaceflinger_unittest\nTest: atest libcompositionengine_test\nTest: atest libgui_test\nChange-Id: If3c3cd5199826d5ac4730af0a1eda4dcdfe551be\n"
    },
    {
      "commit": "66b3f67067e3d91d7372f974baf0f8e678270732",
      "tree": "f56bb6cda6557d403f6d2bd363b99b0cd4c501a2",
      "parents": [
        "5cef431daa88349b5ec821f200335bf775c4e5e6",
        "ed3a8cc9a64cb945aed0329f39368b013a9abc00"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Sat Dec 21 01:43:33 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 21 01:43:33 2019 +0000"
      },
      "message": "Merge \"Switch from allowed display configs to refresh rate range\""
    },
    {
      "commit": "5cef431daa88349b5ec821f200335bf775c4e5e6",
      "tree": "09fc41460a1c7a6bf19cd7835fb60651f1ce4e15",
      "parents": [
        "99f9d44fbad410afec4f0e340172f239fc0ed28d",
        "6643cd81ed63d04662bfded60df1eeb11dcf248c"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Dec 21 00:50:00 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 21 00:50:00 2019 +0000"
      },
      "message": "Merge \"CompositionEngine: fix HWC transform calculation\""
    },
    {
      "commit": "00287387eef4ba1847245bfc15ccd94b07a9137c",
      "tree": "27c9fe3605256f660cd9cb56a974af3ceb86fa36",
      "parents": [
        "37c665dc050ab45cf51441fb70dac1004e1336d9"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Tue Nov 19 15:11:55 2019 -0800"
      },
      "committer": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Fri Dec 20 16:37:04 2019 -0800"
      },
      "message": "SF: add disabled VRR DispSync impl (VSyncReactor)\n\nAdds a DispSync implementation called VSyncReactor that\nis built on better tested components that should be\ncapable of evolving with the MRR and VRR plans in R and S.\n\nImplementation is currently disabled, but can be enabled\nby failsafe switch:\n\nENABLE:\nsetprop debug.sf.vsync_reactor 1\nstop;start\n\nDISABLE:\ndebug.sf.vsync_reactor not set, OR\nsetprop debug.sf.vsync_reactor 0\nstop;start\n\nwhile testing is being conducted (still flushing out bugs).\n\nFixes: 140303479\nTest: check that DispSync1.0 is still active\nTest: set property and check that DispSync2.0 turns on\n\nChange-Id: I668e34e8880d0aa08222d1028bc874a2ab6a7339\n"
    },
    {
      "commit": "a483b4aae955319e48fc3837eae58f2049c63f4b",
      "tree": "a10919b0081d010cb3b4eb9daa6f219998735719",
      "parents": [
        "99f9d44fbad410afec4f0e340172f239fc0ed28d"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Dec 12 15:07:52 2019 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Dec 20 23:22:57 2019 +0000"
      },
      "message": "Draw shadows when the casting layer is occluded or transparent\n\nIgnore transparent region when generating the composition layer for shadows. Client may\nprovide transparent region hints but the shadow should be drawn over the entire layer.\nSolves an issue with YouTube in PiP which sets a transparent region where the\nSurfaceView is shown causing a shadow of incorrect size to be drawn.\n\nDraw shadows even if the layer is completely occluded by another layer. The layer will\nnot be composed in this case causing the shadow to not be drawn either. So extend its\nvisible region by the shadow length so we can check if the shadows will be occluded as\nwell.\n\nBug: 136561771\nTest: atest libcompositionengine_test\nTest: manual tests with pip overriding shadows to be drawn by sf\nChange-Id: I4c6cae1716caebe46119ebd1643d8b5e3eda56c3\n"
    },
    {
      "commit": "011538f1ed7d102dc1e96911466805cdea63eecd",
      "tree": "de02fa6b157c158417ad628257387c7a62915b24",
      "parents": [
        "80be60e1adc451b3e37a115cf690401eee54229e"
      ],
      "author": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Fri Dec 20 14:37:21 2019 -0800"
      },
      "committer": {
        "name": "Yiwei Zhang",
        "email": "zzyiwei@google.com",
        "time": "Fri Dec 20 14:45:35 2019 -0800"
      },
      "message": "GpuStats: track whether the app creates ES1 context\n\nBug: 146661131\nTest: adb shell dumpsys gpu\nChange-Id: I54e6953368ea8e2ced7477ee64796580dc14c39e\n"
    },
    {
      "commit": "d078476b466d15691f508593a54611103e42c26e",
      "tree": "c02dca4154b85eb82cdb51df4e81110ebcd85786",
      "parents": [
        "37c665dc050ab45cf51441fb70dac1004e1336d9"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Nov 01 15:33:48 2019 -0700"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Fri Dec 20 09:04:14 2019 -0800"
      },
      "message": "Add benchmarks for InputDispatcher\n\nNo logs are generated when these benchmarks are ran.\n\nBug: none\nTest: atest inputflinger_benchmarks\nChange-Id: Ifce2518657b2f266f8e8ccfaabac1331ecdf7935\n"
    },
    {
      "commit": "37c665dc050ab45cf51441fb70dac1004e1336d9",
      "tree": "f664f8951ad887691fc065b9513fab2232a03d2b",
      "parents": [
        "6e72dba8ec4b1668043ff3e3c06be6f918dc9145",
        "c94ca83964accc75b08060a265abe2a346de1c2d"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Fri Dec 20 16:04:59 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 20 16:04:59 2019 +0000"
      },
      "message": "Merge changes I400fc5e3,I2135f87a\n\n* changes:\n  SF: VSyncDispatch: correct vsync prediction drift\n  SF: VSyncReactor add event subscription functions\n"
    },
    {
      "commit": "9e16a485b39a9e39191666d56d7d847ee801830f",
      "tree": "3f9e40c27fe6c0bf04944c7a14fe312e48c24267",
      "parents": [
        "b89b959d28d7b5a83b9b1c6d1b17dbf98c634697"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Tue Dec 03 17:19:41 2019 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Thu Dec 19 18:25:12 2019 -0800"
      },
      "message": "SurfaceFlinger: introduce PhaseOffsetsAsDurations\n\nCurrently we define phase offset for each refresh rate. This works for\n\u003c\u003d 2 refresh rates, but doesn\u0027t scale well. This change is introducing\na new way to calculate phase offsets, which is based on duration. Then,\nbased on the duration and refresh rate, a phase offset is calculated.\n\nThe calculation is captured here: https://docs.google.com/spreadsheets/d/1a_5cVNY3LUAkeg-yL56rYQNwved6Hy-dvEcKSxp6f8k/edit#gid\u003d0\n\nBug: 145561086\nBug: 141329414\nTest: jank tests\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\nChange-Id: I16aaf7437d30c4b12f955bdaac36582dd100519f\n"
    },
    {
      "commit": "ab84f41505e48228e6d8483271ed8363606e8821",
      "tree": "125f86b7d348d39fc277bec0fb723930c73f25ca",
      "parents": [
        "ccdc57b7842c76f74c72c5e9b9a9905a2be3a216",
        "8588cc99829d4f02ecff1fd5e4d3d8a719402949"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Dec 19 23:58:39 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 19 23:58:39 2019 +0000"
      },
      "message": "Merge \"Native tests for EventHub\""
    },
    {
      "commit": "6643cd81ed63d04662bfded60df1eeb11dcf248c",
      "tree": "d8dc497167f9f6ac87929e0379f5b1001880802b",
      "parents": [
        "8a5092d0bbf7fd46f2a27e36a727ca0e7d5c35aa"
      ],
      "author": {
        "name": "Rashed Abdel-Tawab",
        "email": "rashed@linux.com",
        "time": "Tue Oct 29 10:01:56 2019 -0700"
      },
      "committer": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Thu Dec 19 14:59:06 2019 -0800"
      },
      "message": "CompositionEngine: fix HWC transform calculation\n\nUse the correct display transform in calculateOutputRelativeBufferTransform().\nWhen SF_PRIMARY_DISPLAY_ORIENTATION is set, DisplayDevice only updates the\nlogical to physical transform; OutputCompositionState.orientation doesn\u0027t\nchange.\n\nTest: - OutputLayerTest.displayInstallOrientationBufferTransformSetTo90\n      - Run \"dumpsys SurfaceFlinger\" on a device with SF_PRIMARY_DISPLAY_ORIENTATION\n        set to 90 and verify that the HWC transform is 0 (identity)\n      - screencap\nChange-Id: I079b5ea22de8d47a7fb7233d01decfbd4b578be8\n"
    },
    {
      "commit": "4a2214fa1e597d527697aa206664773a7db6987d",
      "tree": "c244fa8edaa14926cb1ecf44e3f95d7eff347e05",
      "parents": [
        "8a5092d0bbf7fd46f2a27e36a727ca0e7d5c35aa",
        "81e2bb96bf4b7f3bfdcdcc33c9247e5b94748243"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Thu Dec 19 21:22:23 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 19 21:22:23 2019 +0000"
      },
      "message": "Merge \"Consume batches in dispatcher tests\""
    },
    {
      "commit": "c94ca83964accc75b08060a265abe2a346de1c2d",
      "tree": "2beb0bcb75490a4b0ee392a770f76f509f30ef41",
      "parents": [
        "f91e9236bc80482b1c327f8fb7306c5b0b419e65"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Tue Nov 26 12:56:24 2019 -0800"
      },
      "committer": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Thu Dec 19 09:08:07 2019 -0800"
      },
      "message": "SF: VSyncDispatch: correct vsync prediction drift\n\nRefine VSyncDispatch::schedule implementation so that refining\nthe prediction by small amounts would not lead to skipped callbacks.\nThe current implementation did not account for a case where\na valid vsync callback would be skipped. (exposed\nin unit testing). Like the rest of VSyncDispatch, this\ncode is flagged off (ie, latent, not production code yet)\n\nFixes: 145213786\nBug: 146050690\nTest: 6 new unit tests, 3 unit test change\nTest: validation via systrace\n\nChange-Id: I400fc5e3c181b49ab237b0dd0da2a62e38522fa0\n"
    },
    {
      "commit": "81e2bb96bf4b7f3bfdcdcc33c9247e5b94748243",
      "tree": "3a529a2e832a5260655f22be72b24679de069ee1",
      "parents": [
        "eb1cdc5b093761733a532779ecde9474831a5789"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Dec 18 15:03:51 2019 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Dec 19 09:08:05 2019 -0800"
      },
      "message": "Consume batches in dispatcher tests\n\nWe are currently calling consume with consumeBatches\u003dfalse. But that\nmeans we don\u0027t want to consume any batched events. As a result, when\nevents are simply stored internally in inputconsumer, they are not\nreturned to callers of consume(..).\n\nWe never had tests that included MOVE events, and since DOWN events are\nnever batched, we did not encounter this case.\n\nNow that we are adding a MOVE test, we need to ensure batches are\nconsumed as well.\n\nBug: none\nTest: atest inputflinger_tests\n\nChange-Id: Ieb13e1bb43bbf96f7f9352a283387ffdb11ba54a\n"
    },
    {
      "commit": "8588cc99829d4f02ecff1fd5e4d3d8a719402949",
      "tree": "a71c9878592ed0a29903fbad44549f286eb01712",
      "parents": [
        "a6a4ed3aadbd4afda761a212907d81baedba4981"
      ],
      "author": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Wed Dec 12 18:17:58 2018 -0800"
      },
      "committer": {
        "name": "Siarhei Vishniakou",
        "email": "svv@google.com",
        "time": "Thu Dec 19 09:04:59 2019 -0800"
      },
      "message": "Native tests for EventHub\n\nCurrently, there is no test coverage for EventHub. Add some basic tests\nfor EventHub here. This should establish a place for future EventHub\ntests.\n\nTest: atest -a inputflinger_tests\nBug: 62940136\nBug: 111431676\nChange-Id: If7d1da814b1b296bd731dd82d227256067d085fd\n"
    },
    {
      "commit": "f91e9236bc80482b1c327f8fb7306c5b0b419e65",
      "tree": "11714642340aae6fde6f3b47509279acc0cfd4f2",
      "parents": [
        "c13435aece9171ae846615f3595bcf8714e3a700"
      ],
      "author": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Thu Nov 21 10:51:23 2019 -0800"
      },
      "committer": {
        "name": "Kevin DuBois",
        "email": "kevindubois@google.com",
        "time": "Thu Dec 19 08:52:10 2019 -0800"
      },
      "message": "SF: VSyncReactor add event subscription functions\n\nAdds 3 more functions from the DispSync interface to VSyncReactor,\n{add,remove}EventListener and changePhaseOffset.\n\nBug: 140303479\nTest: about 10 new units\n\nChange-Id: I2135f87a21cd0e43613367d31e006bb574380bc6\n"
    },
    {
      "commit": "bb2dd8ea03e354415eec66044934051f89bc94d0",
      "tree": "4bca33de473d4dba62d30b40d503fca1ae99162e",
      "parents": [
        "e62fe7e21ae881dacb843b0406d8f1e49367d185",
        "8b19a0550297ed6e849b3e79cfc3de311cdf8892"
      ],
      "author": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Dec 19 10:45:29 2019 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Thu Dec 19 10:45:29 2019 +0000"
      },
      "message": "Merge \"Revert \"Fix drag and drop (2/3)\"\" into qt-qpr1-dev am: 8b19a05502\n\nChange-Id: I67ec7ef546b5d0bdf954266687955ee8c5f94bf4\n"
    },
    {
      "commit": "8b19a0550297ed6e849b3e79cfc3de311cdf8892",
      "tree": "9e1abf7561681c1b11cf5f50dc231e4b47fd20a3",
      "parents": [
        "86ced3ef2e7f50c200ad483009eb2a214029f012",
        "5845eafaad804ffe8088cd34cdb52f6f9f9282de"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 19 07:49:32 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 19 07:49:32 2019 +0000"
      },
      "message": "Merge \"Revert \"Fix drag and drop (2/3)\"\" into qt-qpr1-dev"
    },
    {
      "commit": "8914b952b8ae427026773f6cfb2696a63720bbfd",
      "tree": "7e88f6fec040122a6233a5e43c7adfcc5d3d0242",
      "parents": [
        "0dfba0856dcc25603f0bfdc70c06f17c8fcac2c6",
        "b89b959d28d7b5a83b9b1c6d1b17dbf98c634697"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 19 03:17:06 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 19 03:17:06 2019 +0000"
      },
      "message": "Merge \"SurfaceFlinger: dispatch only one vsync callback on composer 2.4\""
    },
    {
      "commit": "94e6ccce782a94f09a2b9cc8c9956216cc39e78b",
      "tree": "4e1a5efb8f28f9a48d9c224f7901e3eb4e5765a1",
      "parents": [
        "183d82c72e0681c60d2cb6545432bf167c5f077d",
        "40e0ff592b196ec350d161e494222a71bef814e5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 18 18:32:51 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 18 18:32:51 2019 +0000"
      },
      "message": "Merge \"Update tests for AIDL types.\""
    },
    {
      "commit": "183d82c72e0681c60d2cb6545432bf167c5f077d",
      "tree": "48ed59326f7b1668854088e9596f919c11a5e71f",
      "parents": [
        "7dd602dda81ef5185e1ead7054a041b3c0807b1f",
        "2cb8b62ef3264c0b8b0429ba1a86d04307d31ab8"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 18 17:57:43 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 18 17:57:43 2019 +0000"
      },
      "message": "Merge \"SurfaceFlinger: show refresh rate instead of color in overlay\""
    },
    {
      "commit": "ed3a8cc9a64cb945aed0329f39368b013a9abc00",
      "tree": "cee09d098da783c6dbac21b94d992cd66f1bf3b0",
      "parents": [
        "eb1cdc5b093761733a532779ecde9474831a5789"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Thu Nov 14 00:55:07 2019 +0100"
      },
      "committer": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Tue Dec 17 15:02:30 2019 -0800"
      },
      "message": "Switch from allowed display configs to refresh rate range\n\nThis completes the recent work to switch from a list of allowed display\nconfigs to a default config + min/max frame rate.\n\nBug: 142507213\n\nTest: Ran on a device with refresh rate switching, confirmed expected\n      60/90 switching behavior when touching the screen.\nTest: Launched Google Maps on a device with 60/90 switching, confirmed\n      the device stays at 60fps.\nTest: Checked dumpsys output, confirmed new display config specs\n      formatting looks good.\nTest: Ran on a device with refresh rate switching disallowed via the\n      ro.surface_flinger.refresh_rate_switching sysprop, and confirmed\n      we don\u0027t do refresh rate switching.\nTest: Ran on a device that doesn\u0027t support refresh rate switching, and\n      confirmed normal behavior.\nTest: Tested surface flinger\u0027s display config back door, confirmed it\n      still works.\nTest: Inspected log output, made sure there\u0027s nothing weird.\nTest: Ran unit tests for DisplayModeDirector, LocalDisplayAdapter, and\n      RefreshRateConfigs.\nTest: atest FrameworksServicesTests\nTest: atest FrameworksMockingServicesTests\nTest: adb shell /data/nativetest64/libgui_test/libgui_test\nTest: adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest\n\nChange-Id: I53743a437bce1e3df79539caece0c423051c80a6\n"
    },
    {
      "commit": "2942fce2cda6629556c7afcc9bd4c359778d3c97",
      "tree": "388eb6b889d960cf07253820928a54de4df8dc92",
      "parents": [
        "a6a4ed3aadbd4afda761a212907d81baedba4981",
        "dfca3ecce2a0c045aa943fc4dfd6d2d33d43a1e0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 17 21:49:01 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 17 21:49:01 2019 +0000"
      },
      "message": "Merge \"Fix callback drop\""
    },
    {
      "commit": "dfca3ecce2a0c045aa943fc4dfd6d2d33d43a1e0",
      "tree": "90d1f5881a4b8047afd88373add504e0dd1c77bf",
      "parents": [
        "d0d28e3183d55c4a23d87b59681ceac3e3cf133d"
      ],
      "author": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Tue Dec 17 08:50:33 2019 -0800"
      },
      "committer": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Tue Dec 17 08:56:59 2019 -0800"
      },
      "message": "Fix callback drop\n\ncallbacks can be registered on any thread at any time.  Do not clear\nmCompletedTransactions unless there are no associated stats\n\nBug: 146345307, 141706317\nTest: build, boot, libsurfaceflinger_unittest, SurfaceFlinger_test\nChange-Id: I659604c6be578417ebac7baf125510cddfbfd794\n"
    },
    {
      "commit": "af94d9d49f287db0fdb1b8662b32614c71483b0a",
      "tree": "a2dcc6f31f0769a809dca513c9f983d8db7b3d54",
      "parents": [
        "eb1cdc5b093761733a532779ecde9474831a5789",
        "f3ffc4e4bc794d3ee8ad007e9e9db9bb05443ef5"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 16 20:30:11 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 16 20:30:11 2019 +0000"
      },
      "message": "Merge \"Remove GLES wording from SurfaceFlinger.\""
    },
    {
      "commit": "eb1cdc5b093761733a532779ecde9474831a5789",
      "tree": "13c6c4f6f074744903f0d0a1bef910294aa2f499",
      "parents": [
        "1aa60c16314c3f589ab3d73a6bde3d5b88743563",
        "09e600526f24c7f12aaf73e33e39ca0140d1f3e0"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 16 17:47:26 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 16 17:47:26 2019 +0000"
      },
      "message": "Merge \"Fix check for nullptr surface IBinder\""
    },
    {
      "commit": "09e600526f24c7f12aaf73e33e39ca0140d1f3e0",
      "tree": "5360af5bcc010fd67883a9c53e84623ad926e43e",
      "parents": [
        "d0d28e3183d55c4a23d87b59681ceac3e3cf133d"
      ],
      "author": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Sun Dec 15 14:51:15 2019 -0800"
      },
      "committer": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Mon Dec 16 17:34:44 2019 +0000"
      },
      "message": "Fix check for nullptr surface IBinder\n\nBug: 146345307\nTest: build, boot, libsurfaceflinger_unittest, SurfaceFlinger_test\nChange-Id: I79d5bb71beb573c3c8a150c938aa6d7fa301353f\n"
    },
    {
      "commit": "40e0ff592b196ec350d161e494222a71bef814e5",
      "tree": "7991d90dbaefd96e1b38690d90214556dea45f16",
      "parents": [
        "1aa60c16314c3f589ab3d73a6bde3d5b88743563"
      ],
      "author": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Sun Dec 15 20:59:59 2019 -0800"
      },
      "committer": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Sun Dec 15 22:31:48 2019 -0800"
      },
      "message": "Update tests for AIDL types.\n\nSince we move to AIDL and AIDL types can\u0027t be used in HIDL interfaces, we\ndeprecate all legacy dataspaces.\n\nBUG: b/130737986\nTest: build\nChange-Id: I5ecb6ba9e8003046d65aa4aa6d3eadb7ffcbbfe0\n"
    },
    {
      "commit": "1aa60c16314c3f589ab3d73a6bde3d5b88743563",
      "tree": "304b6a40babc25d058bee7cee71b216ca85417f0",
      "parents": [
        "af87114fee38f4dcf2f687b8f4b2fdcd702f72d8",
        "e71d96879951a8a36b58410250a4dfe94fd2711a"
      ],
      "author": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Sat Dec 14 03:06:24 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Dec 14 03:06:24 2019 +0000"
      },
      "message": "Merge \"Revert submission\""
    },
    {
      "commit": "e71d96879951a8a36b58410250a4dfe94fd2711a",
      "tree": "eb7541dd3d6f51141b253cbe002ddbbf04f480fe",
      "parents": [
        "b8df034c0851d794afea4ed967e768d182632e6d"
      ],
      "author": {
        "name": "Hansong Zhang",
        "email": "hsz@google.com",
        "time": "Fri Dec 13 22:03:15 2019 +0000"
      },
      "committer": {
        "name": "Hansong Zhang",
        "email": "hsz@google.com",
        "time": "Fri Dec 13 22:03:15 2019 +0000"
      },
      "message": "Revert submission\n\nBased on Forrest run with earlier base build 6069142, the build with this submission failed apct/bluetooth/instrumentation_test \n\nReason for revert: Break tests\n\nChange-Id: Ie35f3a85f02c7abb111ab15b063214c529c446fe\n"
    }
  ],
  "next": "af87114fee38f4dcf2f687b8f4b2fdcd702f72d8"
}
