)]}'
{
  "log": [
    {
      "commit": "f78ff7d49a4da604ba4fbcf2b662f5e4bd8bfa16",
      "tree": "675ddb8ecdb4ea9a90334e57e88918ea17734fd9",
      "parents": [
        "d2052175ebdce296da8c92bf6ed695ecb1b18d4a",
        "cefeb34e4866209e2ccf4c520919fe31a3f1aeb5"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Jan 15 04:57:43 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 15 04:57:43 2015 +0000"
      },
      "message": "am cefeb34e: am 2c9f86aa: am 53af1cd3: Merge \"Vsyncs are hard\" into lmp-mr1-dev\n\n* commit \u0027cefeb34e4866209e2ccf4c520919fe31a3f1aeb5\u0027:\n  Vsyncs are hard\n"
    },
    {
      "commit": "cefeb34e4866209e2ccf4c520919fe31a3f1aeb5",
      "tree": "fea8262b6a42bc41e5a84a65a4858ca37ecd0c21",
      "parents": [
        "c83245be678608533ce53005f4149719f6dd5e03",
        "2c9f86aa21b8d7ea6a77eaca9a49ccdb31245129"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Jan 15 01:39:50 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 15 01:39:50 2015 +0000"
      },
      "message": "am 2c9f86aa: am 53af1cd3: Merge \"Vsyncs are hard\" into lmp-mr1-dev\n\n* commit \u00272c9f86aa21b8d7ea6a77eaca9a49ccdb31245129\u0027:\n  Vsyncs are hard\n"
    },
    {
      "commit": "a22c9b2cd171a656fa684d57a915dbe636da5f6a",
      "tree": "d7b4e944191fc2dc62d12f1e2bb4b73642267fc4",
      "parents": [
        "820088587e732fe04b705248a06f275bf264be33"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Jan 14 10:40:15 2015 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Jan 14 10:40:15 2015 -0800"
      },
      "message": "Vsyncs are hard\n\nBug: 18866485\nChange-Id: I7d304df0f20a3296956cb6887a72adba9243f117\n"
    },
    {
      "commit": "d41c4d8c732095ae99c955b6b82f7306633004b1",
      "tree": "dbb2e26c6c5a80c7ccf43e5cd5fb1554cc603555",
      "parents": [
        "8dfaa4904205772cdceee63ef3989bcdedf1a914"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jan 05 15:51:13 2015 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jan 05 16:49:13 2015 -0800"
      },
      "message": "Add overrides and switch to nullptr keyword for all files\n\nAdds remaining missing overrides and nullptr usages, missed due to\nan extreme failure in tool usage.\n\nChange-Id: I56abd72975a3999ad13330003c348db40f59aebf\n"
    },
    {
      "commit": "51d6a3db97bdd5315f1a17a4b447d10a92217b98",
      "tree": "80803f8d2a5507e2d29bd58c7243a23fca343454",
      "parents": [
        "e84a208317e0ed388fcdad1e6743c7849acb51b0"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Dec 22 17:16:56 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Dec 23 16:53:56 2014 -0800"
      },
      "message": "Cleanup various clang warnings, use unique_ptrs in several places\n\nChange-Id: I347904b25e51fcc7de14b1e72f1acd0f6ba26f3f\n"
    },
    {
      "commit": "07adacf4996c8ca494332ec938786fa15832c722",
      "tree": "941feda10d6501b2cd6e24714c915bf9bb49c0f8",
      "parents": [
        "32328b5cec14323dd31cf906aaeb088caf110a1d"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Dec 19 10:08:40 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Dec 22 11:20:57 2014 -0800"
      },
      "message": "Cleanup\n\nChange-Id: I91ffb9c66697741116fdeaa31abdf6cfd79155df\n"
    },
    {
      "commit": "a285e9ed82071077d55c41471dd5437ec2f41ba4",
      "tree": "52ca6f74d3df5643a3c81015319ce22cd67fbfe6",
      "parents": [
        "be2fba62322da1912f58d2ef3dad6a08bb875541",
        "ed3c2962be1e2966c3b46f20e81d2902a8302d8b"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Dec 19 23:22:58 2014 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Dec 19 23:22:58 2014 +0000"
      },
      "message": "am 165fb8f5: am f89dac47: Merge \"Tweak RT-animator scheduling\" into lmp-mr1-dev\nautomerge: ed3c296\n\n* commit \u0027ed3c2962be1e2966c3b46f20e81d2902a8302d8b\u0027:\n  Tweak RT-animator scheduling\n"
    },
    {
      "commit": "ed3c2962be1e2966c3b46f20e81d2902a8302d8b",
      "tree": "d159399de6dec180d4afb71681ed0b748dd53fb3",
      "parents": [
        "19ecc7847faf0f6800c342eab806358d68b610c1",
        "165fb8f5aa0709a8dc35f99a9b81f6906452a648"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Dec 19 23:21:44 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 19 23:21:44 2014 +0000"
      },
      "message": "am 165fb8f5: am f89dac47: Merge \"Tweak RT-animator scheduling\" into lmp-mr1-dev\n\n* commit \u0027165fb8f5aa0709a8dc35f99a9b81f6906452a648\u0027:\n  Tweak RT-animator scheduling\n"
    },
    {
      "commit": "a733f89c05567c97359169832f41389b939baaad",
      "tree": "043dc0c717173faf4154b357a544ff328d9c37ff",
      "parents": [
        "28fbe04052b95ada3c32d805f26d6d9ad5548d6b"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Dec 19 11:37:21 2014 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Dec 19 11:37:21 2014 -0800"
      },
      "message": "Tweak RT-animator scheduling\n\nBug: 18226391\n\nThe issue occurs as a result of a dispatchFrame itself\ntaking longer than 12ms, the alloted budget. The result\nis that a vsync request (which occured at the end) would\nmiss the vsync that occured 1ms prior to the end of the frame.\nAs a result it would end up waiting for the following vsync,\nessentially dropping to 30fps even though 60 could have been\nsustained.\n\nFix this with a few tweaks.\nFirst, adjust the UI thread\u0027s delay bias from (now + 4ms) to\n(vsync + 4ms), this prevents RT animators from slowly drifting\nif the vsync occurs mid-task.\nSecond, request a vsync preemptively prior to running callbacks.\nThis way if any callbacks needs the next vsync and it takes\n\"too long\", we will catch that vsync.\nFinally, fix an issue where the display event queue was always\ndrained \u0026 rejected at the end of a task loop. Instead, drain\nand reject all stale vsyncs. This still prevents the issue of\nboth UI thread \u0026 RT thread trying to drive 2 frames in a single\npulse, but also allows RT to notice that it missed a vsync\npulse it needed and that it should speed-up a bit in response\n\nChange-Id: I9d6be037737e9283297898cac2e3563453e797cd\n"
    },
    {
      "commit": "f088c349dfea985e561d7e838ecd41be5168cd4a",
      "tree": "5b9d412b5bf31cd6f20f0e94dc464174441efca0",
      "parents": [
        "7fc885b0bfb8a799825531932567a1d472a55087"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Dec 12 09:49:29 2014 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Dec 12 09:49:29 2014 -0800"
      },
      "message": "Fix style\n\nChange-Id: I7227b0eac126bf470ed50249a7809b845872983b\n"
    },
    {
      "commit": "59cf734f9ee8fa0154d199f0f36779a6ffe0dfb5",
      "tree": "c57440c0cbe027e40c20e0ff9c233c45ca5c721e",
      "parents": [
        "9f2d0d27ac2e30d641e26775761e2909fa863f9a",
        "d67bb5015f716c094beff02b2c5e77c9bb7d11a0"
      ],
      "author": {
        "name": "Yohann Roussel",
        "email": "yroussel@google.com",
        "time": "Thu Dec 11 11:10:50 2014 +0100"
      },
      "committer": {
        "name": "Yohann Roussel",
        "email": "yroussel@google.com",
        "time": "Thu Dec 11 11:10:50 2014 +0100"
      },
      "message": "resolved conflicts for merge of d67bb501 to master\n\nChange-Id: I40698ce1e382cb41eec7af5ea49ac0e2f997d555\n"
    },
    {
      "commit": "d67bb5015f716c094beff02b2c5e77c9bb7d11a0",
      "tree": "4f23359e87a1bb079bd499f922d763e45c7a8752",
      "parents": [
        "934d8d85be221b86cb5097625c0f48391b3a71b2",
        "e4a6ed9d6d8721c9fad018b0d43dfe7daf4b24e7"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Dec 11 01:25:54 2014 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Dec 11 01:25:54 2014 +0000"
      },
      "message": "am eb2dcc79: Merge \"Don\\\u0027t preload textures for AssetAtlas\" into lmp-mr1-dev\nautomerge: e4a6ed9\n\n* commit \u0027e4a6ed9d6d8721c9fad018b0d43dfe7daf4b24e7\u0027:\n  Don\u0027t preload textures for AssetAtlas\n"
    },
    {
      "commit": "ebd52610cfeff6e557fde284a7e1efc5e6438285",
      "tree": "6e371646828e9074579fe91f869954a67f48e93a",
      "parents": [
        "fa3f43145ac1af62ed063d3cd7ba1c30a81bb3fd"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Dec 10 16:47:36 2014 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Dec 10 17:07:41 2014 -0800"
      },
      "message": "Don\u0027t preload textures for AssetAtlas\n\nBug: 18317479\n\nRenderNode::prepareSubTree calls prefetchAndMarkInUse\non every bitmapResoruce in the DisplayList. However,\nthis resulted in textures being uploaded for bitmaps\nthat would be drawn from the AssetAtlas instead.\n\nTo fix this we teach TextureCache about the AssetAtlas\nso that calls to TextureCache return the Texture from\nAssetAtlas if it exists. Thus usage of AssetAtlas\nis now purely to allow for further optimizations via\ndraw merging instead of a requirement to get\nany benefit at all.\n\nChange-Id: I65282fa05bac46f4e93822b3467ffa0261ccf200\n"
    },
    {
      "commit": "9fb42f07784ac9e1ab29fa7d5bcda6c3081d238f",
      "tree": "23fe00a35b718051d190f018ed8603d0c06acb14",
      "parents": [
        "e1a96f7fe217ccc610bd3cfb4e9a66630c816571",
        "a75b0ad3842a5cfc406fbd9c7a36bf8a7bdcf069"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Dec 04 13:51:41 2014 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Dec 04 13:51:41 2014 -0800"
      },
      "message": "resolved conflicts for merge of a75b0ad3 to master\n\nChange-Id: I32a2d129c556407727ada909daa6470309d42499\n"
    },
    {
      "commit": "a75b0ad3842a5cfc406fbd9c7a36bf8a7bdcf069",
      "tree": "aef030b2f3b65e829e3569a0b0304b609f1c856c",
      "parents": [
        "1c88fc009fb3f7a3b5f085abb6a40cf4d845d662",
        "a51a0901ada5e2bc472c379a39df13ff48e666ed"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Dec 04 13:41:04 2014 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Dec 04 13:41:04 2014 -0800"
      },
      "message": "resolved conflicts for merge of a51a0901 to lmp-mr1-dev-plus-aosp\n\nChange-Id: Id7df835f0bd3d5d276b162635ddfb7fe0918dfed\n"
    },
    {
      "commit": "01a5ea35fbba4c5bb1d7790ae1677a2fa752e042",
      "tree": "d890ced3bdb3be6275e2d13d0dbd9f901ec8ce4d",
      "parents": [
        "8d72046b9ba06feadbcf71815a1c6e1017c8da37"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Dec 03 13:01:07 2014 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Dec 03 13:03:59 2014 -0800"
      },
      "message": "Resume RT-animations after a pauseSurface\n\nBug: 18203577\n\nThe issue occurs as a result of performTraversals() both doing\na window relayout call *and* early-returning because it\u0027s not dirty.\n\nTo fix this pauseSurface() returns whether or not the RT-side is\n\"dirty\" to force ViewRootImpl to do a draw even if mDirty is\notherwise empty.\n\nChange-Id: I534f367e75d18d273ebf14df3927f5c464ef6bef\n"
    },
    {
      "commit": "c5cf471758169f7ffdf7669568a7780902159790",
      "tree": "f8ff84ce373fde3e5163c466bf5f6f28a2ce2037",
      "parents": [
        "6e8fea14ccc4c30d56a7f70c9addf3d5b8a229d2",
        "d7af6eaace4ffdd3635a1cdeff65e9dc1af39f67"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Dec 01 21:47:03 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 01 21:47:03 2014 +0000"
      },
      "message": "am d7af6eaa: am d51205fd: am 6afc5cf3: Merge \"Prevent calling GL functions with an invalid surface\"\n\n* commit \u0027d7af6eaace4ffdd3635a1cdeff65e9dc1af39f67\u0027:\n  Prevent calling GL functions with an invalid surface\n"
    },
    {
      "commit": "d7af6eaace4ffdd3635a1cdeff65e9dc1af39f67",
      "tree": "db08af2392b33783928c8ff5954301131d5e09aa",
      "parents": [
        "b62b1b03792e7c583ec1a51a3d621deb51663414",
        "d51205fda7351ca32e54ef34b32e72f6c7c79847"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Dec 01 21:40:32 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 01 21:40:32 2014 +0000"
      },
      "message": "am d51205fd: am 6afc5cf3: Merge \"Prevent calling GL functions with an invalid surface\"\n\n* commit \u0027d51205fda7351ca32e54ef34b32e72f6c7c79847\u0027:\n  Prevent calling GL functions with an invalid surface\n"
    },
    {
      "commit": "a12b2405df5c12363e24cebc684f5f3a5c9a5b7b",
      "tree": "395524d5f2413969c38197aa7db765e45e29c655",
      "parents": [
        "6cacf44e7ecfe50097adc99dab97c3fb9770a1af"
      ],
      "author": {
        "name": "Sangkyu Lee",
        "email": "sk82.lee@lge.com",
        "time": "Fri Nov 21 18:05:41 2014 +0900"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Dec 01 21:38:34 2014 +0000"
      },
      "message": "Prevent calling GL functions with an invalid surface\n\nBug: 18518580\n\nWhen destroying CanvasContext, the surface can be invalid\nstate. So the surface should be updated to null prior to\ndestroying GL resources to ensure that GL functions\nare not called with an invalid surface.\nSome GL implementation makes an error if GL functions\nare called with an invalid surface. (Adreno 3xx)\n\nCherry picked from AOSP: f76d36f96bf221672e98e440c9df7cbf0e02e84e\n\nChange-Id: Ie6f6ea081ec931fc9df30b2c3ed066ec1ae9d294\n"
    },
    {
      "commit": "62bdf2c86342db66d86ceff3a8c0b609e4570bfc",
      "tree": "7a1de1fc46fad8849e465038311cf02bb4e6e1e9",
      "parents": [
        "ddf7e2dfc26ea5341c62cb5391a1cfb12cd8c129",
        "e986817a2dc8a412c12e456319965a67ac60f236"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Nov 26 21:08:00 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 26 21:08:00 2014 +0000"
      },
      "message": "am e986817a: am 6eac26a4: am ca84c8b1: Merge \"Revert \"Force-use the pbuffer surface for destroy\"\" into lmp-mr1-dev\n\n* commit \u0027e986817a2dc8a412c12e456319965a67ac60f236\u0027:\n  Revert \"Force-use the pbuffer surface for destroy\"\n"
    },
    {
      "commit": "e986817a2dc8a412c12e456319965a67ac60f236",
      "tree": "b2d50e32c557e8f7c38c0c8f09c9886bc82e0114",
      "parents": [
        "0eaee607b8799bc6635efc8e65df13b6411b5a84",
        "6eac26a49957eda233ad22ad75da43379f220bbc"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Nov 26 21:02:24 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 26 21:02:24 2014 +0000"
      },
      "message": "am 6eac26a4: am ca84c8b1: Merge \"Revert \"Force-use the pbuffer surface for destroy\"\" into lmp-mr1-dev\n\n* commit \u00276eac26a49957eda233ad22ad75da43379f220bbc\u0027:\n  Revert \"Force-use the pbuffer surface for destroy\"\n"
    },
    {
      "commit": "9f81485a76dd02a07fd460a29db6adddd2ca2efe",
      "tree": "b83710c292efceb1675ae0a1adb543ba24b704a7",
      "parents": [
        "b945f2313aee6e49a082ba5caaf95334d2570d52"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Nov 26 18:59:58 2014 +0000"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Nov 26 18:59:58 2014 +0000"
      },
      "message": "Revert \"Force-use the pbuffer surface for destroy\"\n\nbug:18528859\n\nThis reverts commit b945f2313aee6e49a082ba5caaf95334d2570d52.\n\nChange-Id: I6915624d356cb8570471eb3a5b8921f59b58db6d\n"
    },
    {
      "commit": "e39f788950c60f6468a038f88e6dc7ac5ee65f8f",
      "tree": "89d0720d85d43aaf47ad2daf77817d9980af1cdf",
      "parents": [
        "2edf7d6065d7ac3bff500b93daab4860a3f3741d",
        "0d4ab958c11801f5453e999f930416c87c63d100"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Nov 26 12:09:42 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 26 12:09:42 2014 +0000"
      },
      "message": "am 0d4ab958: am 4e3404d9: am dec3f138: Merge \"Force-use the pbuffer surface for destroy\" into lmp-mr1-dev\n\n* commit \u00270d4ab958c11801f5453e999f930416c87c63d100\u0027:\n  Force-use the pbuffer surface for destroy\n"
    },
    {
      "commit": "0d4ab958c11801f5453e999f930416c87c63d100",
      "tree": "02b23e48142325e228d32e81783cdb7a84c7ca99",
      "parents": [
        "2f47df83343e51214c792dc89874f0bccbeb4593",
        "4e3404d90fe33a0ff790aff4a97b6bb55e4c0e8f"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Nov 26 12:02:19 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 26 12:02:19 2014 +0000"
      },
      "message": "am 4e3404d9: am dec3f138: Merge \"Force-use the pbuffer surface for destroy\" into lmp-mr1-dev\n\n* commit \u00274e3404d90fe33a0ff790aff4a97b6bb55e4c0e8f\u0027:\n  Force-use the pbuffer surface for destroy\n"
    },
    {
      "commit": "f76d36f96bf221672e98e440c9df7cbf0e02e84e",
      "tree": "e1c81a2faf4ea012f087292f198b703fc9d0288c",
      "parents": [
        "f926d71b8ef2790da067550144860705c1a61fe5"
      ],
      "author": {
        "name": "Sangkyu Lee",
        "email": "sk82.lee@lge.com",
        "time": "Fri Nov 21 18:05:41 2014 +0900"
      },
      "committer": {
        "name": "Sangkyu Lee",
        "email": "sk82.lee@lge.com",
        "time": "Wed Nov 26 09:59:39 2014 +0900"
      },
      "message": "Prevent calling GL functions with an invalid surface\n\nWhen destroying CanvasContext, the surface can be invalid\nstate. So the surface should be updated to null prior to\ndestroying GL resources to ensure that GL functions\nare not called with an invalid surface.\nSome GL implementation makes an error if GL functions\nare called with an invalid surface. (Adreno 3xx)\n\nChange-Id: Ie6f6ea081ec931fc9df30b2c3ed066ec1ae9d294\n"
    },
    {
      "commit": "b945f2313aee6e49a082ba5caaf95334d2570d52",
      "tree": "99319f925561305925e2dc3ec71c651f2f04b0cd",
      "parents": [
        "0c31d97a38909e85e0df6cdc29469dbb1580ed4b"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Nov 25 09:54:13 2014 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Nov 25 09:54:13 2014 -0800"
      },
      "message": "Force-use the pbuffer surface for destroy\n\nBug: 18518580\n\nIf CanvasContext is being destroyed() the Surface\nis probably no longer valid as well, so make sure to\nmakeCurrent() to the pbuffer surface so that the\nsubsequent GL operations are not using an invalid\nEGLSurface\n\nChange-Id: Ica5d6a065841772c47e00ad65aa7894c7e27e043\n"
    },
    {
      "commit": "64bb413a664001c95c8439cf097dc3033f4ed733",
      "tree": "d4562f7bb5656865d32e5d684b5a41542ecfaf58",
      "parents": [
        "8a902d9f24e83c87b054adb5836b4a5b8a257be9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Nov 22 00:35:09 2014 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Nov 22 00:35:09 2014 +0000"
      },
      "message": "Revert \"resolved conflicts for merge of 220c3f4f to master\"\n\nReverted as hwui doesn\u0027t agree.\n\nThis reverts commit 8a902d9f24e83c87b054adb5836b4a5b8a257be9.\n\nChange-Id: I109e7b02bee2921e2155ded6df36f52e6f574b5a\n"
    },
    {
      "commit": "8a902d9f24e83c87b054adb5836b4a5b8a257be9",
      "tree": "7a1842dd8f8b9b8e1880df7a3fe0fc7f5d103d48",
      "parents": [
        "fa6547f6c0aad15c308a4ba946955087081ae1eb",
        "220c3f4f48b53b6010093a1ef437f4197a382ebf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 21 15:51:04 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 21 15:51:04 2014 -0800"
      },
      "message": "resolved conflicts for merge of 220c3f4f to master\n\nChange-Id: I37ecce8fddecdff82b0eace16f1ee75152f7171e\n"
    },
    {
      "commit": "2ab8298dc37851aab4623ba3f98d71055d653a73",
      "tree": "e31d76f1c16ec8e980983392b09287515bcec2f1",
      "parents": [
        "4c9041cf837cda13c749b148661d18c3fab0fbd6",
        "99377df12ee696e01cd9071132f122801a9862ce"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 21 14:19:06 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 21 14:19:06 2014 -0800"
      },
      "message": "resolved conflicts for merge of 99377df1 to lmp-mr1-dev-plus-aosp\n\nChange-Id: I3a98f55832ac447b1ed0dd129c7a93d088025943\n"
    },
    {
      "commit": "42ddc18d108f789705ad4eb697ce9599ad322507",
      "tree": "53ed2c03a53112f6bfd515a6d03b02dfed0cc9e9",
      "parents": [
        "f926d71b8ef2790da067550144860705c1a61fe5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 21 09:49:08 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 21 10:39:21 2014 -0800"
      },
      "message": "Frameworks/base: Unused parameters in hwui\n\nRemove Clang cutout for unused parameters. Fix warnings.\n\nRemove Clang cutout for deprecated Skia function usage. Has been\nfixed in the L push.\n\nChange-Id: I7ea073ff67127cc1e14e798b655e2c50615fe8e7\n"
    },
    {
      "commit": "27eaec23881f9564f98b484765d000822de5fdc3",
      "tree": "2b958bb768b18ec0cff74e3b1e5949ba3b81f30b",
      "parents": [
        "bee20cb560d37d23f2037c210152f9c44246ba8d",
        "842697a3602204036e991cfea8b74da3df6e7f14"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Nov 18 21:37:59 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 18 21:37:59 2014 +0000"
      },
      "message": "am 842697a3: am decc26df: am f0f68117: Merge \"Trace some interesting events\" into lmp-mr1-dev\n\n* commit \u0027842697a3602204036e991cfea8b74da3df6e7f14\u0027:\n  Trace some interesting events\n"
    },
    {
      "commit": "842697a3602204036e991cfea8b74da3df6e7f14",
      "tree": "6143113b63f3e52f443b6247a0611cb0c41042c1",
      "parents": [
        "1ec9c526c1d45161887faf353f4dc36b582be813",
        "decc26df39b734ca1cbaccda1cbe3b355eba6898"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Nov 18 21:33:19 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 18 21:33:19 2014 +0000"
      },
      "message": "am decc26df: am f0f68117: Merge \"Trace some interesting events\" into lmp-mr1-dev\n\n* commit \u0027decc26df39b734ca1cbaccda1cbe3b355eba6898\u0027:\n  Trace some interesting events\n"
    },
    {
      "commit": "fbc8df03e498baf47ff1a5e05e182f1bcd60c770",
      "tree": "de74f95227f7285e812ad4a0c009e697fcca7d6a",
      "parents": [
        "b3ec64e1005c82d41b6d1a1d86b6933fd25d87d2"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Nov 14 16:18:41 2014 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Nov 17 10:18:31 2014 -0800"
      },
      "message": "Trace some interesting events\n\nBug: 18337099\nChange-Id: Ie2e60da2b9f06e0368061c944d8123ab6903355c\n"
    },
    {
      "commit": "edaecc1db0584fa017822dfc2da0c968b53967e6",
      "tree": "dc2db79f490bc2e334c6e3688e099c98e846f381",
      "parents": [
        "baa73b056cbd4627a84b39a6267065ae56677220"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 10 20:54:07 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 10 21:29:52 2014 -0800"
      },
      "message": "resolved conflicts for merge of 1d03b816 to lmp-mr1-dev-plus-aosp\n\n(cherry picked from commit 1272887050a269d6d506b42099c2857847ad100b)\n\nChange-Id: Ib673768fe5fc03615626ef4b10590e5317f22172\n"
    },
    {
      "commit": "1272887050a269d6d506b42099c2857847ad100b",
      "tree": "6770318c0302a4e486224bb87b46dcb1f9a68047",
      "parents": [
        "cba06c2272c8bce7d10b2a7ee762d12043f3252a",
        "1d03b816fea1b964cc5db4d11ddcba9b25f45d99"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 10 20:54:07 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 10 20:54:07 2014 -0800"
      },
      "message": "resolved conflicts for merge of 1d03b816 to lmp-mr1-dev-plus-aosp\n\nChange-Id: Ib673768fe5fc03615626ef4b10590e5317f22172\n"
    },
    {
      "commit": "1e19674107e1aa2224c2b8c7d12bfa057efe80ea",
      "tree": "512f1a8a715497c2cde26d6ca070d923fd9c3a45",
      "parents": [
        "487ae9b8dc3e08c1a830d519a801a07cd59c8f2b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 10 15:23:43 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 10 15:58:04 2014 -0800"
      },
      "message": "Frameworks/base: Wall Werror in libs/hwui\n\nTurn on -Wall -Werror in libs/hwui. Fix errors.\n\nChange-Id: I74962d08c889712dacbd0d86d6760fc10802b6bd\n"
    },
    {
      "commit": "e19093cad8e67cf1db98157d0246d0141b19f808",
      "tree": "e1419d670b0ae3ecff9c7276c0b8e40bb77ed1b2",
      "parents": [
        "09f5ca4eb607088626fd9a088f4171e76a493995",
        "f1923c368c5c08a477b9f94dea6a499798d91d4f"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Nov 07 23:01:00 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 07 23:01:00 2014 +0000"
      },
      "message": "am f1923c36: am 8dda03a0: am ca93f69c: Merge \"Have an actual fallback if the surface is lost\" into lmp-mr1-dev\n\n* commit \u0027f1923c368c5c08a477b9f94dea6a499798d91d4f\u0027:\n  Have an actual fallback if the surface is lost\n"
    },
    {
      "commit": "aa95a88327d9a3ac8a4a00b065b78ac0f28b3a19",
      "tree": "1e2e65ec4a7d28ea3b0a253be0d31eaf397dd005",
      "parents": [
        "b9744c1c1f5e8cc936da7f1832665f77ad5bb18f"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Nov 07 11:02:07 2014 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Nov 07 11:02:07 2014 -0800"
      },
      "message": "Have an actual fallback if the surface is lost\n\nBug: 17516789\n\nThis will force a relayout/reinitialize pass if the Surface\nis lost mid-render instead of crashing on the next frame\n\nChange-Id: If08bfa16f740728fa7c05904fa11e26f07b81e2e\n"
    },
    {
      "commit": "107843de4507b3511006cb9c77b8d0364374385a",
      "tree": "02b2f6181dbd8665638b174c2819f289a40551fd",
      "parents": [
        "daccecb263cad36b55dd84e25709d543ee887202"
      ],
      "author": {
        "name": "Tom Hudson",
        "email": "tomhudson@google.com",
        "time": "Mon Sep 08 11:26:26 2014 -0400"
      },
      "committer": {
        "name": "Tom Hudson",
        "email": "tomhudson@google.com",
        "time": "Tue Nov 04 15:49:44 2014 -0500"
      },
      "message": "Remove status return from all uirenderer::Renderer functions\n\nThis moves the interface closer to android::Canvas. The only use of\nreturn values was in the OpenGLRenderer subclass; that is replaced\nwith an internal dirty flag: returned from finish(), checked by\nCanvasContext.\n\nThis is part of a series of CLs to refactor the Graphics JNI bindings.\n\nBUG:15672762\nR\u003ddjsollen@google.com,ccraik@google.com\n\nChange-Id: Ifd533eb8839a254b0d3a5d04fc5a2905afdfc89e\n"
    },
    {
      "commit": "9481684560b2815d2706512086bb36467ef6acc0",
      "tree": "e6258e3075f56533df3ec11cf1443a0d1882b17d",
      "parents": [
        "bc622ed7c3f9ead17c8aede3ccc10babf0b8e0fa",
        "e05575e9c36850d8cfe49396ac9a1372511b12bf"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Oct 31 23:30:57 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 31 23:30:57 2014 +0000"
      },
      "message": "am e05575e9: am a8d83d63: Merge \"Layer changes\" into lmp-mr1-dev automerge: a51fba0\n\n* commit \u0027e05575e9c36850d8cfe49396ac9a1372511b12bf\u0027:\n  Layer changes\n"
    },
    {
      "commit": "0e89e2b7bcb2c035e8cee77f93120e7c5617f8d2",
      "tree": "8fcd1f768f08fbeb2cd13425a2bf15b7670428f2",
      "parents": [
        "141823ec6313d9545b8354ea1e3e017a1da3cfa8"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Oct 31 14:49:06 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Oct 31 15:30:10 2014 -0700"
      },
      "message": "Layer changes\n\nBug: 17208461\n\n* Switch Layer to be VirtualLightRefBase instead of\n  Caches\u0027 side-channel ref-counting\n* Include active layers in gfxinfo dump\n* Run gfxinfo dump on the correct thread\n* Dump gfxinfo on Layer creation failure\n\nChange-Id: I28d195699e2334518e215ab28c7a17355aee9678\n"
    },
    {
      "commit": "eaab65f49d320f0689ee52a55bb768907e5e6928",
      "tree": "e164cd95b6dc369cf32fd6fad185157be7329154",
      "parents": [
        "f949f9e96e868247f58a0f1c234514184c3462a5",
        "97054254d4c8eef66538814e1d5def776ceba97a"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Oct 30 19:20:17 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 30 19:20:17 2014 +0000"
      },
      "message": "am 97054254: am 141823ec: Merge \"Be more conservative about current buffer\" into lmp-mr1-dev automerge: a27e1a3\n\n* commit \u002797054254d4c8eef66538814e1d5def776ceba97a\u0027:\n  Be more conservative about current buffer\n"
    },
    {
      "commit": "950ff1b88cc1330f8e80d62ed3aa15bee6be0556",
      "tree": "5d51f8cafc49747128a34a97f86d01f92e5b63d6",
      "parents": [
        "e67b8d28294d9af440d2ea23f1b2c68dfcba8b1b"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Oct 27 12:58:47 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Oct 27 13:23:20 2014 -0700"
      },
      "message": "Be more conservative about current buffer\n\nBug: 18065565\nChange-Id: I0b9c85ecf384ebe525e3a38803ab77d7ee37f33a\n"
    },
    {
      "commit": "675a518d5aca3092bfdd438f3f40bfdc3640cb80",
      "tree": "d050d6e20ac7deb77aacdbbcf54c3eddbea7a8d4",
      "parents": [
        "8bc1ad937b4e753edf7a62cb96dade0f4c4fe0a3",
        "b64e4372bb60bdce75e2af7d0b94efe92d94ac6a"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Oct 23 22:23:10 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 23 22:23:10 2014 +0000"
      },
      "message": "am b64e4372: am 82572cc4: am badac04d: Merge \"Add some free zoom to lockHardwareCanvas\" into lmp-mr1-dev\n\n* commit \u0027b64e4372bb60bdce75e2af7d0b94efe92d94ac6a\u0027:\n  Add some free zoom to lockHardwareCanvas\n"
    },
    {
      "commit": "1125d1fa92ab9f3b8315bbfb72e038b62dfd454b",
      "tree": "b4a292e191bc815bb658355f879178706ed3f3e9",
      "parents": [
        "9b67a1a232dc0e1cda346271c3a9d118228001ee"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Oct 23 11:02:19 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Oct 23 13:59:47 2014 -0700"
      },
      "message": "Add some free zoom to lockHardwareCanvas\n\nBug: 18099195\n\nDon\u0027t use EGL_SWAP_BUFFER_PRESERVED on surfaces that will\nnever benefit. Also clean up some confusing naming\n\nChange-Id: I674ca64e0464a3282cff79e5ecd350d08f47c014\n"
    },
    {
      "commit": "7ab73f1e983cf2be077d147d0542974a8f768431",
      "tree": "a131b368015eff93a4a302193ea1eadc76c50fbe",
      "parents": [
        "013ccb64302e18d4b6461351448a1fd6b9a7c53d",
        "76f24bde7816dd97ed2375ec41c9817be0330d9f"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Oct 21 23:34:46 2014 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 21 23:34:46 2014 +0000"
      },
      "message": "am e73a54f3: am bf463af2: Merge \"Surface:lockHardwareCanvas\" into lmp-mr1-dev\nautomerge: 76f24bd\n\n* commit \u002776f24bde7816dd97ed2375ec41c9817be0330d9f\u0027:\n  Surface:lockHardwareCanvas\n"
    },
    {
      "commit": "bb2d0cc7e1d487f7021b1f9ec0c6740e41b535f2",
      "tree": "661b6c6d833d545fc3f91fab7810ab73febc21a5",
      "parents": [
        "ea6f0ae86d62cff88d63b926578c588a956d0512"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Oct 21 10:09:36 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Oct 21 13:23:56 2014 -0700"
      },
      "message": "Surface:lockHardwareCanvas\n\nBug: 17440886\n\nChange-Id: I1f2d98c63ec1a2814c2258cf7e0096139263770a\n"
    },
    {
      "commit": "2dc236b2bae13b9a0ed9b3f7320502aecd7983b3",
      "tree": "0fdb6c210ba1cba9397252a69d05fdf72e6f35a9",
      "parents": [
        "6cbb42186e990c401da1e1dbc465fd58fde158a1"
      ],
      "author": {
        "name": "Tom Hudson",
        "email": "tomhudson@google.com",
        "time": "Wed Oct 15 15:46:42 2014 -0400"
      },
      "committer": {
        "name": "Tom Hudson",
        "email": "tomhudson@google.com",
        "time": "Wed Oct 15 15:51:39 2014 -0400"
      },
      "message": "Clean up physical coupling\n\nNarrow the use of #include directives in hwui, replacing with forward\ndeclarations where straightforward. Speeds compiles; doesn\u0027t do any\nrestructuring of code.\n\nChange-Id: Icac2baffb5896f55d8c6718e9bd9d4bfa02d3ca0\n"
    },
    {
      "commit": "786afcb3eec18315ec54987a08814ff28f13d09f",
      "tree": "17a0b148ab9591401c091414d78d6bfd1fdfd14a",
      "parents": [
        "b7af00f2b14e9f8333e3518aa81a15502858ea11"
      ],
      "author": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Thu Sep 25 02:41:29 2014 +0200"
      },
      "committer": {
        "name": "Jorim Jaggi",
        "email": "jjaggi@google.com",
        "time": "Wed Oct 08 18:30:54 2014 +0000"
      },
      "message": "Trim graphics memory when closing the shade\n\nGraphics memory usually gets trimmed in applications when the\nactivity goes into the background. We use quite a lot of graphics\nmemory when the shade/lockscreen is open, and some of them never gets\nfreed unless the recents activity is closed, because we don\u0027t have\nthese activity-trimming-heuristics for the shade. This change\nproactively trims the graphics memory when the shade gets closed or\nwhen the lockscreen is hidden, to emulate the same heuristics as for\nactivities.\n\nThis change also adds trimMemory on RenderThread to systrace to\nverify that no jank is introduced with this change.\n\nThis change immediately saves around 10-30 MB on an xxhdpi device\nafter the shade is closed.\n\nBug: 17581375\nChange-Id: I4fb622efb51815fe08187be97ba15d012d4de5d4\n"
    },
    {
      "commit": "749906b468912dab7bf69a86e852deac3e80b0cc",
      "tree": "f5b80480964d2472abe257bb5c6273b8e1a57136",
      "parents": [
        "a79caa53405ea3efdd77d59ea7aa6dd64ecf09d3"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Oct 03 15:02:19 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Oct 03 15:02:19 2014 -0700"
      },
      "message": "Cleanup DeferredLayerUpdater\n\nBug: 17765082\n\nDeferredLayerUpdater had fallen behind RT updates. Re-snap to\nlatest expectations, ensuring to call requireGlContext() prior\nto detachSurfaceTexture to avoid leaking SurfaceTextures\n\nChange-Id: Ic65fb9831e5284f658866da8da9ad5af1d227699\n"
    },
    {
      "commit": "651486d0186755f30f08d17126a61bf7127cba96",
      "tree": "9652f71d7957cd74be6218b53d8efc10daa7dce3",
      "parents": [
        "ccfa1a979901f2b459da736e0ad7f34ae193bb5e",
        "284b24358410cb0200e525a5ba36994090c83f20"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Sep 19 15:31:17 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 19 15:31:18 2014 +0000"
      },
      "message": "Merge \"Fix garbage showing up beneath dialogs\" into lmp-dev"
    },
    {
      "commit": "284b24358410cb0200e525a5ba36994090c83f20",
      "tree": "6251ddc72a3e29f68a94159b89539acf90b30a5a",
      "parents": [
        "c1e1550bf489b5fafff70154232c24bc5026b7df"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Sep 18 16:05:35 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Sep 18 16:05:35 2014 -0700"
      },
      "message": "Fix garbage showing up beneath dialogs\n\nbug:17463894\n\nFixes the setViewport method to immediately affect the return values\nof getViewportWidth/Height methods.\n\nAlso works around tiling extension issues observed on first frame\nafter window resize by disabling tiling for that frame.\n\nChange-Id: Ie172d572d20d74a1be9cc58ad389af2cffa0e4b6\n"
    },
    {
      "commit": "2cdbc7d2283aae3d77b12c8fdbba8ca4bd3db5ea",
      "tree": "a129c07e75038b92257f5c6d16eb5dc13c79f8d6",
      "parents": [
        "9077cbc30e6c71c8d103ae44b0c30b765e42f66b"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Sep 17 16:06:36 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Sep 17 16:09:57 2014 -0700"
      },
      "message": "Special case EGL_BAD_SURFACE\n\n Bug: 17516789\n\nChange-Id: I3dcb10360c2aef6326f7dbbff6815866d4c143b6\n"
    },
    {
      "commit": "ec845a215e343cdb3b2e4c7b6aff7b24beb0236b",
      "tree": "270a6f8ff4a8c6c03c207ebc6fca85168efc25b8",
      "parents": [
        "c237555c6cb89c347acf13eba45b875946473501"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Sep 05 15:23:38 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Sep 05 15:23:38 2014 -0700"
      },
      "message": "Fix race condition\n\n Bug: 17372309\n\n AnimationContext::startFrame() happens both with and without\n the UI thread lock. Pass the TraversalMode into it so\n that ThreadedRenderer\u0027s subclass can correctly decide\n when it is safe to push over mPendingAnimatingRenderNodes, as doing\n so outside of the lock is Very Bad.\n\nChange-Id: Ife5dd3a2b46b0a207cd9234c159a674afdbf5efd\n"
    },
    {
      "commit": "443a714fa7c0dd07fee3527cc5bc3d3ca1fb7d44",
      "tree": "4e1fd44948c6bc7324d6e3cb66af261f864530e5",
      "parents": [
        "2388750612b1fe54d31a47e0a40c1e6cf5a0cedd"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Sep 04 17:40:05 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Sep 04 17:40:05 2014 -0700"
      },
      "message": "Yet more layer tracking logging\n\n Bug: 17208461\n\nChange-Id: I55e7d0921eb565867e966d68b798b7b92c391b55\n"
    },
    {
      "commit": "e2478d45ccbe5b6abb360ac9d44771b5f4a50bde",
      "tree": "f66b0980340a65a83bfd790bd63dc6b179221790",
      "parents": [
        "3215da25dd24c9570a90a6151b692e5fd38fbbc7"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Sep 03 16:46:05 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Sep 03 17:37:59 2014 -0700"
      },
      "message": "Fix some wrong-thread issues around animator management\n\n Bug: 17372309\n\n Fixes a case where UI thread and RT thread both used the same method\n which wasn\u0027t safe for either of them.\n\n Adds additional assertions \u0026 logging in unusual circumstances to\n try and track down where the issue is occuring from.\n\nChange-Id: I93d31a6fd0c5927259b67bdf96a475944226eee6\n"
    },
    {
      "commit": "17035b0211a3c9d45ea46a99217a6acbe76e8fbe",
      "tree": "0dc5117cec7ace03afc6dc817d9865752c6116f0",
      "parents": [
        "6e31e0f3d1ca8579e75ee1cfe4ac7c30c525f946"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Sep 03 07:39:53 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Sep 03 11:13:53 2014 -0700"
      },
      "message": "Have destroy call freePrefetchedLayers\n\n Bug: 17208461\n\n There\u0027s a potential race condition between HardwareRenderer.destroy()\n being called (which calls destroyCanvasAndSurface()) and the renderer\n being finalized (which is what calls freePrefetchedLayers), during which\n time it\u0027s possible we get a TRIM_MEMORY_COMPLETE and destroy the EGL\n context.\n\n Fix this race condition by moving stopDrawing() and freePrefetchedLayers()\n into destroyCanvasAndSurface() where they should have been in the first\n place.\n\n Also, if we hit the assertion failure, dump the current state of\n Caches to try and provide more context for the failure.\n\nChange-Id: Ife0ba3562041e8b08e87e3e13640472b3004eed6\n"
    },
    {
      "commit": "1661715d4066a557ab0877271d62762579a38fa9",
      "tree": "0816f13be7a5286b6d34ad8068edaf2f486f4420",
      "parents": [
        "56d3cb3013f06e3fd3f99a63d071dc0a72c92af9"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Sep 02 15:44:14 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Sep 02 15:44:14 2014 -0700"
      },
      "message": "Implement TODO\n\nChange-Id: I551ad0dab6356baa4c7787718b54d5b7337a3f26\n"
    },
    {
      "commit": "dff9957cc22a1174a4cf91de6609c50934d29434",
      "tree": "ca42e37a0d953f48ea398fee0749393129a0ac45",
      "parents": [
        "e11ac78ccd907159f2b75fd3f90dd59c279ae11e"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Aug 29 09:59:43 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Aug 29 09:59:43 2014 -0700"
      },
      "message": "Free prefetched layers on TRIM_MEMORY\n\n Bug: 17208461\n\nChange-Id: I831c10d29d5920274b90e11a67d6cd106972a058\n"
    },
    {
      "commit": "998a6d81896df8b662cc10ddeb35087b78b38d72",
      "tree": "33af22fd2b087c8935fc2f6b4b03a71495ed83ef",
      "parents": [
        "e9a204f04465c26a32a15c237b985def8c2b4a90"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Aug 28 15:35:53 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Aug 28 15:55:26 2014 -0700"
      },
      "message": "Track buildLayer calls, destroy if unused\n\n Bug: 17208461\n\nChange-Id: Ibdb104a493285d77a6891c5e74e38a52c7014da9\n"
    },
    {
      "commit": "4c5a27b5f667ebc7cb2b188655820ad3fddedb52",
      "tree": "a8374af7dbedfc25d0e972876869fc7b445b708b",
      "parents": [
        "040a7f0526532995a072a0473483e69b6575ac72",
        "119907cd2575c56b1ebf66348b52e67aaf6a88d8"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Aug 28 01:38:57 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 28 01:38:58 2014 +0000"
      },
      "message": "Merge \"Animator stuff\" into lmp-dev"
    },
    {
      "commit": "119907cd2575c56b1ebf66348b52e67aaf6a88d8",
      "tree": "9990e37a560021560316ac2cfc6cf4c64df9cb92",
      "parents": [
        "1698297daf8068bc9e6971d43744d48f1672bab2"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Aug 14 09:02:01 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Aug 27 17:44:25 2014 -0700"
      },
      "message": "Animator stuff\n\n Bug: 17228458\n\nChange-Id: Id884a429a512f9cd2be0ed16dbd0f10e92b4440d\n"
    },
    {
      "commit": "1d4774233304c484673e2af2c1de2ab41021c979",
      "tree": "68f78af2c5f7562d7bfd726f7b793831cca4d8b7",
      "parents": [
        "780617faa2c9b3dbcb902da06a486149c5bddbb3"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Aug 26 17:30:15 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Aug 26 17:30:15 2014 -0700"
      },
      "message": "Crash instead of leaking layers/textures between GL contexts\n\nbug:17208461\nChange-Id: I4d58f301cf0f5e8145e808a5d6ade4de7801970b\n"
    },
    {
      "commit": "9eb9f6f8cbbbd87d45da8071aa54cb066a797723",
      "tree": "aa193a48886ab29dd158028a48475cc63e43383d",
      "parents": [
        "94f6878bbd98753aa60fd80f5a73b5f198579b04"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Aug 21 11:23:05 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Aug 21 11:23:05 2014 -0700"
      },
      "message": "Don\u0027t run animators in buildLayer\n\n Bug: 17172689\n\nChange-Id: Ib47d589c002543327fa336718440f9f8c95524e0\n"
    },
    {
      "commit": "3e8249568cc428296ac76c7ddce3f0382d40fe5b",
      "tree": "24dee065901ece0b80bac18a03665607031ab012",
      "parents": [
        "730e9bceb746e6c50b87cc5a695eb73fea27686e"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Aug 20 10:08:39 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Aug 20 15:54:07 2014 -0700"
      },
      "message": "Implement full View.buildLayer\n\n Bug: 17152292\n\nChange-Id: Ia3cc2aadf72fe14517f50762fc634794df51ad5a\n"
    },
    {
      "commit": "69e5adffb19135d51bde8e458f4907d7265f3e23",
      "tree": "022fc23512ae5adfbe3f86351305bc9f4538a68a",
      "parents": [
        "e222e359a0aab985488a711f6edb76820fe8c6df"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Aug 14 13:34:01 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Aug 15 00:59:44 2014 +0000"
      },
      "message": "Define shadow casting behavior within layers\n\nbug:15860114\n\nSavelayers and HW layers both now support shadow casting.\n\nFor save layers, the light source should always be correct, for HW\nlayers, the light source position is set when the layer is created,\nand updated when it is resized.\n\nChange-Id: Ie85567dd43c2bb0a0b08fd0bd4db41efa793ac2b\n"
    },
    {
      "commit": "21be43e142a6fcb3283d7b2da14eb39b690cf643",
      "tree": "a2065bc793185d1fc364d740412428e7d8bafe94",
      "parents": [
        "9fde9a250fffc15c6bcdfc985de12c8646a9813c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Aug 14 10:25:16 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Aug 15 00:36:11 2014 +0000"
      },
      "message": "Fix hwuitask \u0026 RT priorities\n\n Bug: 15993695\n\nChange-Id: Ib6f07237cb834e8d10f3074f8fb206d27f91859a\n"
    },
    {
      "commit": "cd3a22cfec09c065d0667dd044c0788912e82465",
      "tree": "37f6d66362a53a9e863a51e8d56007a39ae7c15b",
      "parents": [
        "b287c9388e6d978d88854376d7f29fee3708276c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Aug 06 13:33:59 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Aug 06 20:39:47 2014 +0000"
      },
      "message": "Don\u0027t start RenderThread to do trimMemory\n\n Bug: 16825138\n\nChange-Id: I35f57898b14bc8526c3d93a3003bca6f5a3d7fbe\n"
    },
    {
      "commit": "738ec3aace180018560998d1c2cdeb9ddde5fbfa",
      "tree": "d2ec7d0e7e83fc3f81aa5f33e70b48425b67b2b3",
      "parents": [
        "8020721059de3ab7a0d9276fce8a19c97e373421"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jul 25 18:25:02 2014 +0000"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jul 25 18:26:36 2014 +0000"
      },
      "message": "Revert \"Dump RenderThread stack on unresponsive\"\n\nbug:16563871\nbug:16565900\nbug:16555847\nbug:16551643\n\nThis reverts commit ca66e06b9db6e6c921662886e4b7ddd02ac92280.\n\nChange-Id: I23e8d4eaf828b1b298126ba5f36e4e8e7451706a"
    },
    {
      "commit": "058fc640017c90120c599d378a4cbc55668b05b7",
      "tree": "37f480e607d1f39de8cec06b205eb0e146cc9551",
      "parents": [
        "753d849b2ad14cdacfe6b194d8aa7fc27874e385"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jul 23 18:19:28 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jul 24 16:41:13 2014 +0000"
      },
      "message": "Connect shadow style attributes to renderer\n\nbug:15859361\n\nMoves lighting info out of StatefulBaseRenderer, since it\u0027s not useful\nat record time, and only used by OGLR.\n\nChange-Id: I7ab065d02d9304afad1dc4c48597a7a621366f8e\n"
    },
    {
      "commit": "73b7a4db4116774156fda3a510cc3afa14be9ffd",
      "tree": "928ca1b91bd9e5e8d88ce58069a6d0027d37f965",
      "parents": [
        "df8f55948a20a0f1673274ea904eeaf8031c7d57"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Jul 23 14:54:04 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Jul 23 22:28:44 2014 +0000"
      },
      "message": "Dump RenderThread stack on unresponsive\n\n Bug: 16408405\n\nChange-Id: I4ba4836fd1451fb8ba77c34cdb843d3cb4217bb8\n"
    },
    {
      "commit": "5cdb8f998c58a2226112b36e4c391866346e5e17",
      "tree": "a040107db60baec9e608bf05495fb825407e8cd4",
      "parents": [
        "69eef8a0d250ae1b50b510499014e109bd2c6112"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Jul 17 11:00:36 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jul 17 18:12:01 2014 +0000"
      },
      "message": "Fix logging\n\n Bug: 16357287\n\nChange-Id: Ic14e32c941e42ab1f1ed51ff8ed7185979e57a55\n"
    },
    {
      "commit": "0a97330b98dd633b58dcfff405d94476c89e867d",
      "tree": "857c44bf9e505e947cc441b234d7606d5df53aa0",
      "parents": [
        "945654188ef8b5ee1c404bd950a9ef45defa43d1"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Jul 16 13:29:45 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Jul 16 13:55:14 2014 -0700"
      },
      "message": "Fix root RenderNode damage calculation\n\n Bug: 15888445\n\nChange-Id: I281ec9271c9889673dcdfcb6d31e341a7b47b7de\n"
    },
    {
      "commit": "dcba6725e8b9d3eba9ad7a01258d6aa974feafba",
      "tree": "994a519302533fc1073eeafda8bf74933531dd56",
      "parents": [
        "114c68cec40a995fb6f3ef0ab110ee8b59ab0cba"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jul 08 13:59:49 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jul 08 14:14:55 2014 -0700"
      },
      "message": "Fix layers lifecycle issues\n\n Bug: 16118540\n\n Fix an issue where we could have a reference to a Layer after\n the GL context was destroyed\n\nChange-Id: I7bfd909d735ca6b942ebe188fc10099422eb6d95\n"
    },
    {
      "commit": "3c2b7fa8c584c5ed56f1bd6ad53f2e87f0a6eb44",
      "tree": "35cb70afd4fbf892716f65c4a8b1bff49eb33714",
      "parents": [
        "32fb6307de7c3ee9399a39dc6734f1c82ffd1dcb"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Jul 07 09:16:54 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Jul 07 18:05:00 2014 +0000"
      },
      "message": "Add missing requireGlContext\n\nChange-Id: I7100e5e9986f502f66a23ecea07a6057522c43ac\n"
    },
    {
      "commit": "f47a594f5250b1914c36423ee6b371f0b8db09d0",
      "tree": "f86289c7b515c2111fde3ce11e7fca384bc2f603",
      "parents": [
        "dd59aba6c7e142eae14d5f29ea6873a5b9790174"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Jun 30 16:20:04 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Jun 30 16:36:26 2014 -0700"
      },
      "message": "Fix onTrimMemory for HardwareRenderer\n\n Also fixes detachFunctor possibly drawing after return\n\n Bug: 15189843\n Bug: 15990672\n\nChange-Id: I64c48cb674c461a8eeaba407b697e09f72c98ce3\n"
    },
    {
      "commit": "918ad523b2780e0c893f3d2a32d4ec13f2a7e921",
      "tree": "a10eb15752acf14bbf50b6e250ca8e8beeb2f736",
      "parents": [
        "81af3aef9a0d015311f6c97e318c81092c74eb47"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Jun 27 14:45:25 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Jun 27 22:34:16 2014 +0000"
      },
      "message": "More cleanups\n\nChange-Id: Id5967944b949a2aec57e4fe9fdcdc04c11b8c35a\n"
    },
    {
      "commit": "68bfe0a37a0dcef52abd81688d8520c5d16e1a85",
      "tree": "b67e0671dba8221a16fcf880daeaf1e271499e9f",
      "parents": [
        "6507f2e03a90244e08fb62f9b55653ba3230d0b7"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jun 24 15:34:58 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Jun 26 10:45:43 2014 -0700"
      },
      "message": "Animator refactoring \u0026 fixes\n\n Tweaks animators to have less unnecessary refcounting\n\n Pull animator management out into seperate class\n\n More control to tweak animator lifecycle, such as doing\n Java-side handling of start delay by attaching but not\n starting the animator\n\nChange-Id: I4ff8207580ca11fb38f45ef0007b406e0097281c\n"
    },
    {
      "commit": "cd028f336e36b22dbe8cf623eb5bd2361314495c",
      "tree": "c878aab479fa4b75af024d9169aae04391569700",
      "parents": [
        "5444f3cd92ac42f72f86ba5bcd554e0d88bc265b"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jun 24 08:44:29 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jun 24 08:44:29 2014 -0700"
      },
      "message": "Fix contants; RT-enable WebView pt2\n\n Bug: 15838537\n\n * Fix kSync_UIRedrawRequired constant value (woops)\n * Tell CanvasContext that WebView is now rt-safe\n\nChange-Id: Idf15cf21115c2ca24b8ccd00025e8502864cd87c\n"
    },
    {
      "commit": "6b39324d7756f1a36faf275941aabb19ee6bbb53",
      "tree": "98943e299933334edf788772e773fe3dfc11479e",
      "parents": [
        "287c0361877057e50190cc0d7224e5bb2a7c4955",
        "3b20251a355c88193c439f928a84ae69483fb488"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Jun 23 22:32:51 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 23 21:44:43 2014 +0000"
      },
      "message": "Merge \"No-fail invokeFunctor\""
    },
    {
      "commit": "3b20251a355c88193c439f928a84ae69483fb488",
      "tree": "33c878ebacf17cf03d089404474fa66ca041ffb9",
      "parents": [
        "97a6c20a6a52c9429ed2c8837086f3003e5da274"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Jun 23 13:13:08 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Jun 23 15:26:49 2014 -0700"
      },
      "message": "No-fail invokeFunctor\n\n Bug: 15513308\n Bug: 15449247\n\nChange-Id: I13a29f9c8d4975cdda6dcb33b6332c2555ff0f7c\n"
    },
    {
      "commit": "61606cec5ceb705910dec94222b22e66a0365094",
      "tree": "7d34712993b8a9a47f711e7acad8234d56d1aae5",
      "parents": [
        "ed81ebc3c55e344ff511d283eaa8af31db9503c3",
        "826b56448691221e4cfe2f19a09c3d8790f78d2c"
      ],
      "author": {
        "name": "Bo Liu",
        "email": "boliu@google.com",
        "time": "Mon Jun 23 21:16:07 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 20 21:00:34 2014 +0000"
      },
      "message": "Merge \"Enable asynchronous RenderThread for WebView\""
    },
    {
      "commit": "826b56448691221e4cfe2f19a09c3d8790f78d2c",
      "tree": "c3a45d57cec6f34358d089d7d772badbb010f176",
      "parents": [
        "f5fb7035c4b90ec288daaf7d2ff0df025a4ffc79"
      ],
      "author": {
        "name": "Bo Liu",
        "email": "boliu@google.com",
        "time": "Tue May 13 16:47:27 2014 -0700"
      },
      "committer": {
        "name": "Bo Liu",
        "email": "boliu@google.com",
        "time": "Mon Jun 23 11:26:03 2014 -0700"
      },
      "message": "Enable asynchronous RenderThread for WebView\n\nBUG: 12179257\n\nChange-Id: Ib7358dc84a0a58020d178d10b324b9631848c06d\n"
    },
    {
      "commit": "a7090e0cfd7c719a6d4c03aae34f5db98754cbdd",
      "tree": "7bfae2588126476042f33b9dd01ca0b9cf368e2e",
      "parents": [
        "104ef50048a1d12f323b3e70ccc28dd509d3ea24"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 20 16:01:00 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 23 09:57:07 2014 -0700"
      },
      "message": "Update \u0027DisplayList\u0027 vs \u0027RenderNode\u0027 naming in several places\n\nChange-Id: I635c6627d098b661fb9b0ba1bd42fa6d7277d287\n"
    },
    {
      "commit": "734df4b4271e90e320f3ff37b4b0d49e92cb1e3c",
      "tree": "bddbbf4abeb2f86d560a7747c993966935fe237d",
      "parents": [
        "6b2df21ecacfa6826a85cabdf8d6fe0e81fe11d9"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 16 12:05:54 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jun 17 10:15:46 2014 -0700"
      },
      "message": "Interrupt canvas before invoke\n\nChange-Id: I5b818958f6255c594339bd10d9efa99e9e2c00d4\n"
    },
    {
      "commit": "816f71b7e0dc263362e9fc8d251c8d1944bff17c",
      "tree": "7f8dc82b247276502976e80945f5b86716d20b7e",
      "parents": [
        "c0daabbec3da4a39457ce62a15a909983a2368f1",
        "25fbb3fa1138675379102a44405852555cefccbd"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Jun 13 02:32:19 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 12 05:34:42 2014 +0000"
      },
      "message": "Merge \"Move LayerType to RenderNode\""
    },
    {
      "commit": "25fbb3fa1138675379102a44405852555cefccbd",
      "tree": "510d62715f870f85fc4eea8a781c0265e7eebae5",
      "parents": [
        "a447d29c65fb811cd184775a3476101a1cede929"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Jun 12 13:46:45 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Jun 12 19:25:33 2014 -0700"
      },
      "message": "Move LayerType to RenderNode\n\nChange-Id: Icb79a5015cb0362b1f3a66d09007450730135a97\n"
    },
    {
      "commit": "546f353e7f562fdbcf59980bcb7dc11567658aa3",
      "tree": "1fdcdedb18636797fd55868041e538a9d068d09d",
      "parents": [
        "cc8f7ae682f3ce1ed82a7850433d4502245bdcb4"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Jun 10 12:29:14 2014 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Jun 10 12:29:14 2014 -0700"
      },
      "message": "hwui: 64-bit compile issue\n\nChange-Id: Ic3e3dbc6cde4bc58b23a8ab267b0868f370ad149\n"
    },
    {
      "commit": "e4267ea4f20740c37c01bfb6aefcf61fddc4566a",
      "tree": "0d00c8bff43f8b0cbe4284e51299f5ca128c83c3",
      "parents": [
        "79c7de77a7da9cbcb9428ab6203987feb35a427f"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jun 03 15:53:15 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Jun 04 12:21:26 2014 -0700"
      },
      "message": "Even FASTER damage calculations!\n\n * Now with more native!\n * Less matrix math thanks to bulk-property-update support!\n * Zero JNI on the View.damageInParent() path!\n * Fully aware of RT-driven animators!\n * Likely full of new and exciting bugs!\n * But it also fixes at least 1 existing invalidate bug!\n\nChange-Id: Ie0773f85a60850ff2668370c58defef2e8aa079f\n"
    },
    {
      "commit": "d72e0a339b54af0c4e731513bbad120dff694723",
      "tree": "ca8ac198de9a0cfeeae1e9e8039e35523e7810c3",
      "parents": [
        "aee470c0232afdac4256d13020fa0cf04f30395c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu May 29 18:56:11 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri May 30 12:19:33 2014 -0700"
      },
      "message": "Re-jigger layers\n\n Bug: 15185239\n Bug: 15238382\n\n Make DeferredLayerUpdater ref counted so that\n HardwareLayer:finalizer() works non-crashily on\n leaked layers\n Give DeferredLayerUpdater the ability to have a layer destroyer\n set so that leaked layers can still be recycled on the\n RenderThread\n Order layer updates based off of pushLayerUpdate() calls to fix\n issue with nested layers\n\nChange-Id: I4449cee607f7e5126e02fed7464cf48038e3dfdf\n"
    },
    {
      "commit": "aee470c0232afdac4256d13020fa0cf04f30395c",
      "tree": "5fc37aedf16ce9aa5b6283d0c9b5665954f191f3",
      "parents": [
        "e2960b6fd2d31f8a729ce9d180bffc947c0d6464",
        "fe5e7b7346a54537b980796ceeca66bfdbd05561"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu May 29 22:23:40 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 29 22:23:41 2014 +0000"
      },
      "message": "Merge \"Enable debug stuffs\" into lmp-preview-dev"
    },
    {
      "commit": "fe5e7b7346a54537b980796ceeca66bfdbd05561",
      "tree": "4036571ea103cd41fbd5fe3a805191c1bef9898c",
      "parents": [
        "45d01929291eba56e1bce582192941446b86bf5a"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri May 23 17:42:28 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu May 29 15:00:29 2014 -0700"
      },
      "message": "Enable debug stuffs\n\n Bug: 14596762\n * dumpsys gfxinfo implemented\n * profile GPU visual_bars implemented\n\nChange-Id: Icb948a9d5af5989b5615504d0d76ade64b93ef5b\n"
    },
    {
      "commit": "c8affe0e1b1f3f63b12477f832a1a66019ac0df8",
      "tree": "a47dd7306b9979581a6a9d84b48d7b2e2813a632",
      "parents": [
        "45d01929291eba56e1bce582192941446b86bf5a"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu May 29 14:50:37 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu May 29 14:50:37 2014 -0700"
      },
      "message": "Re-enable atlas\n\n Bug: 14590563\n\nChange-Id: I04ed5bf1b2654dab4a65c1e43faaeba32459870f\n"
    },
    {
      "commit": "e1628b7c6fc3822fa83cf02028ce8ad67abb0afe",
      "tree": "096479f24da83593cab3505bde3aa8688e3b8f10",
      "parents": [
        "ec41d7ababd3145b7f19e5bd69480e9436cb5c7c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri May 23 15:11:19 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri May 23 15:40:14 2014 -0700"
      },
      "message": "Implement FlushCaches TODO\n\nChange-Id: Id05429e98ffe0858275b32c41fb215c1d8d930b2\n"
    },
    {
      "commit": "a5dda645da738da7b4ae15e28fa7d93d3b04b94f",
      "tree": "5ce51af907c91030662b69c37e8ece7a63e041ed",
      "parents": [
        "d30241541c3adcb126bb263ad8596e7902a6b5ae"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu May 22 15:43:54 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri May 23 12:56:38 2014 -0700"
      },
      "message": "Bag of scheduling tweaks\n\n Bug: 15118640\n\n * Prevent over-stuffing the queue by dropping frames\n * Prevent double-drawing in one pulse by RT by deferring\n   vsync registration until post-draw so that it catches\n   the next vsync pulse instead of the current one\n * Bias vsync race condition towards the UI thread\n * Fix queueDelay to actually work\n\nChange-Id: Ibf584258bd93ebcbba058bd976dc8b307f1c6155\n"
    },
    {
      "commit": "797b95b26bbb7557678af78b9a2a61830158920f",
      "tree": "b2e895c064c511446b2709160c9d614819f871b2",
      "parents": [
        "d6a91b0bb64b17dcf4ae635f428dfd4ad310f73e"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 20 18:10:25 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed May 21 13:50:29 2014 -0700"
      },
      "message": "Define light position (using new lighting spec) in Java\n\nAlso updates the relative shadow strengths.\n\nChange-Id: I6cac7275d38df98aea9f0dda463cd7207102986a\n"
    },
    {
      "commit": "cdfeef6624613ca06fe8a7edfb92608afb0499ee",
      "tree": "fa9b8d5665e2d98e5dfd3f1d15203e00bb24ca6a",
      "parents": [
        "54b6fd0cbe48fc0980da0617352785c973c60c86"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed May 14 16:35:46 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed May 14 23:59:01 2014 +0000"
      },
      "message": "Disable texture atlas\n\n Bug: 14952384\n\nChange-Id: If38b3e4c08c2c3dd9c00ae9e6e8c10e208e737d1\n"
    },
    {
      "commit": "66f0be65a1046f54ddce0498b242c1fa0776b1ea",
      "tree": "87a356caef9f007ac0919504dc8dcb45831a76ee",
      "parents": [
        "515396a6b5ee3eab57fed87ee0f4aa63783e2e61"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue May 13 13:39:31 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue May 13 14:54:42 2014 -0700"
      },
      "message": "Wire up texture atlas\n\n Bug: 14590563\n\nChange-Id: I2dffbc089dc801f5fb2d1c8fd38e1c71d160e110\n"
    },
    {
      "commit": "ef27453cf71e331e4076df5e5c665b06d5c3e050",
      "tree": "aebb0a1e9f798f064ed92bedb7865cd10dfbe118",
      "parents": [
        "4f0128fb8fc1e56ead8ba7bccd9fab2ff9c3b29a",
        "832b151465ed81c43e59891d5eebe62128b21fbb"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed May 07 21:48:19 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 07 21:48:20 2014 +0000"
      },
      "message": "Merge \"Cleanup attachFunctor\""
    },
    {
      "commit": "832b151465ed81c43e59891d5eebe62128b21fbb",
      "tree": "b631a4eab7c5b7b7f3d98e808e88bf0965c324cf",
      "parents": [
        "ebb9e69513b690881a5bad7bf45c6f32e0fc7062"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed May 07 14:39:44 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed May 07 14:39:44 2014 -0700"
      },
      "message": "Cleanup attachFunctor\n\n Bug: 13961296\n\nChange-Id: Id48d11bfcc234afd1fd7e4fdd409a50e7208c81d\n"
    }
  ],
  "next": "b6d9211d31d29221501a8f2a33e6ba0fe18d6ef5"
}
