)]}'
{
  "log": [
    {
      "commit": "c351d6fc5c58cbb2449692eb368f21c3ca23e36d",
      "tree": "82aed0088c6ffbf224fffe1504efb39241f3d79b",
      "parents": [
        "11dcc2207f651acf836aa611e48ce75db90258b0"
      ],
      "author": {
        "name": "Pablo Gamito",
        "email": "pablogamito@google.com",
        "time": "Thu Sep 17 15:34:26 2020 +0000"
      },
      "committer": {
        "name": "Pablo Gamito",
        "email": "pablogamito@google.com",
        "time": "Fri Oct 02 10:48:32 2020 +0000"
      },
      "message": "Remove barrierGbp_legacy from layer state\n\nBarrierGbp is no longer used, so we can remove it to make it possible to dump all LayerState data exclusively on the client side without requiring access to Surface Flinger\n\nTest: Existing tests\n\nChange-Id: Ib1465f57ff8d39d12abfe35548c0106b434d2acf\n"
    },
    {
      "commit": "11dcc2207f651acf836aa611e48ce75db90258b0",
      "tree": "ff47bdb8a7bd426b1bc9be8f37b18dddbdd47f4b",
      "parents": [
        "97651d23e882aa8cb24d1a6b45808a549474bcb6"
      ],
      "author": {
        "name": "Pablo Gamito",
        "email": "pablogamito@google.com",
        "time": "Sat Sep 12 15:49:39 2020 +0000"
      },
      "committer": {
        "name": "Pablo Gamito",
        "email": "pablogamito@google.com",
        "time": "Thu Oct 01 18:39:21 2020 +0000"
      },
      "message": "Pass surface control instead of handle as reference to layers in\nLayerState\n\nAllows us to have access to the layer id stored in surface control so that it can be dumped when tracing the transaction merges\n\nTest: Existing tests\nChange-Id: I3e466c69585937d8ce74a29a49fdbb7b3353a460\n"
    },
    {
      "commit": "e68afb4c1f03a7507853c357204a823d107232af",
      "tree": "6b03cac8733f9d5e67aa9aa6386360d64de21620",
      "parents": [
        "d94a7e0066fd352e810327e4cee18c337df383a6",
        "dbc31672ea7e7b8e8847db8ef70447de918d5b27"
      ],
      "author": {
        "name": "Pablo Gamito",
        "email": "pablogamito@google.com",
        "time": "Thu Oct 01 08:50:36 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 01 08:50:36 2020 +0000"
      },
      "message": "Merge \"Add LayerId to SurfaceControl and LayerState when created\""
    },
    {
      "commit": "6b7c5c9425496be2166fccf2ab14e061b5a20fa3",
      "tree": "9ee948766c2ebcc647b83547197d3d052bcdfc1d",
      "parents": [
        "dab9409d14d226cb784441c530666baa12968e22"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Sep 29 17:27:05 2020 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Sep 30 11:50:27 2020 -0700"
      },
      "message": "Pass in framenumbers if submitting buffers via BlastBufferQueue\n\nThe framenumber generated by the graphics producer is forwarded to mimic BufferQueue behaviour.\n\nTest: atest SurfaceViewBufferTests\nBug: 168504870\nChange-Id: Ic652a585d10d7e14c9dd94afaabd0e485e209ede\n"
    },
    {
      "commit": "dbc31672ea7e7b8e8847db8ef70447de918d5b27",
      "tree": "3384e13cede47e1920cd31dbb7c548319b638472",
      "parents": [
        "91512a00615042c9e80ec3f907339389a53a9810"
      ],
      "author": {
        "name": "Pablo Gamito",
        "email": "pablogamito@google.com",
        "time": "Tue Sep 01 18:28:58 2020 +0000"
      },
      "committer": {
        "name": "Pablo Gamito",
        "email": "pablogamito@google.com",
        "time": "Fri Sep 25 12:33:30 2020 +0000"
      },
      "message": "Add LayerId to SurfaceControl and LayerState when created\n\nAllows us to then dump the LayerState on transaction merges and have an id to associate the LayerState with a layer\n\nTest: Check if layer id is available in the LayerState when we dump the LayerState on merges\nChange-Id: I5046835d6a82574110125c7dbdf2098bd10ac296\n"
    },
    {
      "commit": "8ebfbf7bd8efa10307073c63ece6e6c1f7fbb8a3",
      "tree": "a87a3f8500623c13051e82db1b825981a46eafef",
      "parents": [
        "b9aa99a6f5473ddc1de7c9fc38696e6778259801",
        "958da9345f15e9bdef382dbd644cef6bca17ddae"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Sep 09 20:22:15 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 09 20:22:15 2020 +0000"
      },
      "message": "Merge \"Request focus using setFocusedWindow\""
    },
    {
      "commit": "958da9345f15e9bdef382dbd644cef6bca17ddae",
      "tree": "0536910955cbb5379e03ce3a7497a679c2093181",
      "parents": [
        "1b66d525436ced81193294c73886f249ffb9100c"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri Aug 21 17:12:37 2020 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Sep 08 18:41:31 2020 -0700"
      },
      "message": "Request focus using setFocusedWindow\n\nSwitch from using setInputWindow to setFocusedWindow to set the focused\nwindow for a display. setInputWindows will still handle window state\nchanges such as visibility and focusability which can take focus away\nfrom the currently focused window.\n\nThis change explicitly defines how mirrored window or windows sharing a\nwindow token handles focus. For a window to be focusable, all the\nwindows sharing its window token must be focusable and at least one of\nthe window must be visible. This different from the previous behaviour\nwhere z-order and the state of a single window determined focus via\nsetInputWindows.\n\nIn addition, if focus is requested on an invisible window, the request\nis queued up until the window becomes focus or a new request is made.\nAny key events are queued and delivered to the new window as it becomes\nfocused. This allows the system to deliver any key events to the new\nwindow between the time that the system wants to show a new window and\nthe window is ready to receive input.\n\nTest: atest inputflinger_tests\nTest: atest CtsWindowManagerDeviceTestCases\nTest: atest FlickerTests\n\nChange-Id: Id09cce42f55fb7d36a3eb0aa9d28f6a44bd1cf07\n"
    },
    {
      "commit": "79e81aa659543814a91c0cca9fb3520d73699347",
      "tree": "2051949d0682278150c8683f22c37f9e5058c168",
      "parents": [
        "14f2174cc7d1eeae005f1af8a9f38e756ae43414"
      ],
      "author": {
        "name": "arthurhung",
        "email": "arthurhung@google.com",
        "time": "Fri Aug 28 00:09:19 2020 +0800"
      },
      "committer": {
        "name": "arthurhung",
        "email": "arthurhung@google.com",
        "time": "Mon Sep 07 11:43:26 2020 +0800"
      },
      "message": "Fix SurfaceFlinger_test failed when display color mode changed\n\nThe screenshot will be used to verify if it contains the expected\ncolors in test cases. But the dataspace would depend on the color mode\nof the display. And the captured screenshot could be different to the\nnative values and cause the test failed because it check the unexpected\ncolor.\n\n- Add \u0027useRGBColorSpace\u0027 in CaptureArgs to force capture screenshot in\n  native rgb so we could use it to verify the expected color.\n- getActiveConfig will return the id instead the status, we have to\n  check the value if valid.\n\nBug: 166622214\nTest: change color mode and run atest SurfaceFlinger_test\nChange-Id: I2440e13f2ba0932b770158a11f2eab1903c77b30\n"
    },
    {
      "commit": "85bf55aecf156047edb178f3069d365a0ffd56bc",
      "tree": "07baac806ec3c877df21c6e9b4ec0e21324e70d7",
      "parents": [
        "9c53ee710ecfe4657d08ce58f1609dfb0350237d"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Aug 17 17:54:24 2020 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Tue Aug 25 11:08:34 2020 -0700"
      },
      "message": "Added ScreenCaptureListener to allow for screenshot request callbacks\n\nAdded boiler plate code to send a listener to the screenshot requests to\nallow screenshots to be async.\n\nTest: LayerStateTest\nBug: 162367424\nChange-Id: I747e7316364a145bed6a920d72a592e493ca0029\n"
    },
    {
      "commit": "308ddba68bc59234fba9a509d81cc2708d195c3a",
      "tree": "2fab97e41d9d8a371a63a7073475474d4368128e",
      "parents": [
        "e0ae0ce88f8bd0cdfbff64aaf84792f008d58164"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Tue Aug 11 16:23:51 2020 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Aug 19 18:03:18 2020 -0700"
      },
      "message": "Check status for every ISurfaceComposer Parcel\n\nAdd macro to check for the status when parceling and return the error if\nfailed. Also log the error when it occurs. Updated all callers in\nISurfaceComposer for transactions and screen capture to use the\nSAFE_PARCEL call. Also updated all parceling in LayerState.\n\nTest: Boots\nFixes: 162604027\nFixes: 162604029\nFixes: 162247502\nFixes: 162246713\nChange-Id: I30f1588a6b6d89d31a0a112681702ecf0cb5d845\n"
    },
    {
      "commit": "6ad317c0dfcf07723ee36ed33c3eb16585469f63",
      "tree": "728a95dad18752fd36d7510118ee9eca31637387",
      "parents": [
        "141959209922a15acd27ee66e1408525f541a9dc"
      ],
      "author": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Wed Jul 29 23:34:07 2020 +0200"
      },
      "committer": {
        "name": "Marin Shalamanov",
        "email": "shalamanov@google.com",
        "time": "Tue Aug 11 16:44:07 2020 +0200"
      },
      "message": "[SF, CE] Rename viewport, frame and destinationClip\n\nThis change introduces a new class ProjectionSpace and uses\nit in OutputCompositionState to describe the layer stack space,\nthe physical display space and the oriented display space.\nWe rename viewport to layerStackSpaceRect, frame to\norientedDisplaySpaceRect and destinationClip displaySpaceRect.\nThis aims to provide better readibility of the code and\nit\u0027s also consistent with SurfaceControl.setDisplayProjction\nwhere layerStackRect and displayRect are used for viewport\nand frame.\n\nBug: 161793589\nBug: 160404780\nTest: m \u0026\u0026 flash device\nTest: atest libsurfaceflinger_unittest libcompositionengine_test\nTest: adb shell dumpsys SurfaceFlinger\nChange-Id: Iee20b908157cbef4de4d9addf429f98356ec942d\n"
    },
    {
      "commit": "de7a38f44ba8397a0ce38d00ffe12518f837e7ce",
      "tree": "c8a979ee828287b5aa6dcad1e9d238f3f19cb109",
      "parents": [
        "772bb8f14c633f53dab83299516d704927f83a6d",
        "c6ad8afa768607852a1ad2c937b4687e947d6fca"
      ],
      "author": {
        "name": "Chavi Weingarten",
        "email": "chaviw@google.com",
        "time": "Mon Aug 10 18:33:24 2020 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 10 18:33:24 2020 +0000"
      },
      "message": "Merge \"Remove rotation and use flag useIdentityTransform for screenshots.\""
    },
    {
      "commit": "4b9d5e1c02dc053555497ec4c92d2e46146c53e2",
      "tree": "9892cafe8eafa85618835bae12612ddf86c92808",
      "parents": [
        "250bcbb5378ccbd5f61a6dc8cf96c3d0679ba683"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Tue Aug 04 18:30:35 2020 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Fri Aug 07 14:39:19 2020 -0700"
      },
      "message": "Allow screen capture for a specified uid.\n\nCurrently, screenshots can either be done on the entire display or for a\nlayer hierarchy. Screenshots can only be taken by a system process or a\nprocess with the correct permission. This change introduces a way for an\napp to screenshot itself without introducing security issues\n\nThe following checks are done:\n\n1. If the request is from graphics or has READ_FRAME_BUFFER permission\nflag, the request is allowed. If a uid was set to non -1, only layers\nfrom the specified uid will be captured. If uid in args is -1,\neverything will be in the screenshot, so no layers will be skipped\n\n2. If the request doesn\u0027t have the permissions, the calling uid is\ncompared to the uid in the request. If they match, we allow the\nscreenshot code to proceed and only screenshot the layers with the\nmatching uid.\n\n3. Otherwise, we return with PERMISSION_DENIED\n\nTest: ScreenCaptureTest\nBug: 155825630\n\nChange-Id: I129b5a7f489383bf6d2f0ee333a416babc1444a2\n"
    },
    {
      "commit": "c6ad8afa768607852a1ad2c937b4687e947d6fca",
      "tree": "ae0b6724af9b5c12818594c836fe3be1e606ccb8",
      "parents": [
        "63dd5e25c9ab1935199d08215f167114f1ff6f84"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Aug 03 11:33:30 2020 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Fri Aug 07 10:56:58 2020 -0700"
      },
      "message": "Remove rotation and use flag useIdentityTransform for screenshots.\n\nThere\u0027s a lot of confusing logic where 90 and 270 rotation values need\nto be flipped to ensure the screenshot is taken the correct orientation.\nThere\u0027s also confusion what useIdentityTransform means, especially if a\nnon 0 rotation value is sent.\n\nThe cases screenshot cares about is the following:\n1. Take screenshot in current display orientation\n2. Take screenshot with 0 rotation so the caller can handle rotating the\nscreenshot themselves.\n\nWith these two cases in mind, remove the rotation value passed in for\nscreenshots. If useIdentityTransform is true, it will rotate the\nscreenshot so it\u0027s in the 0 orientation. If useIdentityTransform is\nfalse, it will use the current display rotation.\n\nThis simplifies the logic in DisplayRenderArea since it only needs to\ncompute the rotation when useIdentityTransform is set. It also\nsimplifies the caller logic since they no longer have to find the\ncurrent display rotation to ensure the screenshot is taken in the\ncurrent rotation. The callers can just request the screenshot with\nuseIdentityTransform set to false.\n\nTest: adb shell screencap\nTest: Power + volume screenshot\nTest: Screen rotation\nTest: SurfaceFlinger_test\nTest: libsurfaceflinger_unittest\nFixes: 135942984\nChange-Id: I1da025c7340a11a719d4630da2469b281bddc6e9\n"
    },
    {
      "commit": "c33c441bf2093c770793437b56809b955ce449b4",
      "tree": "56446bb94c3cd56a329e274824c9add82a4e23d6",
      "parents": [
        "f4785c6db2448d671974fd749b5ad36472e17c27",
        "567239b3363f11bfdf2738e908b1f1a83c83567b"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 03 17:06:08 2020 +0000"
      },
      "committer": {
        "name": "Automerger Merge Worker",
        "email": "android-build-automerger-merge-worker@system.gserviceaccount.com",
        "time": "Mon Aug 03 17:06:08 2020 +0000"
      },
      "message": "Merge \"libgui: layer_state_t::read() check null\" into rvc-dev-plus-aosp am: 4c924bab94 am: e6f76cfafc am: 567239b336\n\nOriginal change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/native/+/12184116\n\nChange-Id: I2a35ec39c28b72c47d8baf4688ebab92e1835391\n"
    },
    {
      "commit": "4d7aceb48cc54003c680ac051a6c38949bf87806",
      "tree": "97887d5d2881f5def49efc00384603235d47e95b",
      "parents": [
        "ed1244cbb224847c0d81ace52633135609eb02d9"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jul 30 10:01:56 2020 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jul 30 10:01:56 2020 -0700"
      },
      "message": "gui: fix uses of uninitialized values\n\nClang\u0027s static analyzer complained about `ui::toRotation(rotationInt)`:\nframeworks/native/libs/gui/LayerState.cpp:544:16: warning: 1st function\ncall argument is an uninitialized value\n[clang-analyzer-core.CallAndMessage]\n\nLooks like there\u0027re a few other places in the area where we\u0027re\ndoing things with uninit bit patterns. Initializing things to 0 should\nat least make us consistent in the face of Parcel read failures.\n\nBug: None\nTest: TreeHugger\nChange-Id: I7ef2a71171b9939cb14611deea1f5b7132c54eaf\n"
    },
    {
      "commit": "618c42d4e3641651a4feea0146333806fee936a8",
      "tree": "60be6b737ac6ce381d4648aeb9cfea67a65ed9d3",
      "parents": [
        "1bd1fcfd858a463c507c35fb99255487f745101d"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Fri Jul 24 15:25:08 2020 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Jul 29 14:50:28 2020 -0700"
      },
      "message": "Added ScreenCapture args and results struct\n\nTest: LayerStateTest\nBug: 162367424\nChange-Id: I1e1cb5f896a81eea0a4da07d32456a2fb7e0a887\n"
    },
    {
      "commit": "e798b47821d07191a20bdb7a3a1fc3887b661635",
      "tree": "4ae9448cd2c57d9c2e3f2d68d007a705a028016d",
      "parents": [
        "61847ccb9126459281218b285c106f8926a2f1d6"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Jul 23 13:52:21 2020 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Jul 23 21:30:09 2020 +0000"
      },
      "message": "Add setFocusedWindow function stub\n\nThis function, once implemented, will set focus on the specified\nwindow. This is the first step in changing focus selection from\nsetInputWindows and using explicit call which will help us more\neasily decouple z-order from focus selection and support focus\nfor SurfaceViewHost surfaces.\n\nBug: 151179149\nTest: presubmit\nTest: go/wm-smoke\nTest: atest inputflinger_tests\n\nChange-Id: Ib2254b4ab3ba8d579dfe49ddf3286f8ce2eecf9e\n"
    },
    {
      "commit": "8f3da5ea8279339fe80dd060e378979736f73b42",
      "tree": "a726ea8e1f2f6002b04836e16c823463b86b700d",
      "parents": [
        "3fab51ee7064bc478ebaeadf068ceb628ca2365a"
      ],
      "author": {
        "name": "Denis Hsu",
        "email": "denis.hsu@mediatek.com",
        "time": "Wed Jul 15 09:31:21 2020 +0800"
      },
      "committer": {
        "name": "Robert Chou",
        "email": "robertchou@google.com",
        "time": "Mon Jul 20 05:33:58 2020 +0000"
      },
      "message": "libgui: layer_state_t::read() check null\n\nlayer_state_t::read() check null for color_transform\n\nBug: 161319576\nTest: boot ok\nTest: Service Fuzz\nChange-Id: I0d466a9b1d2f6b57cd5f8ddce79da3d7f0a1725a\n"
    },
    {
      "commit": "0783e99d457c9d9a3ede400bdb355ba35e828de6",
      "tree": "7796db4b8f617c73befbb2d76c79e516ee56fd93",
      "parents": [
        "8dcf124c0894e90b932ff5501892dacc37f36fad"
      ],
      "author": {
        "name": "Chris Ye",
        "email": "lzye@google.com",
        "time": "Tue Jun 02 21:34:49 2020 -0700"
      },
      "committer": {
        "name": "Chris Ye",
        "email": "lzye@google.com",
        "time": "Fri Jul 10 15:49:48 2020 -0700"
      },
      "message": "AIDL-ize InputManager IInputFlinger interface.\n\nUse AIDL interface to define the IInputFlinger interface and replace\nthe manual interface.\n\nBug:155425003\nTest: atest libgui_test, atest libinput_test.\n\nChange-Id: Ibad036b8ceb3a3f5c6d58f8de4ea8c79379d29b5\n"
    },
    {
      "commit": "6213bd900145b9189c7d87aec8a2714a66c8d057",
      "tree": "ece6beaecbdb66c70ff022b843c55837747e0589",
      "parents": [
        "58dc474b3d5fbc5a34388789bc79b39254f84d73"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri May 08 17:42:25 2020 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Fri May 08 17:44:10 2020 -0700"
      },
      "message": "Provide a fixed transform hint if the layer is in a fixed orientation 1/2\n\nThe transform hint is used to prevent allocating a buffer of a\ndifferent size when a layer is rotated. The producer can choose to\nconsume the hint and allocate the buffer with the same size.\n\nProvide the graphic producer a transform hint if the layer and its\nchildren are in an orientation different from the display\u0027s\norientation. The caller is responsible for clearing this transform\nhint if the layer is no longer in a fixed orientation.\n\nBug: 152919661\nTest: atest VulkanPreTransformTest\nTest: confirm with winscope trace, buffers are allocated taking into\naccount the transform hint in fixed orientation scenarios\nTest: go/wm-smoke\n\nChange-Id: Iea9dcf909921802a5be5c44dd61be3274f36bbd8\n"
    },
    {
      "commit": "39db0b34a86c142b5ec05e89c74be83669326d22",
      "tree": "ba0c815948d990b54ebba1297398262a3892e52f",
      "parents": [
        "34560b6d0950b54497d70a319d5496ccc0ffec10"
      ],
      "author": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Fri Mar 06 15:46:16 2020 -0800"
      },
      "committer": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Fri Mar 06 15:46:16 2020 -0800"
      },
      "message": "SurfaceControl: Remove transferTouchFocus\n\nAs it\u0027s unused.\n\nBug: 147257069\nTest: Existing tests pass\nChange-Id: I60ef95d6cd86ed28db73ebbb0d02062194f9c0e7\n"
    },
    {
      "commit": "62a4cf8c48647de3442808264005e093ab7704f0",
      "tree": "e11edbf1ffcdba13993ecde3fff1f4e4b24a1908",
      "parents": [
        "b0d738af0fe2874416cecac9eb7f931d01a12a31"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Fri Jan 31 12:04:03 2020 -0800"
      },
      "committer": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Tue Feb 18 16:49:54 2020 -0800"
      },
      "message": "Add compatibility param to setFrameRate() api\n\nAdd a compatiblity param to the setFrameRate() api, so the system has\nmore info to decide the device frame rate when there are multiple\ncompeting preferences.\n\nI also changed the plumbing for setFrameRate() to go directly to surface\nflinger, instead of through buffer queue. We\u0027re trying to avoid changes\nto buffer queue code, to avoid disturbing the prebuilts.\n\nBug: 137287430\n\nTest: Added new cts tests to verify behavior of the compatibility param.\n      cts-tradefed run commandAndExit cts-dev --module CtsGraphicsTestCases --test android.graphics.cts.SetFrameRateTest\n\nTest: /data/nativetest64/SurfaceFlinger_test/SurfaceFlinger_test --gtest_filter\u003d\u0027SetFrameRateTest.*\u0027\n\nChange-Id: Ibe75a778fb459d4138a1446c1b38b44798b56a99\n"
    },
    {
      "commit": "19c8f0e4fe37ffa86a7cbc879c23e4da2ff97e1c",
      "tree": "47645400d625fa71de468c6ef510780056da8bcf",
      "parents": [
        "fbb86a6baec5b0e91a94413a629d7a49f000d28b"
      ],
      "author": {
        "name": "Lucas Dupin",
        "email": "dupin@google.com",
        "time": "Mon Nov 25 17:55:44 2019 -0800"
      },
      "committer": {
        "name": "Lucas Dupin",
        "email": "dupin@google.com",
        "time": "Mon Jan 20 12:32:18 2020 -0800"
      },
      "message": "Add support for background blurs\n\nBug: 141640413\nFixes: 146384234\nTest: adb shell setprop debug.sf.disableBlurs 1\nTest: adb shell setprop debug.sf.gaussianBlur 0\nTest: adb shell setprop ro.surface_flinger.supports_background_blur 1\nTest: ./SurfaceFlinger_test --gtest_filter\u003dLayer*Tests/Layer*Test.SetBackgroundBlur*\nTest: ./librenderengine_test --gtest_filter\u003d*BlurBackground*\"\nTest: atest SurfaceFlinger_test:SurfaceInterceptorTest#InterceptBackgroundBlurRadiusUpdateWorks\nChange-Id: I5194c910fe7062f33e70943867012539e6c6626a\n"
    },
    {
      "commit": "3172e2028b191ed485385f02a443b1f9b0d730f9",
      "tree": "d966fcda885b7188cb8b03973e8d6398e03fdaf8",
      "parents": [
        "92bd250eda0de9b0d3d966f285a8a75fcfd85149"
      ],
      "author": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Mon Jan 06 19:25:30 2020 -0800"
      },
      "committer": {
        "name": "Steven Thomas",
        "email": "steventhomas@google.com",
        "time": "Thu Jan 16 14:24:13 2020 -0800"
      },
      "message": "Add plumbing for upcoming setFrameRate() api\n\nAdd plumbing from the app to surface flinger for the\nANativeWindow_setFrameRate() and ASurfaceTransaction_setFrameRate() api\ncalls we\u0027ll be adding soon.\n\nWe don\u0027t do anything in surface flinger with this data yet.\n\nBug: 143912624\n\nTest: Added a new test, SetFrameRateTest.\nChange-Id: I1cab87f3ce5afca4591a39d8e7a42cb1e86a368f\n"
    },
    {
      "commit": "c84d09b6464242b1809ffb4f7faa5b2632f4a5e0",
      "tree": "2657b5eedbf4251670addfc6576c470675fb57f6",
      "parents": [
        "b168232839544cc033bb98e18d3e478afb5ea929"
      ],
      "author": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Sat Nov 02 23:10:29 2019 +0100"
      },
      "committer": {
        "name": "Ana Krulec",
        "email": "akrulec@google.com",
        "time": "Wed Jan 15 16:36:19 2020 -0800"
      },
      "message": "SF Generalization of Refresh Rates: Adding layer priority hint\n\nTest: Device boots. Observe logs for errors.\nTest: Open Swappy and Chrome in split screen, tap between apps,\n      SF prints the correct priority.\nTest: Open Chrome, play video. SF prints correct priority.\nTest: SF prints the correct priority received.\nBug: 142507166\nChange-Id: I5fa8a857c950db01f42a380a72d098039badc289\n"
    },
    {
      "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": "440992f66c76322228c6817190839bb56e9a8845",
      "tree": "dd20deb8e032ea1e9c3b47013803bd5fb0fce05f",
      "parents": [
        "0d4bd95f746fe21e2a24b1e66d2215acc130e136"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Mon Dec 09 19:53:19 2019 -0800"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Dec 10 09:04:08 2019 -0800"
      },
      "message": "[Shadows] Add support for shadow attributes (7/n)\n\nThere are two types of shadows that need to be drawn, spot and ambient shadows. Each shadow\ncan support different colors. The GL code generates three vertex attributes for each shadow,\nits position, color and shadow params(offset and distance). These can be sent using a single\nglDrawElements call.\n\nIn order to support this, this change:\n- adds a builder to Mesh class to support mixing and matching gl attributes\n- adds support to offset VertexArrays so we can attributes for multiple\n  shadows to one array\n- modifies drawLayers to support drawing shadows (actual draw shadow code\n  will be in a follow up cl)\n- adds draw shadow state to render engine\n\nBug: 136561771\nTest: go/wm-smoke\nTest: atest librenderengine_test libgui_test SurfaceFlinger_test\n\nChange-Id: I2e70c3dbba3266e44896d5b25e45640defe6353b\n"
    },
    {
      "commit": "c97b8dbd9093c7a8cfeedcd7e417f6732cbe24c6",
      "tree": "1851287287ac16f9c978542ca0ef08793a6a2a50",
      "parents": [
        "7b3a312f385e1fc8c3694ffeafc18794e96a95f1"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Oct 29 18:19:35 2019 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Oct 30 01:20:41 2019 +0000"
      },
      "message": "[Shadows] Add shadow radius to sf layer state (2/n)\n\nBug: 136561771\nTest: atest SurfaceFlinger_Test\nChange-Id: Icafe852eaad195163b48b802db2a4b092aa30926\n"
    },
    {
      "commit": "9dab9730c009b8f45b671c48c7c3fa0915298803",
      "tree": "5ebd9dffdd1e0c5d908df674b327ad3fe9329fa8",
      "parents": [
        "dd3d02688d5656c565b453917fde4a13e3f368ea"
      ],
      "author": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Tue Aug 20 09:29:25 2019 -0700"
      },
      "committer": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Thu Sep 19 19:19:34 2019 +0000"
      },
      "message": "Only send surfaces to Listener that registered or applied transaction\n\nWe must not leak surface controls to processes that shouldn\u0027t know about\nthem.  With this change, we limit the listeners that receive a callback\nfor a surface control to those that 1) registered the surface control\nfor callback or 2) received and merged a transaction containing that surface\ncontrol to apply\n\nBug: 139439952\nTest: build, boot, IPC_test, SurfaceFlinger_test, libsurfaceflinger_unittest\n\nChange-Id: I4eccc3e72d60729c2f3aa7788db0c5c39fbf46b7\n"
    },
    {
      "commit": "214c89db99f280cd67ca14357c9ee11adce0acce",
      "tree": "423747cf1c58d5bb4c30e38c0b3af23c4ff1a78d",
      "parents": [
        "1a69fc00908a00bbcd182d362248c8ba71f8c620"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Sep 04 16:03:53 2019 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Sep 04 16:30:54 2019 -0700"
      },
      "message": "Remove setGeometryAppliesWithResize\n\nThis function is no longer used so removing the API and any logic\nimplemented for it.\n\nTest: go/wm-smoke\nChange-Id: I4ae2128cd38e818fcd16dafa4ce47c9411bd61c9\n"
    },
    {
      "commit": "26300b4d89c5fc8a3bd17be37d84f71890271f93",
      "tree": "03fe3620d4ade296fc781df50964238e2d43acb7",
      "parents": [
        "42e353bc6f15ad9822fcc236ae3a58d811d83a29",
        "f03652dd9df88182518a7046cf542076ea10d5ea"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 26 18:16:37 2019 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 26 18:16:37 2019 +0000"
      },
      "message": "Merge \"Store layer state changes by layer handle in Transaction objects\""
    },
    {
      "commit": "8ac66cd2751394153c9f7e6dc1af34eae07d28a1",
      "tree": "8f5d873fd786f4692b1c1d1d31e98638cdb4dd7e",
      "parents": [
        "01bb2a0b0a7dc929d3bb0cb2fc9055a1cef52b88",
        "4c23f400c26a6a59c142049b821719fc9c8a9058"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu Jul 18 19:10:10 2019 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 18 19:10:10 2019 -0700"
      },
      "message": "Merge \"libgui: use read/writeStrongBinder\" into stage-aosp-master am: 8c58b5afe3 am: c253e3a3f0\nam: 4c23f400c2\n\nChange-Id: I380e7dff8b0fb885cffa3d2e47af5b8d6802b7db\n"
    },
    {
      "commit": "9d4ce9b922321a839dc89667e80dc8813c0e1364",
      "tree": "4677beeba332068231e85969c06ee8209008c465",
      "parents": [
        "94f6b2158dc066e41b351d0d0c1142e397d3acbb"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Wed Jul 17 15:23:38 2019 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Thu Jul 18 21:06:27 2019 +0000"
      },
      "message": "libgui: use read/writeStrongBinder\n\nStill storing binder locally as a weak binder, but the plan is to remove\nread/writeWeakBinder APIs. This is because weak binders can\u0027t be\npromoted unless there is already a strong binder in a given process.\n\nBug: 137785053\nTest: atest libgui_test (fails at same place as ToT: b/137791481)\nTest: atest SurfaceFlinger_test (fails at same places as ToT: b/137875576)\nChange-Id: I2d01aab95c4bd2e6db5e50055910cfa3064d9e52\n"
    },
    {
      "commit": "f03652dd9df88182518a7046cf542076ea10d5ea",
      "tree": "1edaec1dbfdbd35a0ad4294ae00c1f00488e39c7",
      "parents": [
        "f9f627bf75a0507d760997d417c0b9d9ae2d5a7f"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Jul 16 17:56:56 2019 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Jul 16 17:57:54 2019 -0700"
      },
      "message": "Store layer state changes by layer handle in Transaction objects\n\nLayer state changes are stored in an unordered map with the surface control as the key\nand state changes as the value. This causes a few problems when merging the transactions. If\ntransactions contained state changes from a cloned surface control then it will not be merged.\nThis will cause ordering issues when the transaction is applied since the changes are stored in\nand unordered map.\n\nWhen parcelling transactions, a new surface control is created from the existing one and this\nsurfaces the problem more frequently.\n\nInstead we store the layer changes by the layer handle which is consistent across processes.\n\nTest: atest SurfaceFlinger_test\nTest: go/wm-smoke\n\nChange-Id: I2e041d70ae24db2c1f26ada003532ad97f667167\n"
    },
    {
      "commit": "996bc421ea90965e384c947f5a68394afb95bd88",
      "tree": "b78cf2c9e96ef4b89a2e8d4a7f98cd0d39eccf1b",
      "parents": [
        "f9f627bf75a0507d760997d417c0b9d9ae2d5a7f"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Jul 16 14:15:33 2019 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Tue Jul 16 14:15:33 2019 -0700"
      },
      "message": "Properly merge flags when merging transactions\n\nTest: atest SurfaceFlinger_test\n\nChange-Id: Ib1446c5afe00fd2588f7682f33cbbc6d6eb6a1ea\n"
    },
    {
      "commit": "3237758d5790d0f6ab8e8a2bffe4d9df869aae83",
      "tree": "cbe36e8b2c98cd85294c64da2cff94274a638220",
      "parents": [
        "6dec1db01247a00564e433ac2ff904e3d0ccac2c"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon May 13 11:15:19 2019 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon May 13 17:02:13 2019 -0700"
      },
      "message": "Don\u0027t allow both setRelative and setLayer for the same surface.\n\nBoth setRelativeLayer and setLayer are used to set z order. The two will\nconflict if set on the same transaction for the same surface.\nSurfaceFlinger will just apply setRelativeLayer since it\u0027s second in the\nsetClientState order. Instead, the code should only apply the\ntransaction that was requested last. This change removes the\nsetRelativeLayer flag if the setLayer flag is added and vice-versa.\n\nFixes: 131834423\nTest: Steps from bug\nTest: LayerTypeTransactionTest.SetLayerAndRelative\nChange-Id: Ib14aa5c666e74455e5ccb26a0fea94699bcc5771\n"
    },
    {
      "commit": "947d34ecad84bdaf496748eeb9f6e35b33deb339",
      "tree": "29f668d1d193b97ab93d74b0d4cdc7b0bd239c3f",
      "parents": [
        "1688f5246f156e815bd7b07ba7d5c39cc821e8d6"
      ],
      "author": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Fri Mar 29 14:03:53 2019 -0700"
      },
      "committer": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Tue Apr 16 15:39:28 2019 -0700"
      },
      "message": "Change slot generation for BufferState\n\nBufferState layers now do slot generation with buffer death considered\nappropriately.  When a buffer dies, the slot will be pushed onto a stack\nof available slots to be reused at the next opportunity.  This should\nmimic BufferQueue slot behavior and prevent Composer Resources from\ngrowing too large.\n\nTest: build, boot, manual\nBug: 129351223\n\nChange-Id: Icef9592593cacb0b5c6b12f6679fc2c4dabdcd19\n"
    },
    {
      "commit": "3dad52d38519ef4ad6d13095a8fa756bb736ae85",
      "tree": "6f95afff00b98cfd8d2ab0f9fbc708dca3525429",
      "parents": [
        "78b7220f542826771223f9b5c0b876874dd398d2"
      ],
      "author": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Fri Mar 22 14:03:19 2019 -0700"
      },
      "committer": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Wed Mar 27 09:32:42 2019 -0700"
      },
      "message": "blast: transaction callbacks should come in order\n\nPreviously, if no SurfaceControls where marked to get callbacks,\na callback was sent directly from SurfaceComposerClient so we could\nsave a binder call into SurfaceFlinger and a binder call for the\ncallback.\n\nAlthough this saved us 2 binder calls, it made the transactions\ncallbacks come out of order. The public api guarantees that all\ncallbacks must come in order.\n\nThis patch moves the callback from SurfaceComposerClient into\nSurfaceFlinger so the callbacks are in order.\n\nBug: 128519264\nTest: SurfaceFlinger_test\nChange-Id: Ia1cadb81adb69b58a4d6d43ae453c96a1572f833\n"
    },
    {
      "commit": "78b7220f542826771223f9b5c0b876874dd398d2",
      "tree": "ad06c575e7f760c4d4b79448cd69026d8cffe6e8",
      "parents": [
        "4c6f904ffde2795886477f6de54edcae5d036e68"
      ],
      "author": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Fri Mar 15 14:58:34 2019 -0700"
      },
      "committer": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Fri Mar 22 14:13:10 2019 -0700"
      },
      "message": "blast: drop buffer from SF\u0027s cache when destroyed\n\nWhen an app drops its reference to an AHardwareBuffer, the buffer\nshould be removed from the client and SurfaceFlinger caches.\n\nIdeally, both caches would have wp to the buffer and the buffer\nwould automatically be removed from the cache.\n\nUnfortunately, GraphicBuffers are refcounted per process. If SurfaceFlinger\njust has a wp to the GraphicBuffer, the buffer\u0027s destructor will\nbe called and SurfaceFlinger will lose access to the buffer.\nSurfaceFlinger can\u0027t just hold onto a sp to the buffer because\nthen the buffer wouldn\u0027t be destoryed when the app drops its reference.\n\nInstead, when the app process drops its last strong reference,\nGraphicBuffer will send a callback to the client side cache.\nThe cache will send a Transaction to SurfaceFlinger to drop its sp\nto the buffer.\n\nBug: 127689853\nTest: SurfaceFlinger_test\n\nChange-Id: I2182578ed33d7c731945cb88cd1decb2892266b0\n"
    },
    {
      "commit": "c502cb751508dd2008ee5e0601d4aae31cbaf6ca",
      "tree": "3178c4ae249d49189a8e731aafed509ac8d49331",
      "parents": [
        "cb20ccaa611fbde0fcbade5a0b667d183c405b4f"
      ],
      "author": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Fri Mar 01 15:00:23 2019 -0800"
      },
      "committer": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Mon Mar 04 10:47:53 2019 -0800"
      },
      "message": "[SurfaceFlinger] Add setColorSpaceAgnostic API.\n\nSome layers, for example ScreenDecorOverlay*, only carry black, white or gray\nwith some transpanrency, these values are special as they are color space\nagnostic. We don\u0027t need to do color conversion on them, instead we want to\nintercept the color space before we send to hardware composer for validation.\nThis patch adds an API to allow this to happen.\n\nBUG: 126616348\nTest: Build, flash and boot. Verify by calling in Letterbox.\nChange-Id: I62c9bf4feb320b466584a90df707c2b04213339c\n"
    },
    {
      "commit": "a911b104d65c8e9bf9258f243e0af4ce51ffcaa5",
      "tree": "d9c8841c2edc5a9bede33c963e1e59726c22f664",
      "parents": [
        "5f21a5e4171a298e6b12131bf32743d8de095f10"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Feb 14 10:18:33 2019 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Fri Feb 15 14:56:18 2019 -0800"
      },
      "message": "Add synchronous transaction to wait for setInputWindow to complete (2/n)\n\nAdded InputWindowCommand syncInputWindows\n\nThis will allow the client to request SF to wait until setInputWindow\nhas completed on the InputDispatcher side.\n\nBug: 123041491\nTest: Builds, no execution yet\nChange-Id: Ibb5539455d20e4d612696ae7164ce84130bf91b4\n"
    },
    {
      "commit": "dd0b757b259f66b39793bcdf6b1ed80d099ce4b2",
      "tree": "ba4057b2de8194ebe5b901d33e34716a874b18b4",
      "parents": [
        "3b7f2022cd288f9bfcb2ba8f775eef6caca92dad"
      ],
      "author": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Tue Jan 29 14:59:27 2019 -0800"
      },
      "committer": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Fri Feb 01 16:28:11 2019 -0800"
      },
      "message": "Combining background color related transactions/functions\n\nBug:122326454\nTest: build, boot, SurfaceFlinger_test, ASurfaceControlTest cts test\nChange-Id: I7ec9f2214c7422ab90ab56dd84daafd5b0bf720a\n"
    },
    {
      "commit": "1f6d6d5db93ef4c3bbaeb5241eede30635fa5ff1",
      "tree": "cc086700fc2736de362636bfc5f918f947fa06bd",
      "parents": [
        "57ba2f1942f1fae1bd195b8c0f7fda8adbf9c41e"
      ],
      "author": {
        "name": "Evan Rosky",
        "email": "erosky@google.com",
        "time": "Thu Dec 06 10:47:26 2018 -0800"
      },
      "committer": {
        "name": "Evan Rosky",
        "email": "erosky@google.com",
        "time": "Fri Jan 25 09:26:29 2019 -0800"
      },
      "message": "Add metadata store to surfaces\n\nThis adds a key/value metadata storage mechanism to\nsurfaces that allows the windowmanager to pass information\nto the surfaceflinger frontend.\n\nThis then moves the existing metadata (window type and\nownerUID) into this metadata structure.\n\nBug: 122925737\nTest: Phone boots and surfaces fling. Some unittests\nChange-Id: I72c574737b7f75be2311a341812b15d385f507ed\n"
    },
    {
      "commit": "ed54efa6e3d6b1403d07e0b68e0e741ec4d26cc4",
      "tree": "0807c81407557ad04a86c9dd59e3de0ab9f90cbd",
      "parents": [
        "57d7b5f37d6f5f94385e674fc27dcca4a9579499"
      ],
      "author": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Fri Jan 11 20:03:14 2019 -0800"
      },
      "committer": {
        "name": "Valerie Hau",
        "email": "vhau@google.com",
        "time": "Wed Jan 23 13:42:58 2019 -0800"
      },
      "message": "Add Color Layer to ASurfaceControl\n\nBug:122326454\nTest: atest CtsViewTestCases:android.view.cts.ASurfaceControlTests\nChange-Id: Ib05ad70d838c79aa6f2e309217b93906c950b6fa\n"
    },
    {
      "commit": "ebc2c059e73d3278e07c461b3f4e844a47019c3d",
      "tree": "f9227c07969733bcd6e1da15be5e00b9f7d3c77c",
      "parents": [
        "17b4e4570fed99881a94730b9ad67b590aa426b9"
      ],
      "author": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Wed Jan 16 19:16:55 2019 -0800"
      },
      "committer": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Thu Jan 17 18:47:19 2019 -0800"
      },
      "message": "blast: cache buffers\n\nCache incoming buffers so they don\u0027t have to be imported by mapper\neverytime they are set.\n\nAmended by Change-Id: I3040f6d8886ca9b130115784c199edfdd9c85c7e\n\nTest: Transaction_test\nBug: 80477568\nChange-Id: Icd167c5e5bd59d7331b829667b1139919393d98b\n"
    },
    {
      "commit": "273171bd098028d12ee8d1209bb72a090bb66f2e",
      "tree": "f2a9d6972379d4240f8cb471930580ba77a52b2a",
      "parents": [
        "7b2e64b9e4a7b143f7b29bc5a8c0334f3741bbd9"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Dec 26 11:46:30 2018 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Jan 03 14:11:11 2019 -0800"
      },
      "message": "Fix drag and drop (1/3)\n\nAdded ability to send different InputWindowCommands to SurfaceFlinger. Also\nadded transferTouchFocus function from client so it can be translated to an\nInputWindowCommand and passed to SF.\n\nBug: 120463595\nTest: Builds, no uses of new function\nChange-Id: I17deaf4a96d5a5bf6b14795d66419acffdb10882\n"
    },
    {
      "commit": "861616dff990d85dbf5624c59868c94e4ac00d9a",
      "tree": "b49ff01920d192120eb60aa30c2b8cd6888b896b",
      "parents": [
        "8a3083eecacc46eafba56ad416dee026c5dddff4"
      ],
      "author": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Mon Oct 22 12:52:23 2018 -0700"
      },
      "committer": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Tue Dec 04 15:36:04 2018 -0800"
      },
      "message": "blast: use frame instead of size and position\n\nBufferStateLayers will have a source crop rect and destination\nframe rect. The crop is the portion of the buffer that should be\ndisplayed. The frame is where that portion of the buffer should\nbe displayed. The portion of the cropped buffer is scaled to fit\nthe frame.\n\nShader provided by romainguy@google.com.\n\nTest: Transaction_test\nBug: 80477568\n\nChange-Id: Ied3f3af2211132f79098aeb986292ee705a62219\n"
    },
    {
      "commit": "8a3083eecacc46eafba56ad416dee026c5dddff4",
      "tree": "882227343d1f7f2c65769f9407fe894f6547eae6",
      "parents": [
        "face176394e0a28bd7b7b8bed13b4696e79668a2"
      ],
      "author": {
        "name": "Garfield Tan",
        "email": "xutan@google.com",
        "time": "Mon Dec 03 13:21:07 2018 -0800"
      },
      "committer": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Tue Dec 04 13:01:45 2018 -0800"
      },
      "message": "Change what in layer_state_t to 64 bit.\n\nWe finally reached the edge of 32 bit enum for it in ag/5659622.\n\nBug: None\nTest: Builds.\nChange-Id: If2bab78980caf061f100ed7d75d112882b9e0133\n"
    },
    {
      "commit": "1b6531ccf5dab13a6817c7519693df220d0944a1",
      "tree": "2873750c9ee97e4bf11d557997bfe27137e16040",
      "parents": [
        "49109214fec02f0734cbfee3c58f6974b0c694b2"
      ],
      "author": {
        "name": "Lucas Dupin",
        "email": "dupin@google.com",
        "time": "Thu Jul 05 17:18:21 2018 -0700"
      },
      "committer": {
        "name": "Lucas Dupin",
        "email": "dupin@google.com",
        "time": "Sun Dec 02 09:27:05 2018 -0800"
      },
      "message": "Rounded corners\n\nTest: visual\nTest: /data/nativetest64/SurfaceFlinger_test/SurfaceFlinger_test\nFixes: 111514493\nChange-Id: Ie8f400bbcea3e9653295ea7b75c7eef568fd76c4\n"
    },
    {
      "commit": "2c358bf8206d591a4707d33fd2ca45f0dc5360f7",
      "tree": "302e722c58b4f30db625dfe0fd1e2f2f04ab2661",
      "parents": [
        "7b0e9118785103c763042e56642e1234935e1e58"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Aug 08 15:58:15 2018 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Nov 14 17:47:09 2018 -0800"
      },
      "message": "Add setInputWindowInfo to SurfaceComposerClient::Transaction\n\nIn preparation for passing input through SurfaceFlinger to the InputDispatcher.\n\nBug: 80101428\nBug: 113136004\nBug: 111440400\nChange-Id: I5f67fbb9894136bfb16c718ffe1cc23a02f3414d\n"
    },
    {
      "commit": "c837b5ecc406f6bf6e5424d48435b56decbd903e",
      "tree": "05f2aa293b43084bd9d310203c7ac46a9d138a11",
      "parents": [
        "7a9b6ff7ce374ecf49990ee2496130c75a37f7fd"
      ],
      "author": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Fri Oct 12 10:04:44 2018 -0700"
      },
      "committer": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Fri Nov 09 12:55:25 2018 -0800"
      },
      "message": "blast: Send transaction listener from SCC to SF\n\nSend the TransactionCompletedListeners to SurfaceFlinger via transactions.\nThe listener will be used to send callbacks after a transaction has completed.\n\nTest: Transaction_test\nBug: 80477568\n\nChange-Id: I51d3877f2803a192f95db4dd211f48aca9651c30\n"
    },
    {
      "commit": "d3788632cfc226386f7c7e30612ed2584b6ecb46",
      "tree": "5bbaf8841bf31e049180e6dd26262055e512febd",
      "parents": [
        "48de54237ee300ae04c15c07a9dbdd93e746b068"
      ],
      "author": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Tue Sep 18 16:01:31 2018 -0700"
      },
      "committer": {
        "name": "Peiyong Lin",
        "email": "lpy@google.com",
        "time": "Fri Sep 28 13:20:37 2018 -0700"
      },
      "message": "[SurfaceFlinger] Implement per layer color transformation.\n\nPreviously we introduced a new composer HAL API to set color transform for per\nlayer and added the plumbing in SurfaceFlinger. This patch implements the\nfunctionality and alwasy mark those layers to fall back to GPU composition\nuntil composer 2.3 is implemented.\n\nBUG: 111562338\nTest: Build, boot, flash, tested by setting a greyscale matrix on Settings\nTest: adb shell /data/nativetest/SurfaceFlinger_test/SurfaceFlinger_test\nChange-Id: If8d5ed52bf920d8cc962602196fb1b0b6e2955da\n"
    },
    {
      "commit": "217d8e69dcdb217b331fa46e3650924e774a5ac7",
      "tree": "c257c76a95f695965f7b7add71e78ff8de17ee88",
      "parents": [
        "f7c32f3f5caa6a2aee3ad70b794de8a804ebaed9"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Sep 12 16:34:49 2018 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Sep 12 16:34:49 2018 -0700"
      },
      "message": "SF: Fix incorrect LayerState logs\n\nBug: 115559277\nTest: logcat\nChange-Id: If924c60298a0d8fc433d45cdb71d229b57227385\n"
    },
    {
      "commit": "dcce0e2462c9bd0b6ac0db3f95c43cd2b9222eb2",
      "tree": "961fb7b53328565838643079261198842cd64ba4",
      "parents": [
        "27fcf48f147007f78cf70e57b7a4d495519c674e"
      ],
      "author": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Thu Aug 23 08:35:19 2018 -0700"
      },
      "committer": {
        "name": "Vishnu Nair",
        "email": "vishnun@google.com",
        "time": "Wed Aug 29 08:40:11 2018 -0700"
      },
      "message": "SF: Remove setFinalCrop impl 2/2\n\nsetFinalCrop functionality is reimplemented by creating a new bounds layer\nand applying a crop on this layer. see ag/4625718\n\nTest: mmma frameworks/native/services/surfaceflinger/tests/ \u0026\u0026 \\\nmmma frameworks/native/libs/gui/tests/ \u0026\u0026 adb sync data \u0026\u0026 \\\nadb shell /data/nativetest64/libgui_test/libgui_test \u0026\u0026 \\\nadb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest \u0026\u0026 \\\nadb shell /data/nativetest64/SurfaceFlinger_test/SurfaceFlinger_test \u0026\u0026 \\\nadb shell /data/nativetest64/SurfaceParcelable_test/SurfaceParcelable_test \u0026\u0026 \\\nadb shell /data/nativetest64/sffakehwc_test/sffakehwc_test \u0026\u0026 \\\necho \"ALL TESTS PASSED\"\n\nChange-Id: I9be511c07a3351a2947afb2beed10ce2a462b635\n"
    },
    {
      "commit": "d314f169d79d8a3b1de4289190c3f420188426f6",
      "tree": "ab266d1c47bbf1be243e2c4c1f613e85dfae77f3",
      "parents": [
        "38f38f388cea1a751e967970742e5479a8d807e5"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Aug 15 13:12:42 2018 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Aug 27 18:14:20 2018 -0700"
      },
      "message": "Safe-guard Transaction::merge against programmer error.\n\nWe can warn on unmerged properties ensuring that this function\nis updated when new properties are added.\n\nTest: None.\nChange-Id: I718b0e73e8fb5543360ec82a6f0645eb8be8a25c\n"
    },
    {
      "commit": "61c58627dd748baa699bab62e80a7972f2030f60",
      "tree": "b3220d29d8234662339ba731eb96ad4cc6844480",
      "parents": [
        "f58c14b3d51f2face21c9759149b5c9412bcafd5"
      ],
      "author": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Wed Jul 18 10:12:20 2018 -0700"
      },
      "committer": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Mon Jul 30 16:53:46 2018 -0700"
      },
      "message": "blast: BufferStateLayer\n\nAdds the initial foundation for supporting buffers on\ntransactions as well as the other metadata that had been passed\nover BufferQueue.\n\nBug: 80477568\nTest: Transaction_test.cpp\nChange-Id: I61e44462c66c1a912adbabf62015e66bde44c216\n"
    },
    {
      "commit": "f58c14b3d51f2face21c9759149b5c9412bcafd5",
      "tree": "91fd63a647168ca80cf1a977ff655508063ff6fa",
      "parents": [
        "1130324c576072ce9b3c068ce803b6b3f4559587"
      ],
      "author": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Tue Jul 24 10:50:43 2018 -0700"
      },
      "committer": {
        "name": "Marissa Wall",
        "email": "marissaw@google.com",
        "time": "Mon Jul 30 15:45:07 2018 -0700"
      },
      "message": "blast: Append \"_legacy\" to old buffer state values\n\nAs we move from BufferQueueLayer to BufferStateLayer, some\nlayer state fields are used by both layer types and some\nare used exclusively by one type of layer. Append \"_legacy\"\nto all fields that are NOT used by BufferStateLayer.\n\nBug: 80477568\nTest: Transaction_test.cpp\nChange-Id: Id8bf27f5b68c00592136e4336442a5d388f35779\n"
    },
    {
      "commit": "ca27f2500cff74ae1e08b3ae06f18e9b3414ffb7",
      "tree": "e98990b6977ea6fa7ae3b5e5683da4922c492901",
      "parents": [
        "e9e63913379f9cea3e090ebf398514f437e5d525"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Tue Feb 06 16:46:39 2018 -0800"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Tue Feb 13 16:30:10 2018 -0800"
      },
      "message": "Allow destroySurface to get called in transaction.\n\nPreviously, destroy was always initiated immediatley and could not be\nsynchronized with a client transaction. This change allows\ndestroySurface to be called in the same transaction as other client\nstate updates.\n\nTest: Unit tests pass\nTest: Call from Java fixes bugs.\nChange-Id: I841359530538961a0187216cc455cc388c0ede77\nFixes: 72953020\nFixes: 71499373\n"
    },
    {
      "commit": "2c5f6d2257075c8b5ced78b07ed8b2c2323f0df2",
      "tree": "807a15f1ccabd59c0fb94d770da0332f8f6304be",
      "parents": [
        "026bb7e036acdeb32e2a1d6bcd90f7031299aee5"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Tue Sep 26 12:30:35 2017 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Oct 30 17:02:27 2017 -0700"
      },
      "message": "SurfaceFlinger: Implement merging of transaction objects.\n\nUseful for WindowManager to collect multiple transactions\nfrom independent units.\n\nTest: Transaction_test.cpp\nChange-Id: I52e89b038e3b375493169991e41cb75b67550264\n"
    },
    {
      "commit": "4cdc58f6840d15b4952149d2b345ec1f97d505bc",
      "tree": "33427f28bf11a635036f582ac94384ac57ce7fcf",
      "parents": [
        "049c1147a12684a6f95c6d8b326dc29208908d14"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Aug 23 14:22:20 2017 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Oct 11 14:31:20 2017 -0700"
      },
      "message": "SurfaceFlinger Transactions as distinct objects.\n\nEssentially a process global singleton for transactions is not so useful once\nwe make surface control public API as process isn\u0027t something an app developer\nis really thinking about. It\u0027s also nice that we get to delete two of the plumbing layers.\n\nTest: Boots\nChange-Id: I8864bd7e2f5865e3c0a425cf82f9928211911774\n"
    },
    {
      "commit": "13fdc49516d17f41e64e62e73c313b0928bf13cc",
      "tree": "556fefa10d7612c1577cacf0d954715829b791a2",
      "parents": [
        "dda5d5d7914297adb42e251e8aadaece4dc3e65a"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Tue Jun 27 12:40:18 2017 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Sep 21 18:10:21 2017 -0700"
      },
      "message": "Added native functionality to create a color layer.\n\nAdded a new layer that can draw a specified color and specified\nalpha. This will replace creating a dim layer and allow any colors,\nnot just black, to be set for this layer.\n\nTest: Added tests to Transaction_test.cpp to test with a color\n      and a color layer with alpha.\n\nChange-Id: I00a38d1bbc01093026f088c3347454281bdc2b8c\n"
    },
    {
      "commit": "f1961f713de2b3f54c8ce7653964b969e1a02bc8",
      "tree": "00c1a633c54b33a445f8b498f11848ff03d07c0b",
      "parents": [
        "931dc01ad7c2d3eb1de276a7174cd55928d463aa"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Mon Sep 18 16:41:07 2017 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Sep 20 11:52:37 2017 -0700"
      },
      "message": "Re-parent invoked on child instead of on parent.\n\nThe function to re-parent an individual child is now invoked on\nthe child instead of the parent. This ensures the child ends up with\nthe last parent set if multiple reparent requests are made in the same\ntransaction.\nThis also allows adding a parent to a layer that didn\u0027t have one\npreviously.\n\nTest: Transaction_test -\u003e Reparent, ReparentToNoParent,\nReparentFromNoParent\n\nChange-Id: Idab429eb2dca5a4ae1b020a5a7629d719dd4d995\n"
    },
    {
      "commit": "0617894190ea0c3ee50889bee1d4df0f369b0761",
      "tree": "77cd6f74a747fa53216f7b55899030a45c35910a",
      "parents": [
        "4908fe5617855aace933ad25b1071170e2606688"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu Jul 27 10:25:59 2017 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Wed Aug 23 11:28:02 2017 -0700"
      },
      "message": "Add a re-parent function to re-parent a specific child.\n\nThis is similar to reparentChildren, but the reparentChild will\nonly re-parent a specific child to the new parent and not all\nchildren.\n\nTest: Added test in Transaction_test for reparentChild.\n\nChange-Id: I4275e0d5f1d5601b489956753c78a56d1a5d4c1c\n"
    },
    {
      "commit": "db66e627ad8904491e384c64f82fc77a939b9705",
      "tree": "28bde44d8ef5a51448b544b511539a41ba336828",
      "parents": [
        "1d472756aa06f17c34020c35d2f2a598dce69bfb"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Apr 10 16:55:57 2017 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Apr 12 12:48:05 2017 -0700"
      },
      "message": "SurfaceFlinger: Add parent-less relative layering.\n\nThis is a temporary functionality for the intermediate state where not\nall child-surface like things in WM land are ported to use Child\nSurfaces. In particular, we have ported SurfaceView to use child\nsurfaces and relative Z ordering. However the TV frameworks provide a\nView framework component which overlays views over the SurfaceView but\nbelow the main application window. Since we have not ported View\nframework surfaces to use child layers, there is nothing the WM or\nView Framework can do about this situation. Luckily the WM API\u0027s to\nhave requested this are @hide but we have the one media framework\ncomponent using it. In order to solve this issue we provide a method\nto set Z ordering relative to another window without inheriting\nits coordinate space as a child window would. This way the WM can\nrecognize these TYPE_APPLICATION_MEDIA_OVERLAY windows and Z-order\nthem at -1 with respect to the parents (and the SurfaceView can be at\n-2).\n\nTest: Included in transaction tests. Also manual test of bug repro steps with accomp frameworks/base CL\nBug: 36693738\nChange-Id: I921852d3d34f67f79ec745b9703f9e679867e7a1\n"
    },
    {
      "commit": "0d48072f6047140119ff194c1194ce402fca2c0b",
      "tree": "3db72861fcac7b9a1622d3f7d75d54bcba2e22b3",
      "parents": [
        "e7f1979d8180ff9ab10422da2020e77fafe8d7d6"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Tue Jan 10 16:42:54 2017 -0800"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Feb 27 10:20:10 2017 -0800"
      },
      "message": "Add deferTransaction variant taking GraphicBufferProducer.\n\nFor SurfaceView using child layers, the client framework\nwill not have access to the Handle* for the parent surface,\nbut still needs a way to defer transactions to it\u0027s frames.\n\nTest: Tested with corresponding SurfaceView modifications and existing tests.\nChange-Id: I6f01c360e85a95ff0ab08db406741221152e5d5c\n"
    },
    {
      "commit": "479c60c85c40fd3536b0c88036e838dc1a4c56a0",
      "tree": "9f6034273a86390db5b39f7a2e221dc23a51b9ad",
      "parents": [
        "27c5ac029619efe630a258aae92e2c496733c677"
      ],
      "author": {
        "name": "Albert Chaulk",
        "email": "achaulk@google.com",
        "time": "Fri Jan 27 14:21:34 2017 -0500"
      },
      "committer": {
        "name": "Alex Sakhartchouk",
        "email": "alexst@google.com",
        "time": "Tue Jan 31 16:29:42 2017 -0500"
      },
      "message": "Refactor how layer metadata for use by VR is propagated\nfrom WindowManager based on feedback in frameworks/base.\n\nSince windowType and ownerUid are immutable, they are sent\non creation instead of separate IPC.\n\nBug: 30984984\nTest: built locally\n\nChange-Id: I380b3cdcf6aec471fc23f1e27846ab80492e8add\n"
    },
    {
      "commit": "1db73f66624e7d151710483dd58e03eed672f064",
      "tree": "40d09da72f244ae593284ac3bd895d078e9c4220",
      "parents": [
        "bf89eb7b24f930e77be57bc7b6393e39691a4d35"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Wed Dec 21 12:58:51 2016 -0800"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Fri Jan 27 13:59:42 2017 -0800"
      },
      "message": "SurfaceFlinger: Add support for non-privileged clients.\n\nAllow clients without privilege to create child layers through scoped\nconnections. We enable this in preparation for allowing SurfaceView\nto bypass the WindowManager. We include support for reparenting of\nall of a layer\u0027s children for the WindowManager to use in cases where\none surface is replacing another (while keeping its children around).\n\nTest: Tested with corresponding SurfaceView modifications.\nChange-Id: I9920e6730d719113522a68788e63fb59f70d3406\n"
    },
    {
      "commit": "ae0608381b2b4699218febd6d45ad9d307544d55",
      "tree": "9cf2ccc9fb45be608329b963b3f960f506c882cd",
      "parents": [
        "6cf6af0299f7e48bc5bcdcd6a6c0f5a8725e9411"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Nov 28 10:51:00 2016 -0800"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Tue Jan 24 10:57:40 2017 -0800"
      },
      "message": "SurfaceFlinger and libgui: Switch Z-order to signed type.\n\nIn preparation for SurfaceFlinger child layers. In that model\nchildren\u0027s Z order will be relative to their parent. We need\nnegative Z values to represent children stacking below their\nparent (e.g. SurfaceView). Java side already uses signed types\nstrangely enough.\n\nTest: Basically a refactoring. SurfaceFlinger still works.\nChange-Id: Ifcece69f6f9d917cbf5238a59f8e5de1e8ba6a25\n"
    },
    {
      "commit": "6cf6af0299f7e48bc5bcdcd6a6c0f5a8725e9411",
      "tree": "9570c8effb020bad764b3e5f88339a60ea77543f",
      "parents": [
        "146abf38c2442b77dc78a0565ad010376c9d1b69"
      ],
      "author": {
        "name": "Albert Chaulk",
        "email": "achaulk@google.com",
        "time": "Tue Nov 22 13:52:43 2016 -0500"
      },
      "committer": {
        "name": "Daniel Nicoara",
        "email": "dnicoara@google.com",
        "time": "Tue Jan 24 10:59:40 2017 -0500"
      },
      "message": "VR: Add API to plumb surface type and owner through to SurfaceFlinger\n\nThis is a cherry-pick of\nhttps://googleplex-android-review.git.corp.google.com/c/1648886/\n\nTest: None\nBug: None\nChange-Id: I338c84c2576ab85fa4f6d8e759c9e7ce912cdd61\n"
    },
    {
      "commit": "c3574f7b0141c69fdca25ccafb80ff334462f9a3",
      "tree": "7830169cb6639cbd8d612b34d27a605362e41c40",
      "parents": [
        "47babb84bcd2dcf4943687e33595ba58dc0dbe28"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Thu Mar 24 12:19:32 2016 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Sun Apr 17 20:07:34 2016 -0700"
      },
      "message": "Add setOverrideScalingMode to SurfaceControl\n\nProvide an interface for the window manager to override\nthe client specified scaling mode. This makes it possible\nfor the window manager to force windows to be scaleable\nfor animations, etc, even when a resize is pending.\n\nBug: 27891386\nChange-Id: Ic4aae9917bd6869ee0dbb425979b4e21c68342a3\n"
    },
    {
      "commit": "acbe67888f0bd65d5400400f0115bae6bd6199dc",
      "tree": "113c4432fde7ede1b20441993cef55796ce528b2",
      "parents": [
        "b49576d5241859a3cf03c9f34b8030ad25d3806b"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Fri Mar 04 17:54:21 2016 +0000"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Mon Mar 21 16:10:59 2016 -0700"
      },
      "message": "Add final crop implementation\n\nBug 26559810\n\nChange-Id: Idaccd13cd625c92d18665ddecebdbb266ea365f3\n"
    },
    {
      "commit": "7dde599bf1a0dbef7390d91c2689d506371cdbd7",
      "tree": "6580e646734b6d4c64ab1a99dc2c710d4c8e0df1",
      "parents": [
        "1fd88a560df8f58c3a798b25f64795e8306e527f"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Fri May 22 09:51:44 2015 -0700"
      },
      "committer": {
        "name": "Rob Carr",
        "email": "racarr@google.com",
        "time": "Thu Oct 29 00:11:28 2015 +0000"
      },
      "message": "Support SurfaceView synchronization.\n\nAdd API for fetching the next frame number to be produced by\na given buffer producer. Add an API to SurfaceComposer to \ndefer execution of the current transaction until a given frame number. \nTogether these may be used to synchronize app drawing and surface \ncontrol updates.\n\nChange-Id: I8e0f4993332ac0199c768c88581a453fefbaff1d\n"
    },
    {
      "commit": "60d6922a011fe18c111b8d30fb6ef1f655b6b15e",
      "tree": "4618ad5fc60b4e25c76c9f5d1e80ad3223baff31",
      "parents": [
        "72f314a50f34de593686661b0a99906125d18bfd"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Fri Aug 07 14:47:20 2015 -0700"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Mon Aug 24 10:50:52 2015 -0700"
      },
      "message": "libsgui: Change Rect default constructor\n\nThe current Rect default constructor initializes to all zeroes. Change\nit to initialize to an invalid Rect.\n\nModify all of the existing invocations of the default constructor to\nmaintain the existing behavior.\n\nBug 18173359\n\nChange-Id: Ibbad076f1550a94f56d7b1cf5350071f2022e09a\n"
    },
    {
      "commit": "d723bd7669b4fc88dc282d8bf8ba5ecb2849d22f",
      "tree": "efc2d81e4ebf1f2499c5c5ec10323c6b3013a5ba",
      "parents": [
        "a950eb18792da6962fcefa69b12ffc3f9d8cdca8"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue Nov 18 10:24:03 2014 -0800"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Fri Dec 05 11:06:44 2014 -0800"
      },
      "message": "libgui: Enable -Weverything and -Werror\n\nEnables -Weverything and -Werror, with just a few exceptions for\nwarnings we can\u0027t (or shouldn\u0027t need to) work around.\n\nChange-Id: I034abec27bf4020d84af60d7acc1939c59986dd6\n"
    },
    {
      "commit": "2ea926bda2fa30f3ba8d0ed2d2395a8ada952e6e",
      "tree": "af1a760841833f80084aac64b548471259b647a4",
      "parents": [
        "aedb1c843e9a1d3149ca81d586fa168d146d8f5e"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 14 08:01:01 2014 -0800"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Nov 14 14:01:29 2014 -0800"
      },
      "message": "Replace IInterface::asBinder() with a static\n\nso we can do NULL checks again, and update calls to IInterface::asBinder()\nto use the new static version.\n\nChange-Id: Ia7b10eb38ca55b72278bfd33d3bf647f338b4e6a\n"
    },
    {
      "commit": "54430ca2a88f57c709ea2924ea0b78820ae62643",
      "tree": "307094d84f0206118616b6812982432811a2fce6",
      "parents": [
        "078794ed377e7080ee155a632482bb98f1c9ade7",
        "793fc0e13d25bdecda1219999f8be2cb3c121d20"
      ],
      "author": {
        "name": "Michael Lentine",
        "email": "mlentine@google.com",
        "time": "Sat Nov 01 00:33:29 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Nov 01 00:33:29 2014 +0000"
      },
      "message": "am 793fc0e1: Merge \"Fix crash when user provides large values in the Parcel.\" into lmp-mr1-dev\n\n* commit \u0027793fc0e13d25bdecda1219999f8be2cb3c121d20\u0027:\n  Fix crash when user provides large values in the Parcel.\n"
    },
    {
      "commit": "8afa1c4ab86d724feb7716e153b7835385534590",
      "tree": "7f1f4e9f4cfbe0e72c96670d65fbbb5566e1732b",
      "parents": [
        "fae12d4fb45e2c4e8943811d784db04599c7e202"
      ],
      "author": {
        "name": "Michael Lentine",
        "email": "mlentine@google.com",
        "time": "Fri Oct 31 11:10:13 2014 -0700"
      },
      "committer": {
        "name": "Michael Lentine",
        "email": "mlentine@google.com",
        "time": "Fri Oct 31 16:08:44 2014 -0700"
      },
      "message": "Fix crash when user provides large values in the Parcel.\n\nBug: 18102648\nChange-Id: Ie6a24718e586a34424238363de80f9545951514f\n"
    },
    {
      "commit": "27b780b517eb18582f978da64febb31ecfa8e4bf",
      "tree": "dbabfbcf667a4fbaef5649247226f73779532ef5",
      "parents": [
        "f0ca2ade534275f624daea5ae3ba907a5c63afa6",
        "9cc849500df0bba42d3ed19b90c38ff1dffd2262"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Oct 15 22:52:51 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 15 22:52:51 2014 +0000"
      },
      "message": "am 9cc84950: Merge \"Don\\\u0027t check if this \u003d\u003d NULL.\"\n\n* commit \u00279cc849500df0bba42d3ed19b90c38ff1dffd2262\u0027:\n  Don\u0027t check if this \u003d\u003d NULL.\n"
    },
    {
      "commit": "1474f8864faafebc92ff79959bb5c698bd29b704",
      "tree": "7e60cb941b744698bb8bf40e81f50ff14c46e987",
      "parents": [
        "86aeb9ef154d7aa63c58cbe5be62e5b61d6ae5fa"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Sep 08 18:59:09 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Sep 16 17:52:06 2014 -0700"
      },
      "message": "Don\u0027t check if this \u003d\u003d NULL.\n\nEntering a method with this \u003d\u003d NULL is undefined behavior. Clang whines\nabout this.\n\nChange-Id: Ibde628395ca10dfef0d2f59e81280576f104b83c\n"
    },
    {
      "commit": "47e45405d1533aa73307014f7bf371e118695cf3",
      "tree": "cabc47d4088308ed27b799d998a6d4a705e18058",
      "parents": [
        "1f6078aef71b1d3f080cd565adbec350c71088dd"
      ],
      "author": {
        "name": "Michael Lentine",
        "email": "mlentine@google.com",
        "time": "Fri Jul 18 15:34:25 2014 -0700"
      },
      "committer": {
        "name": "Michael Lentine",
        "email": "mlentine@google.com",
        "time": "Wed Jul 30 14:36:25 2014 -0700"
      },
      "message": "Allow for resizing of Virtual Displays.\n\nModify SurfaceFlinger to use VirtualDisplaySurface in all cases when a virtual\ndisplay is used. Add functionality in VirtualDisplaySurface to resize the\nbuffers aquired in the QueueBufferOutput. Add transaction support in\nSurfaceFlinger for resize. Add the modification of the size in DisplayDevice.\n\nChange-Id: Iae7e3556dc06fd18d470adbbd76f7255f6e6dd6b\nTested: None\n"
    },
    {
      "commit": "ac9fa427d4a86745e60a5f7fd8e3ea340c4db907",
      "tree": "657e6ec979339bc0e291247310af356e6a19ef7e",
      "parents": [
        "b997f6ef0f3fa7cf67fd7487b88e5d6ac0bb15e9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 11 16:40:36 2013 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 13 15:27:08 2013 -0800"
      },
      "message": "get rid of Surface identity and token\n\nwe use the IBinder instead.\n\nChange-Id: I4aa0b58869ba43f19980013620051e5a261b062d\n"
    },
    {
      "commit": "2adaf04fab35cf47c824d74d901b54094e01ccd3",
      "tree": "1201bd220bfea6d308a119e6a986d783e548a10a",
      "parents": [
        "f7baee731e81bfa7f7ccf2e0e03560f5073bc431"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 18 09:49:45 2012 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 18 13:10:48 2012 -0800"
      },
      "message": "Rename ISurfaceTexture and SurfaceTexture\n\nThe C++ class names don\u0027t match what the classes do, so rename\nISurfaceTexture to IGraphicBufferProducer, and SurfaceTexture to\nGLConsumer.\n\nBug 7736700\n\nChange-Id: Ia03e468888025b5cae3c0ee1995434515dbea387\n"
    },
    {
      "commit": "8683fca395d01734ec7946e9f0595ec5d7b754c6",
      "tree": "fe3f6b92245be46902760c129e395c94589b9895",
      "parents": [
        "e57f292595bec48f65c8088b00ff6beea01217e9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Aug 12 19:37:16 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 13 02:46:05 2012 -0700"
      },
      "message": "improve [un]marshalling of non-binder objects\n\nthis change introduces a new class LightFlattenable\u003c\u003e which is\na protocol to flatten simple objects that don\u0027t require\nbinders or file descriptors; the benefit of this protocol is that\nit doesn\u0027t require the objects to have a virtual table and give us\na consitant way of doing this.\n\nwe also introduce an implementation of this protocol for\nPOD structures, LightFlattenablePod\u003c\u003e.\n\nParcel has been update to handle this protocol automatically.\n\nSensor, Rect, Point and Region now use this new protocol.\n\nChange-Id: Icb3ce7fa1d785249eb666f39c2129f2fc143ea4a\n"
    },
    {
      "commit": "e57f292595bec48f65c8088b00ff6beea01217e9",
      "tree": "2db8aac9c9056e099ad70d7ce70eb0ac7a8223ae",
      "parents": [
        "ef7b9c7eac036cc1230c64821039d18f8cbd2c1c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 09 16:29:12 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 10 17:32:33 2012 -0700"
      },
      "message": "make multi-display more real\n\n- displays are represented by a binder on the client side\n- c++ clients can now create and modify displays\n\nChange-Id: I203ea5b4beae0819d742ec5171c27568f4e8354b\n"
    },
    {
      "commit": "8b33f032327f8de0dcc0e6d0d43ed80f834b51f6",
      "tree": "d6228a0088740fe5f5c73f405f353bffd121bbae",
      "parents": [
        "921e6ac4b7610a178285898d191eb0e3afe906c0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 24 20:43:54 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 24 20:43:54 2012 -0700"
      },
      "message": "update SF binder protocol to support setting display attributes\n\nno change of functionality -- the old behavior is implemented\non top of this new protocol.\nthis new protocol will allow, eventually, to pass informations\nabout displays and layer stacks.\n\nChange-Id: Ic6c2295e61ec8ecbc8ce01ab7664e35d928202fc\n"
    },
    {
      "commit": "90ac799241f077a7b7e6c1875fd933864c8dd2a7",
      "tree": "a3487a896595852219292e067fa6a3d9f25abed6",
      "parents": [
        "f91bb05132dccbb61a69351752d9ae47cc31f30d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Feb 25 18:48:35 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 27 13:03:08 2012 -0800"
      },
      "message": "fix libgui header location\n\nChange-Id: Iec71706cdd4f29c6904993648ce873e83ef9cafe\n"
    },
    {
      "commit": "698c0873cf2e07bdc7fd1e72169aee2a19fa40d7",
      "tree": "cf1a8a26a6568ad5dd1fa30d238b9651e09d3800",
      "parents": [
        "0748907d6a9a052fe54541cd7f6ec66b998fec3b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 28 19:09:31 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 29 15:05:41 2011 -0700"
      },
      "message": "SF transactions are now O(1) wrt IPC instead of O(N).\n\nChange-Id: I57669852cbf6aabae244ea86940a08a5a27ffc43\n"
    },
    {
      "commit": "d87f162026454f5a3e6437ed0c9ef51651a6b939",
      "tree": "702b5e56762a0236c86242279894607948c8fb71",
      "parents": [
        "d3f9a53bffa049d900ebb1a93048ab0bb6885b50"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 25 18:42:40 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 25 18:42:40 2011 -0700"
      },
      "message": "merge libsurfaceflinger_client into libgui\n\nthis is the first step in unifying surfacetexture and surface.\nfor this reason the header files were not moved, as most of them\nwill eventually go away.\n\nNOTE: currently we keep libsurfaceflinger_client.so as an empty\nlibrary to workaround prebuilt binaries wrongly linking against\nit.\n\nChange-Id: I130f0de2428e8579033dc41394d093f4e1431a00\n"
    },
    {
      "commit": "b6121422ef641dc7317d1c3bf1d38b7d73922250",
      "tree": "80dfecc782b2a9b5e3dfdec96703ffc8a1b6b9bd",
      "parents": [
        "3c8f46c8d82d158aef9d4e757d744fa11fb95ece"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 17 20:22:26 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 17 20:26:47 2010 -0800"
      },
      "message": "Remove a dependency of Region (libui) on Parcel (libbinder).\n"
    },
    {
      "commit": "9cce325fae8adcf7560a28eef394489f09bad74d",
      "tree": "3497604564acd2575016d3a331d661f22a8e6db3",
      "parents": [
        "4fae0fd0c9425318094d4c0059331c2c7a996c66"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 09 17:46:37 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 11 13:16:22 2010 -0800"
      },
      "message": "split libsurfaceflinger_client and libcamera_client out of libui\n"
    },
    {
      "commit": "c5b2c0bf8007562536b822eb060fc54a01f8e08b",
      "tree": "da6084f542177972cf72a985b5d2c10330f87de3",
      "parents": [
        "208059f67ed2dd9fa025e07fcb6954d3cb61c79e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 19 19:08:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 20 12:55:03 2009 -0700"
      },
      "message": "move libbinder\u0027s header files under includes/binder\n"
    },
    {
      "commit": "edbf3b6af777b721cd2a1ef461947e51e88241e1",
      "tree": "f09427b843b192cccf8c3b5328cb81dddf6489fa",
      "parents": [
        "d5193d9394c5e58176d7bcdf50ef017f8a3b9e1e"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "d5193d9394c5e58176d7bcdf50ef017f8a3b9e1e",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "43aa2b1cbf7a03e248e10f4d0fec0463257cd52d"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "7c1b96a165f970a09ed239bb4fb3f1b0d8f2a407",
      "tree": "df5a6539447324de36e95b057d6b9f0361b7a250",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
