)]}'
{
  "log": [
    {
      "commit": "0449b0fa3e3e88da8622da6e95a7eefea8c46a70",
      "tree": "57eac962d959508de399454604076cd343d36f66",
      "parents": [
        "f2c793939c42ff233ced4095cf85bb93ec74523f"
      ],
      "author": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Thu Dec 20 16:23:45 2018 -0800"
      },
      "committer": {
        "name": "Lloyd Pique",
        "email": "lpique@google.com",
        "time": "Mon Jan 07 13:39:45 2019 -0800"
      },
      "message": "Revert \"SurfaceFlinger: protect state members in Layer\"\n\nState update transactions must be atomic. The fine-grained lock on each\nLayer implied otherwise. Revert the fine grained lock as being\nunhelpful.\n\nUnfortunately there does not seem to be a way to use Clang thread\nannotations to specify the desired locking behavior.\n\nNote that the parent CL addresses the locking problem that led to the\nbug.\n\nThis reverts commit 83729883eecd31a9907bc79bc21998a90f17105c.\n\nBug: 119481871\nTest: SurfaceFlinger unit tests\nTest: go/wm-smoke\nChange-Id: I361741f8d10102aeb57f164c847c6063ff93dd14\n"
    },
    {
      "commit": "83729883eecd31a9907bc79bc21998a90f17105c",
      "tree": "c1aca6e748ad8418883b758125bc56b85e52a19f",
      "parents": [
        "227d1b1098a8d4fa562ca23914c7472c337acf26"
      ],
      "author": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Fri Dec 07 12:26:48 2018 -0800"
      },
      "committer": {
        "name": "Ady Abraham",
        "email": "adyabr@google.com",
        "time": "Wed Dec 12 11:26:51 2018 -0800"
      },
      "message": "SurfaceFlinger: protect state members in Layer\n\nAdd proper locking to protect state members in Layer.\nThese members are accessed by both the main thread and binder.\n\nBug: 119481871\nTest: SurfaceFlinger unit tests\nTest: go/wm-smoke\nChange-Id: I12d47711992e09c0677b77f7e1b36c1254b63a1b\n"
    },
    {
      "commit": "fd46261518bac66441a57c3732811f5340b69978",
      "tree": "35f00a30678edd12ee4c08385b7f9ca8eeb3c28f",
      "parents": [
        "1d3c7f7db6a8eceba3f0c5e5e42973e40c7dac2f"
      ],
      "author": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Thu May 31 16:11:27 2018 -0700"
      },
      "committer": {
        "name": "chaviw",
        "email": "chaviw@google.com",
        "time": "Fri Jun 01 11:52:19 2018 -0700"
      },
      "message": "Use correct StateSet for LayerVector compare.\n\nCurrently LayerVector compare function was using the current StateSet.\nThis is incorect since the LayerVector may be created with the intention\nof sorting the layers by drawing state. Instead, create the LayerVector\nwith a specified StateSet so the compare function always uses the\ncorrect state.\n\nThis fixes an issue where the layers were getting added and sorted by\ncurrent state z order but the caller expected the order to be by drawing\nstate z order.\n\nChange-Id: I7afef556fa72f687bcfeb0a642465488cc72f40b\nFixes: 80516823\nTest: No longer flicker when IME closes. Logs show correct z order.\n"
    },
    {
      "commit": "28194d839b2b314439cd8697d36b07476a264ac7",
      "tree": "93d79fb770576be8ee46adc41a94053aa4800449",
      "parents": [
        "63f1be59721c38841c30b8940776a80563cf2c6a"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Nov 03 22:37:34 2017 -0700"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Nov 15 16:06:12 2017 -0800"
      },
      "message": "surfaceflinger: fix z type in LayerVector::do_compare\n\nThe issue was exposed by commit 80de6f3 (Fix surfaceflinger on\ninteger sanitized builds).\n\nTest: SurfaceFlinger_test\nChange-Id: Ie77b2f48f2108030a308360c07cf0260f33c48ca\n"
    },
    {
      "commit": "80de6f350cb23e8a78ad05ae4f8b781ff6fc681a",
      "tree": "37bebf611571498cfff07666fbafbafb8ff50155",
      "parents": [
        "15b519ba6d498e6ed7fd4e6fac61bb0b3eb7324c"
      ],
      "author": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Mon Oct 30 11:24:08 2017 -0700"
      },
      "committer": {
        "name": "Ivan Lozano",
        "email": "ivanlozano@google.com",
        "time": "Wed Nov 01 12:49:38 2017 -0700"
      },
      "message": "Fix surfaceflinger on integer sanitized builds.\n\nRefactors unsigned integer overflows in do_compare to fix integer\noverflow sanitized builds. Also disables sanitization in\nLayer::makeTraversalList.\n\nTest: Compiled and checked output from sanitizer.\nBug: 30969751\nChange-Id: I1a6d73435495e8b3ba3edb2587f62e4a0f2662f3\n"
    },
    {
      "commit": "412903fce3a93f411c85c54375a1851bfb370400",
      "tree": "e6f831161b9e544cc81c1f2c9cd7e771644f0e8c",
      "parents": [
        "2041913a05b79b96c5c084f30bb8944049a976c8"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Thu Apr 27 13:42:17 2017 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue May 02 13:34:34 2017 -0700"
      },
      "message": "SurfaceFlinger: Select which layer state to visit\n\nModifies the traverseIn[Reverse]ZOrder methods to also take an enum\nvalue specifying whether to traverse the current state or the drawing\nstate.\n\nThis has the effect of fixing a bug where we weren\u0027t performing\ntransactions on a child layer because its parent was only visiting its\ndrawing layers (rather than its current layers) and was thus skipping\nthe child, which had not yet been moved from current to drawing.\n\nBug: 36858924\nTest: ChildLayerTest.Bug36858924 doesn\u0027t hang\nChange-Id: I1959f40bc07e77864ba024511d429592a398a67a\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": "1f0a16a5d7cd00ba7fda82e7d315afa1fd1303b9",
      "tree": "28a321d2992c122a17079f523f6e2bacfc5c1123",
      "parents": [
        "2047fae0cfed99c425dc7333f31d309e5b8ee1ba"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Oct 24 16:27:39 2016 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Tue Jan 24 13:04:43 2017 -0800"
      },
      "message": "SurfaceFlinger and libgui: Support for child layers.\n\nAdd support for parenting Layers in a tree. Layers\nfollow scene-graph style rules, that is to say:\n   1. A child is cropped to the final bounds of the parent.\n   2. A child inherits the parent\u0027s transform (including position)\n   3. A child\u0027s Z ordering is relative to the parent and bounded between\n      the parents siblings.\n   4. A childs lifetime is bounded by it\u0027s parents lifetime.\n\nTest: New tests in Transaction_test plus manual testing with later branches.\nChange-Id: I96f8ad863665b9a70b6f845561344c297b7e6eff\n"
    },
    {
      "commit": "2047fae0cfed99c425dc7333f31d309e5b8ee1ba",
      "tree": "c2316bc7347563bd7c22c67c5b6705c39a92f089",
      "parents": [
        "ae0608381b2b4699218febd6d45ad9d307544d55"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Nov 28 14:09:09 2016 -0800"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Tue Jan 24 12:58:04 2017 -0800"
      },
      "message": "SurfaceFlinger: Use traversal functions to iterate LayerList.\n\nIn preparation for the Layer hierarchy. There we will need\nto use such a style to traverse the tree of layers.\n\nTest: Just a refactoring. SurfaceFlinger still works.\nChange-Id: I84dcd82e713f1bdbe911658793ce11460267a956\n"
    }
  ]
}
