)]}'
{
  "log": [
    {
      "commit": "298a146754e35cbc650aa991ebff1a41eefdbe80",
      "tree": "8c1c847d9c42f13460e3d09e84435f9d4ce2195e",
      "parents": [
        "3e64003641c376573f4809aae79febd0187be81e"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Feb 28 14:07:09 2017 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Tue Feb 28 14:19:44 2017 -0800"
      },
      "message": "Check for spurious wake ups\n\nCondition::wait() can spuriously wake up, so we must guard it with\nanother check to ensure that a given wake was truly due to having\nbeen signaled.\n\nBug: 34592766\nTest: Boot bullhead\nChange-Id: Iaa5a0ca6186aea50c51e2c402ef95d7ba861be92\n"
    },
    {
      "commit": "cd68212f0821e75081375a5af5ef5fce6e45e167",
      "tree": "6613bd6e1c4077530c40ed63742c31b02dc4b987",
      "parents": [
        "0b26adbb8b42168d4fc5ef240b1e2730fcfd5c61"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Aug 09 12:09:03 2016 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Aug 09 12:11:13 2016 -0700"
      },
      "message": "Make updateSurface non-blocking\n\nBug: 30442298\n\nWe already do this for initialize(), fix\nit so that update() is parallel with the\nUI thread as well.\n\nShaves ~7ms off of the 99th percentile on\nNotificationShade open \u0026 close\n\nChange-Id: I1791df495453fb9e1e12362c68e3d20e837e62be\n"
    },
    {
      "commit": "4387190d8ec9fe4e953fcfeb093a644b82cf85ed",
      "tree": "c717cbed2691386f68b6c97ba09d64ac85137871",
      "parents": [
        "fbd93027e4f8024642271652e490653a4d0c2b55"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Aug 01 14:39:24 2016 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Aug 01 16:36:14 2016 -0700"
      },
      "message": "Eliminate recents upload jank\n\nBug: 30342017\n\nUpload recents thumbnails in the\ndead gaps between frames instead of\nat the start of a frame. This eliminates\njank caused by the large texture\nupload.\n\nChange-Id: I507cd286d199109c7a9a1511d68ba5ab5d28069f\n"
    },
    {
      "commit": "33eb07f5759b85a5617f8057d8a335019c7d24dd",
      "tree": "4f8d38df24b8c7c42cffd760fa1ef654b253c859",
      "parents": [
        "b89970e0fb11b71592e10570d387eac3bbb6f6d6"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Fri Jun 10 10:03:20 2016 -0700"
      },
      "committer": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Thu Jul 07 12:55:31 2016 -0700"
      },
      "message": "Add new mode for SCHED_FIFO on UI and RenderThreads.\n\nAdd a new mode, controlled by sys.use_fifo_ui property, that enables the\ntop app\u0027s UI and RenderThread to be SCHED_FIFO. This eliminates almost\nall jank due to scheduling competition with non-UI critical\nthreads. This mode may not be suitable for all devices.\n\nbug 24503801\n\nChange-Id: I7b8a31830ad80f7efa00236928d5476998ed4e00\n"
    },
    {
      "commit": "e94cbc76d560a157c0a0d47181b4ed2a0aadbeb1",
      "tree": "f0f09618a3bcf57851147fb9c4082f99ae023f9f",
      "parents": [
        "a5bbbe55b74d3a835b64fa18959f487da2df967e"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Apr 25 13:03:44 2016 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Apr 26 15:41:43 2016 -0700"
      },
      "message": "API tweaks to PixelCopy and make it public\n\nBug: 27708453\nChange-Id: I81667ce42f9ca1c1a13e1e61299927900845fc84\n"
    },
    {
      "commit": "8afcc76920499d0a384dba1470c5a377f80ed768",
      "tree": "d6c10ca146b7b28daaf18544ed3d338b9ed08946",
      "parents": [
        "5352dda479452c248f87521d6c69c9dd8399ebb7"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Apr 13 10:24:06 2016 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Apr 14 10:39:03 2016 -0700"
      },
      "message": "Revert \"Revert \"Make stopped state a first-class thing\"\"\n\nThis reverts commit eab3f2658aa41d37c3b05d49a2ce4e3f4ed85399.\n\nFixes first-frame issue, mReportNextDraw needs to override\nmStopped\n\nFixes: 28118961\nFixes: 27286867\n\nChange-Id: I5c811759637d08ba9f3b342016d1b3006986d5a2\n"
    },
    {
      "commit": "d2eec0efb2e47b23b2a12ab2967e422f0be49094",
      "tree": "5d409cf631782cee374cd014bb7f5163cee4c769",
      "parents": [
        "68b19f2778989c3f4ae9eb2407f40c97e11fb57d",
        "10dd0585c11dcedb5a271d54e645594f1d215d5c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Apr 12 14:36:10 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 12 14:36:11 2016 +0000"
      },
      "message": "Merge \"Framework-side of SurfaceView#getBitmap\" into nyc-dev"
    },
    {
      "commit": "10dd0585c11dcedb5a271d54e645594f1d215d5c",
      "tree": "eeb6b94cd87202b16d662225b55c8d7940e701fd",
      "parents": [
        "ffdaae004b403714dbf01b47a31065e67eec0177"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Mar 31 16:36:16 2016 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Apr 11 16:00:22 2016 -0700"
      },
      "message": "Framework-side of SurfaceView#getBitmap\n\nBug: 27708453\n\nChange-Id: Ie6fd7eca522d3e6549d8af587c975fd7e6053649\n"
    },
    {
      "commit": "825fa4d5ae7b2907ee1769d09e6333306de2a92e",
      "tree": "26385820dbc923e739d059f9c47197b88634ae22",
      "parents": [
        "cf0cc881ebf2c2f00129dd9e045e23f6bf970d54",
        "eab3f2658aa41d37c3b05d49a2ce4e3f4ed85399"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Apr 11 20:54:35 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 11 20:54:36 2016 +0000"
      },
      "message": "Merge \"Revert \"Make stopped state a first-class thing\"\" into nyc-dev"
    },
    {
      "commit": "eab3f2658aa41d37c3b05d49a2ce4e3f4ed85399",
      "tree": "ca0e0aa6f9e895f7e8dc22e60e0eadb28bc51688",
      "parents": [
        "945961f78a78eced823d5ba78505c781b079703d"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Apr 11 20:49:28 2016 +0000"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Apr 11 20:49:28 2016 +0000"
      },
      "message": "Revert \"Make stopped state a first-class thing\"\n\nThis reverts commit 945961f78a78eced823d5ba78505c781b079703d.\n\nChange-Id: Iebc1d49fac33380233f8785fc39bec6c30a5e714\n"
    },
    {
      "commit": "c724dcf23c5e2ebd22c042a8a6f2424b7e9d5029",
      "tree": "011af96ab684103081b8729bf436b4c8725aa28c",
      "parents": [
        "4a735441e82207e18036be09d0d02c855930938f",
        "945961f78a78eced823d5ba78505c781b079703d"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Apr 08 15:09:40 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 08 15:09:42 2016 +0000"
      },
      "message": "Merge \"Make stopped state a first-class thing\" into nyc-dev"
    },
    {
      "commit": "4a735441e82207e18036be09d0d02c855930938f",
      "tree": "90c9ce594962f8e02988954d500c580d4bf9ed79",
      "parents": [
        "1d16d773b0d2d12301bda68d15adc6953ce68710",
        "a41f2445156fe0bcfde6bd4d813dfc43796a526d"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Apr 08 15:09:24 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 08 15:09:26 2016 +0000"
      },
      "message": "Merge \"Fix a derp\" into nyc-dev"
    },
    {
      "commit": "a41f2445156fe0bcfde6bd4d813dfc43796a526d",
      "tree": "dda02e21dd453eb9f528bf7ace0010447df16d24",
      "parents": [
        "3397c88f7900d8db677204cdbe9e7a5dc26e453a"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Apr 07 16:36:57 2016 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Apr 07 16:36:57 2016 -0700"
      },
      "message": "Fix a derp\n\nFixes: 28074465\n\nI knew I added that flag for a reason...\n\nChange-Id: I6e28237dcd50191769a828bf2646c3a00c14387c\n"
    },
    {
      "commit": "945961f78a78eced823d5ba78505c781b079703d",
      "tree": "770f49272fa8c981be4f0e1d9c1c3fc3726dfdf3",
      "parents": [
        "3397c88f7900d8db677204cdbe9e7a5dc26e453a"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Apr 07 16:02:33 2016 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Apr 07 16:02:33 2016 -0700"
      },
      "message": "Make stopped state a first-class thing\n\nBug: 27286867\n\nWindowManager has committed to stopped state\ncontrolling the lifecycle of the Surface, so\nmake that a first-class thing in HWUI as well.\n\nThis makes it more resistent to things like\na rogue updateSurface() happening while mStopped\u003dtrue,\nleading to bad things down the line. Instead let\nthe surface be changed/updated as often as desired,\nand just block any attempt to draw on that surface.\n\nAlso removes some unnecessary makeCurrent()s, as\nEglManager ensures that we *always* have a valid\nGL context now (using a pbuffer surface if there is\nno window surface set)\n\nChange-Id: Iead78ddebc7997e8fdb0c9534836352f5e54b9bd\n"
    },
    {
      "commit": "51f2d606dcbfba3cc5b03dfea37c1304b91c232f",
      "tree": "110249f497eddafcb33ba8aed6989bd965b2a7da",
      "parents": [
        "3397c88f7900d8db677204cdbe9e7a5dc26e453a"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Apr 06 07:50:47 2016 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Apr 07 14:10:43 2016 -0700"
      },
      "message": "Fix some edge cases\n\nBug: 27709981\n\nThis desperately needs a refactor, but to keep\nthe current (really needed \u0026 nice) behavior of\ndispatching after sync finishes would be difficult\nto handle cleanly without lots of ripping so... #yolo\n\nChange-Id: I831a06c6ae7412a062720d68ecbe3085190f0258\n"
    },
    {
      "commit": "660108075e61d7b7e6c138000890011510d5b079",
      "tree": "0e4ae14950d01a265701b31412dd8dbae3909eb4",
      "parents": [
        "7492e75ba3a6785c183638392f23a92950498922"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 30 14:19:44 2016 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Mar 31 08:40:23 2016 -0700"
      },
      "message": "Expand JankTracker\n\nBug: 27922347\n\n* Dump the full histogram\n* Expand the histogram to have a slow-frame section with\n  large 50ms buckets to raise the cap to 5s to give more\n  insight into system-health\n* Stop excluding first-frame metrics as we want to include\n  those in our global tracking. Automated tests already filter\n  these out by doing resets before running anyway.\n\nChange-Id: Idaba8aad591f59d10a6477b11efc0767ff715083\n"
    },
    {
      "commit": "910beb8f5d9042163e2ad0dbb744d9f147db9604",
      "tree": "83f2bdb523fa6f78ac322b5eca1f0bc332e2fcd2",
      "parents": [
        "95728a5db6595e473acf8f428f238afc2fdbbe80"
      ],
      "author": {
        "name": "Andres Morales",
        "email": "anmorales@google.com",
        "time": "Tue Feb 02 16:19:40 2016 -0800"
      },
      "committer": {
        "name": "Andres Morales",
        "email": "anmorales@google.com",
        "time": "Tue Feb 09 10:40:01 2016 -0800"
      },
      "message": "updates to FrameStatsObserver API\n\n- Rename to FrameMetrics to avoid collision with existing\n  android.view.FrameStats class\n- Make FrameMetricsObserver implementation detail,\n  exposing FrameMetricsListener interface as public API\n  and wrapping in FrameStatsObserver to maintain state\n- Remove dropped frame count call, in favor of passing as\n  parameter to callback method.\n- Move away from raw timestamp access in favor of Metric IDs\n  which represent higher-level, more stable stages in a frame\n  lifecycle and match the categories exposed in the onscreen\n  bars.\n- Support many-to-many Window\u003c-\u003eFrameMetricsListener relationship\n\nChange-Id: I00e741d664d4c868b1b6d0131a23f8316bd8c5c2\n"
    },
    {
      "commit": "f648108f83d4e74811919e9811efb8fcc184b8a3",
      "tree": "a7e20b3298846cd072499a921bfa59d244c717e0",
      "parents": [
        "15d21b3aca1c3eeb3932752194e9f196b546387b"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Feb 02 15:18:23 2016 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Feb 04 11:23:49 2016 -0800"
      },
      "message": "Have RT drive window positioning\n\nBug: 22802885\n\nChange-Id: I6beed5474d3a943b16e9097f7bd61ce3cbd37505\n"
    },
    {
      "commit": "06f5bc70a667a02b14e31d3f53f91d3661e30666",
      "tree": "3de8a009d084a71906aa26506b209fea01ef4471",
      "parents": [
        "0ed21de72134a2b55648104f517e44a2deff17dd"
      ],
      "author": {
        "name": "Andres Morales",
        "email": "anmorales@google.com",
        "time": "Tue Dec 15 15:21:31 2015 -0800"
      },
      "committer": {
        "name": "Andres Morales",
        "email": "anmorales@google.com",
        "time": "Fri Jan 22 12:58:51 2016 -0800"
      },
      "message": "expose hwui frame stats through FrameStatsObserver\n\nChange-Id: I88884bafc8e2f6d7f67a36d3609490e83cf8afd5\n"
    },
    {
      "commit": "465eefb9f31928157158a0f30319d1d95a21a567",
      "tree": "ef27675a2031318d0e8802c4d2640206ab417063",
      "parents": [
        "9e5341f4fe2b7e64a55e057478946546e176358b",
        "4354ae9883ae1282ac457539f46d529bdfa89fec"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jan 19 18:42:21 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jan 19 18:42:21 2016 +0000"
      },
      "message": "Merge \"fix race condition between HWUI cache and renderThread\" am: 2c2b5e8514\nam: 4354ae9883\n\n* commit \u00274354ae9883ae1282ac457539f46d529bdfa89fec\u0027:\n  fix race condition between HWUI cache and renderThread\n"
    },
    {
      "commit": "c0a0e1a66da20a18045d59451b59ec32685bcf18",
      "tree": "a5e3aaf1c605323c8000491358465f77236035e3",
      "parents": [
        "dbf8c17bd20c3c5b4ba99242afa8b714841914d1"
      ],
      "author": {
        "name": "Thomas Buhot",
        "email": "thomas.buhot@intel.com",
        "time": "Mon Jan 18 10:31:58 2016 +0100"
      },
      "committer": {
        "name": "Zhiquan Liu",
        "email": "zhiquan.liu@intel.com",
        "time": "Tue Jan 19 15:00:42 2016 +0800"
      },
      "message": "fix race condition between HWUI cache and renderThread\n\ngetMaximumBitmapWidth() and getMaximumBitmapHeight() of DisplayListCanvas\nneed HWUI cache instance. Since the initialization of the cache is\nasynchronous it may crash if not yet ready. Add a staticFence() call\nto guarantee the cache has been created prior issuing the call.\n\nChange-Id: I5ed9e5cc084444c8d1872a77fef50e294ae14e93\nSigned-off-by: Thomas Buhot \u003cthomas.buhot@intel.com\u003e\nSigned-off-by: Zhiquan Liu \u003czhiquan.liu@intel.com\u003e\n"
    },
    {
      "commit": "ff3edce12d3081517e9a724cc18a0de58af5187a",
      "tree": "5824da9e04337f1e58b4994ec74da9eb9f48da8a",
      "parents": [
        "477e26cf931290f6b3353fab43a05406eea223f9"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 14 10:04:08 2016 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 14 10:29:38 2016 -0800"
      },
      "message": "Log render pipeline in gfxinfo dump\n\nChange-Id: Ia50c445b29d918f274ec45632d61d8b8479c72eb\n"
    },
    {
      "commit": "bf4b31f7b23b0bc7a2ed4fc779aac37c9c486eb2",
      "tree": "664a22edd64a136d05eb9d14d87ebe05f274a107",
      "parents": [
        "636e71c326f4938b1edd26953151987f6f2e5ec2",
        "04ce46db647724b7c30c9a593bf717888d59081c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Dec 16 11:07:53 2015 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Dec 16 11:07:53 2015 -0800"
      },
      "message": "resolve merge conflicts of 04ce46db64 to master.\n\nChange-Id: I935bb47718f0e7d5fb48945dd8de6e28dac136e5\n"
    },
    {
      "commit": "0bcd0cb6b1193168fa2840855195347488daab9e",
      "tree": "6123412bc7a325a1021e37082b60c832a3bce700",
      "parents": [
        "cb299b858f4f073e2abd4ad45aa944dc0dfd0aa2"
      ],
      "author": {
        "name": "Thomas Buhot",
        "email": "thomas.buhot@intel.com",
        "time": "Fri Dec 04 12:18:03 2015 +0100"
      },
      "committer": {
        "name": "Zhiquan Liu",
        "email": "zhiquan.liu@intel.com",
        "time": "Thu Dec 10 14:51:58 2015 +0800"
      },
      "message": "libhwui: make setSurface asynchronous\n\nOn the critical path of the cold launch of applications\nthe main thread of the started application tells the RenderThread\nto create a surface. This process is synchronous and blocks\nthe main thread of the application until the creation\nof the EGLContext is complete.\nAs a consequence the launch time of the application is delayed\nby time spent allocating the EGL Context in the RenderThread.\n\nWith this optimization the launch time of any application\nis improved (for example settings by 20 to 40 ms).\n\nChange-Id: Ibf47aaa0abb8dedf7aa00693073db3785d9d6b08\nSigned-off-by: Thomas Buhot \u003cthomas.buhot@intel.com\u003e\nSigned-off-by: Zhiquan Liu \u003czhiquan.liu@intel.com\u003e\n"
    },
    {
      "commit": "cba287b9716155183faf21865a6c28ba49ffe486",
      "tree": "90e2be92f6fe3298f3cb289e5cbc1cb3afcb61d7",
      "parents": [
        "8382f98f6246c514106ca2bd88ab9f3c8d2ff5c8"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Nov 10 12:52:44 2015 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Nov 10 13:41:32 2015 -0800"
      },
      "message": "Fix threading issues\n\nBug: 25584167\nChange-Id: I413ef9e0c86f7cca1f7d085e0071745ca0192853\n"
    },
    {
      "commit": "6b50780363d3bb8db600c770183fa07677509ae8",
      "tree": "0679f62b2f0f680d5eabd3589e89b1fc1ec9f866",
      "parents": [
        "562bb9f3a7c100463505b5a91df13da3c72d628f"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Nov 03 10:09:59 2015 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Nov 03 10:09:59 2015 -0800"
      },
      "message": "Remove almost-all android::Singleton users\n\nBug: 25426213\nChange-Id: I88e6206e8915cce95c3a8a8a82a4bb8fbf668141\n"
    },
    {
      "commit": "0a24b146cd3dacf372ce98424044423a5b2fbf2a",
      "tree": "6b55b3f00ff079a67c3774bc1e1c1c4020719f67",
      "parents": [
        "ec3d759a34ae45f5f1d6fe1b7aa9d83ebc09048d"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Oct 19 17:10:19 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Oct 20 17:19:33 2015 -0700"
      },
      "message": "Add initial OpReorderer benchmarks\n\nChange-Id: I6ca8ea89be2159331b2ad7031769c65f54161918\n"
    },
    {
      "commit": "b816087962aba0019b022303330f03b897b580ed",
      "tree": "2ecea9a96a864346296922eb212d2feb5ccdca9c",
      "parents": [
        "3da3ca609ec48e1ff23bcfda0b208632fab88d80"
      ],
      "author": {
        "name": "Skuhne",
        "email": "skuhne@google.com",
        "time": "Tue Sep 22 09:51:39 2015 -0700"
      },
      "committer": {
        "name": "Skuhne",
        "email": "skuhne@google.com",
        "time": "Fri Oct 02 07:11:45 2015 -0700"
      },
      "message": "Rendering the window frame with a second thread\n\nUsing a multi threaded render node to render the window frame\nasynchronously from the application relayout.\n\nBug: 22527834\nBug: 24400680\nBug: 24459827\nBug: 24409773\nBug: 24537510\nChange-Id: I1010fc6a8b6e38424178140afa3ca124433ab7e4\n"
    },
    {
      "commit": "ea7a7fb75acb7305eb774ca7bc7e96103bd49323",
      "tree": "a11a7df7a54d24e1d25dcea6914ea0b8fbc69b07",
      "parents": [
        "0f3a4f94243167a652f605530d4a69534db59cf7"
      ],
      "author": {
        "name": "Skuhne",
        "email": "skuhne@google.com",
        "time": "Fri Aug 28 07:10:31 2015 -0700"
      },
      "committer": {
        "name": "Skuhne",
        "email": "skuhne@google.com",
        "time": "Mon Sep 21 07:18:00 2015 -0700"
      },
      "message": "MultiThreaded rendering of different renderNodes\n\nThis is adding the renderer side infrastructure to allow\nrendering multiple render nodes with different threads.\nThis is a pre-step for decoupling a non client decor\nresize reder from a content resize render.\n\nMultiple render nodes can be added to be drawn, and to\nprevent overdrawing, a content bounds area can be set\n\nBug: 22527834\n\nChange-Id: Ie7271e20895bf38957e5a84aeefc883e282039ad\n"
    },
    {
      "commit": "e248bd1b2c3fcf8088429507e73b31f45ee2544b",
      "tree": "11b5ca9ab43877438cc05101ca0c8c2c95bfb6bd",
      "parents": [
        "c0877bb0ff769f09e9e60f600bdd294f1aac8331"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Aug 05 13:53:53 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Aug 26 16:29:15 2015 -0700"
      },
      "message": "Serializing display lists\n\nThis is a WIP prototype\n\nChange-Id: Id4bfcf2b7bf905221c3734b7b6887c9b2efd37e6\n"
    },
    {
      "commit": "c36df952292b69920d4764a8a37361073fcf4f2c",
      "tree": "e9025c44693d3617bda208133683e904bd4b4e63",
      "parents": [
        "23f1ced75c718222913f49dde46c7b85786f6031"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Jul 29 10:09:36 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Jul 29 10:09:36 2015 -0700"
      },
      "message": "Re-enable -Werror on clang\n\nChange-Id: I582bd0665752c7a9deb4f9de094d0dd0a50cda6a\n"
    },
    {
      "commit": "53e51e4aa933f9603587e1780f446c18816bf9be",
      "tree": "fc4701637c9e17fc2765c162b0b051f56bec68aa",
      "parents": [
        "1e47a8e096fc28dcab0a55bc4f2e6b747bfb1a07"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 01 10:35:35 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jun 02 16:28:39 2015 -0700"
      },
      "message": "Handle shader matrix correctly when ignoring canvas transform\n\nbug:20063841\n\nRestores old SkShader matrix behavior from before the Glop refactor.\n\nMany drawing operations draw without sending the canvas transform to\nthe GL shader. In such cases, we need to adapt the matrix sent to the\nSkShader logic to invert the canvas transform that\u0027s built into\nthe mesh.\n\nChange-Id: I42b6f59df36ce46436322b95bf9ad2140795ee58\n"
    },
    {
      "commit": "50210d912925aef14e4ce69be82e4949122a3cd9",
      "tree": "ba87c37a8b2db6521df6f8c62307319bcf70a823",
      "parents": [
        "9cb90cbbf8fc91793dad1d1cb317079dbc7e8421"
      ],
      "author": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Thu May 14 18:05:36 2015 -0700"
      },
      "committer": {
        "name": "Alan Viverette",
        "email": "alanv@google.com",
        "time": "Thu May 14 18:05:36 2015 -0700"
      },
      "message": "Adjust light source for window position\n\nBug: 16523629\nChange-Id: I2f3fed1edcac0a3cfd5034aded45e08ececfebaf\n"
    },
    {
      "commit": "9eb9dd326ae93cd84eb9bbc740f753fe8d8c7a13",
      "tree": "e0ed2ecde93e7a8a8c486e51d04b91f10facea81",
      "parents": [
        "dc9b2dfae2d2c0ef6d7e8d769a78abc17add537a"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed May 06 14:42:04 2015 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu May 07 12:30:13 2015 -0700"
      },
      "message": "Fix clang warnings on unused variable, mismatched tag, print format.\n\nBUG: 20890093\nChange-Id: I91588f481d80b69823bc9d104b8bd09167ee5373\n"
    },
    {
      "commit": "356b1777092e7da3ac5eae0bc94bd21e1cf9319a",
      "tree": "2036beb26312765c0dbba76f8409a8cc95bf39a3",
      "parents": [
        "d6abbd29b7f453397036cf602655534bbd6c0430",
        "2507c34d91bb0d722b6012e85cb47387b2aa6873"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 05 21:30:08 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 05 21:30:08 2015 +0000"
      },
      "message": "Merge \"Cleanup properties\" into mnc-dev"
    },
    {
      "commit": "7f2e5e3cea6af1f1dff35842aa13d46c47315b91",
      "tree": "bafc39554c6185af17bc1c64548289e87ed78d68",
      "parents": [
        "c81af1ca7838f79ecc39fe0a9bf269880fa515e5"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue May 05 11:00:53 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue May 05 12:18:08 2015 -0700"
      },
      "message": "Dump profile info after running test\n\nBug: 20824843\n\nNot really a proper \"benchmark mode\" but it turns out\nwe already have reasonably good profile data, so tweak\nthe test app to spit it out after a run.\n\nChange-Id: Iaee9c0d61b5508daf282fe5f95d0b37ee419a8f1\n"
    },
    {
      "commit": "2507c34d91bb0d722b6012e85cb47387b2aa6873",
      "tree": "ff515c6827fb20c904ee1af7e551144c46ba3385",
      "parents": [
        "57436d3f7e7fca99400a9b90e93491e892d135ae"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon May 04 14:36:49 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 05 10:36:09 2015 -0700"
      },
      "message": "Cleanup properties\n\nbug:19967854\n\nSeparate properties from Caches, into static, RenderThread-only class.\n\nAlso rewrites the means for java to set properties to correctly handle\nthreading, and adds an override for profile bars so that SysUi doesn\u0027t clutter\nthe screen with them.\n\nChange-Id: I6e21a96065f52b9ecc49d1a126244804ba106fa9\n"
    },
    {
      "commit": "a15eedd266af3229217bfd45e6fec0001336279a",
      "tree": "145b20eaf28bfea5706f86899054c7fffe4f61ea",
      "parents": [
        "05dc201ff64f6324c2726a8841af7021e7071b97"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon May 04 09:44:28 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon May 04 09:44:28 2015 -0700"
      },
      "message": "Fix setName use-after-free\n\nBug: 20764439\nChange-Id: I7a0f85bb82629b1302db02015fa493dc09eb31f7\n"
    },
    {
      "commit": "3731dc220ed457e0f1e99d7ec2589e0a43872b59",
      "tree": "2defd2b50881d20db99296b25e3da7c59ac48de0",
      "parents": [
        "ed207b92747234eac88dd3664ecfb535e45d8ed1"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Apr 13 15:20:29 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Apr 30 14:34:55 2015 -0700"
      },
      "message": "A bunch more cleanups\n\nSwitch a few places to using android::canvas\ninstead of SkCanvas as well which eliminated\nsome JNI\n\nChange-Id: I8f98b56442a06362b82b984cd1bd3a92398d8dbc\n"
    },
    {
      "commit": "9d4efdf2802f06ccf7031610891f75af70ea5538",
      "tree": "a86a7a833af6b45b466a391c5ff72fbffcdca329",
      "parents": [
        "7809f835cae637c12eebdc92103ad88890228d97"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Apr 17 20:45:40 2015 +0000"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Apr 17 20:47:27 2015 +0000"
      },
      "message": "Revert \"A bunch more cleanups\"\n\nThis reverts commit c294d128d03bc9a9982b273a82516c04583438cc.\n\nChange-Id: Id1ebb236950f7c36c6d86e1dd95566d3a200748d\n"
    },
    {
      "commit": "c294d128d03bc9a9982b273a82516c04583438cc",
      "tree": "fd6c7ae3a6a292caf48160f0c0c8cc82e4729225",
      "parents": [
        "4fc266bbef6129b5cefc910f0680eb9d61794faf"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Apr 13 15:20:29 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Apr 14 15:38:22 2015 -0700"
      },
      "message": "A bunch more cleanups\n\nSwitch a few places to using android::canvas\ninstead of SkCanvas as well which eliminated\nsome JNI\n\nChange-Id: I8f98b56442a06362b82b984cd1bd3a92398d8dbc\n"
    },
    {
      "commit": "c74e289a6537227ab80fa59da9d5d6f88dc9fe33",
      "tree": "ea311fc88c57608572ad1d51b57b454a8cdba729",
      "parents": [
        "6199bffef2eca134c44f0f56f8ddf9f0b8f41319",
        "edc524c90506d80e0fc5fb67e8de7b8f3ef53439"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Mar 30 19:39:25 2015 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 30 19:39:27 2015 +0000"
      },
      "message": "Merge \"Add GraphicsStatsService\""
    },
    {
      "commit": "edc524c90506d80e0fc5fb67e8de7b8f3ef53439",
      "tree": "098c18daa80655fe0fa3faab7c39332685c163ef",
      "parents": [
        "1cef4196886b0cc1238111d396c1e3665a5fd2ae"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 18 15:24:33 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Mar 27 11:50:56 2015 -0700"
      },
      "message": "Add GraphicsStatsService\n\nMore S\u0027s for More Speed\n\nSplit JankTracker\u0027s backing data from the\nclass to allow for data relocation to/from ashmem regions\n\nPack the jank tracking data to fit in 256 bytes\n\nChange-Id: Ife86a64b71a328fbd0c8075fe6a0404e081f725b\n"
    },
    {
      "commit": "111928fa324db73f94389bdfab4b108cbd30d8f4",
      "tree": "5a0d8df21948ae02fa189e8a72d9904098d55a7a",
      "parents": [
        "1cef4196886b0cc1238111d396c1e3665a5fd2ae",
        "4142f026b30ee1ee373ea29e0d213aa5c69f9c10"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Mar 24 08:34:23 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Mar 24 08:34:23 2015 -0700"
      },
      "message": "resolved conflicts for merge of 4142f026 to master\n\nChange-Id: Iabe3aa0ac6911a26d2ba7219f18332897276ed6f\n"
    },
    {
      "commit": "c80c9ad188ac6c421e70c906104d4394504878fb",
      "tree": "63a540b1640646ea5edde02daad5479830c7759c",
      "parents": [
        "d3e6428aea34ce3297123c63b4dd6223dac5d5a8"
      ],
      "author": {
        "name": "youngmin0822.lee",
        "email": "youngmin0822.lee@lge.com",
        "time": "Fri Mar 20 21:22:32 2015 +0900"
      },
      "committer": {
        "name": "youngmin0822.lee",
        "email": "youngmin0822.lee@lge.com",
        "time": "Fri Mar 20 21:22:32 2015 +0900"
      },
      "message": "Don\u0027t create unnecessary RenderThread\u0027s instance when executing \u0027dumpsys gfxinfo\u0027\n\nTo obtain the gfxinfo for each process, the static method of RenderProxy is used, which is named outputLogBuffer().\nIn there,\n1. RenderTask is created for getting DisplayList Commands in RenderNode.\n2. staticPostAndWait() is called\n3. RenderThread\u0027s instance is created by \u0027RenderThread::getInstance()\u0027 in staticPostAndWait()\n\nIn case of the service, they don\u0027t use HW Acceleration, so don\u0027t need RenderThread.\nBut, by the process of No.3, RenderThread is created for all process.\nAs we know, RenderThread never be destroyed while the process is alive.\nThis patch checks RenderThread instance before the creation of RenderTask.\nAnd, there is no one, just return to prevent the unnecessay creation of it.\n\nChange-Id: I4fe29d83c9ced3e8b67177c0874c5d8ee62e1870\n"
    },
    {
      "commit": "b36016c65f1d1b5846dba0349aab491dbd3a746a",
      "tree": "6ce0e78368d6797988cc9b9745b20de5919bb19f",
      "parents": [
        "4771577a342214ef4f7373a8d37d015749b00347"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 11 08:50:53 2015 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 11 11:29:13 2015 -0700"
      },
      "message": "Cleanups \u0026 simplifications\n\nChange-Id: I5ad5e3b8fe55b1528f2e20c63e5abe51d9e40ff1\n"
    },
    {
      "commit": "c87be99c6ead0720a8918ea38ce3b25e5c49e1c6",
      "tree": "017c6aa6e000f52b0b579444e32336999912b656",
      "parents": [
        "df570c6e66d98536597737f863430510b6336ffe"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Feb 20 10:57:22 2015 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Feb 20 10:58:48 2015 -0800"
      },
      "message": "C++11 style fixups\n\nChange-Id: I356d02338820bfef41a9e278c88dafc17cfe1cf9\n"
    },
    {
      "commit": "ba6adf66d3c44c0aa2fd8a224862ff1901d64300",
      "tree": "8172a893f00caa283cf0386dd3d585ca8fac867c",
      "parents": [
        "004a46eb171bc86a3d40eb8fc6a4d9eed48027c7"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Feb 19 14:36:50 2015 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Feb 20 08:27:38 2015 -0800"
      },
      "message": "Initial attempt at jank-tracking stat collection\n\nIs a bit naive, perhaps overly aggressive, but sorta works\n\nChange-Id: I01a774e00dbe681439c02557d9728ae43c45ce50\n"
    },
    {
      "commit": "2ae07339824efc50468f971ff8920ff0b894cad4",
      "tree": "ade54607e4541ad140890fb32e39b0e9df6bf438",
      "parents": [
        "8076b5a8df5bdfab478c8af41b65de7b131db5b3"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jan 21 14:22:39 2015 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jan 21 14:22:39 2015 -0800"
      },
      "message": "Remove DisplayListLogBuffer\n\nChange-Id: I001832fc444b6d532f4a382e0a31cc1d8956dbd8\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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "63a06673253914510bbeebd500655008682dade1",
      "tree": "0a1c5d17edc4f5be610d4e252f24e7bc18c1bd53",
      "parents": [
        "ebb9e69513b690881a5bad7bf45c6f32e0fc7062"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed May 07 13:45:54 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed May 07 13:45:54 2014 -0700"
      },
      "message": "Implement TODO(romainguy)\n\n Bug: 14277445\n\nChange-Id: Id52d6f7fcc023000adcc440bd4da67d9a673536b\n"
    },
    {
      "commit": "e4280baaa709c74d86cf6a389a4674ca665f5af6",
      "tree": "cbcc898071c3e758ce5f6b32f1002c1d2dd1352b",
      "parents": [
        "f9be77940e365036fecd8cc0e491e8545c34e79b"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon May 05 16:39:37 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon May 05 16:39:37 2014 -0700"
      },
      "message": "Implement loadSystemProperties\n\n Bug: 14087580\n\nChange-Id: I7153f38c70b554a78c56a0e794da929fc401ee7a\n"
    },
    {
      "commit": "f9be77940e365036fecd8cc0e491e8545c34e79b",
      "tree": "1f15905e518d09309bb35b863d7697deb2975f78",
      "parents": [
        "5d039c458c67e8c08334e597a6a8781eda6aab13"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri May 02 18:21:16 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon May 05 12:35:30 2014 -0700"
      },
      "message": "Make RenderNodeAnimator and WebView play nice\n\nChange-Id: Ifaefcf510b2d377663fc86f60608d6ec9be8329a\n"
    },
    {
      "commit": "18f16e6fba74eda173e1e7c869e6e2e2acc073ff",
      "tree": "d1ed13d4ea22a86109a09c309efb7e3d9c79112c",
      "parents": [
        "29e594c520e22b94b540873f72312614cc3fdca1"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri May 02 16:46:41 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon May 05 10:57:04 2014 -0700"
      },
      "message": "TIME LORD!\n\n Bug: 14444180\n\nChange-Id: I68bec3807c4d1c88d5af1aec2fe6907d60b5f2f3\n"
    },
    {
      "commit": "e45b1fd03b524d2b57cc6c222d89076a31a08bea",
      "tree": "31ad10387f2b59b3ee9d4396be44fce67228ca75",
      "parents": [
        "627aad9c200cb19aa505504dcd232a3710e96a25"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Apr 15 09:50:16 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Apr 29 10:42:11 2014 -0700"
      },
      "message": "RenderThread animator support\n\nChange-Id: Icf29098edfdaf7ed550bbe9d49e9eaefb4167084\n"
    },
    {
      "commit": "fae904d63947fe1687d1d44be29234cc3d538f24",
      "tree": "57837539a3eb84bc5f42f971a041e99db31cfd39",
      "parents": [
        "db8b130a19484cb6018667905e64d42ab793654f"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Apr 14 11:01:57 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Apr 14 12:44:53 2014 -0700"
      },
      "message": "Fence on destruction\n\n Bug: 14052927\n destroyCanvasAndSurface() needs a fence as when it returns the\n underlying BufferQueue is going to be released from under\n the render thread.\n\nChange-Id: I0147a1d5ec5adf0239c761ef22f65cd8c8a137df\n"
    },
    {
      "commit": "822bbb382fa6b6c8d1b45770e27c2c2732a7afb7",
      "tree": "ffc30391c176694e2490ac6bfc2cc9892123ee2a",
      "parents": [
        "4b1a7c203d5e32c8b2dc7f4f54f28559ca31860a",
        "d3d8dafc2f61fb118c060720b52684c59303f3db"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Apr 10 22:23:22 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 10 22:23:22 2014 +0000"
      },
      "message": "Merge \"Make attachFunctor blocking\""
    },
    {
      "commit": "d3d8dafc2f61fb118c060720b52684c59303f3db",
      "tree": "92352e4e27e420ab41389ac42c2f9b34f249aabc",
      "parents": [
        "2271a91c327cee8a6c1dffcbfd3419c95d56c37e"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Apr 10 15:00:13 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Apr 10 15:00:13 2014 -0700"
      },
      "message": "Make attachFunctor blocking\n\n Bug: 13930200\n\nChange-Id: I9b0cf92fd16bb30baa09b6f8d7ae22a8b2a7fd80\n"
    },
    {
      "commit": "8ca3eecc2b7fe507d3482745efc4cd2567ad15a1",
      "tree": "804a5343674ab583447d7886e0197088cdd916e6",
      "parents": [
        "2271a91c327cee8a6c1dffcbfd3419c95d56c37e"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Apr 10 10:28:45 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Apr 10 10:46:55 2014 -0700"
      },
      "message": "Remove sync flush\n\n Bug: 13952590\n It was attempting to flush state changes after the canvas was\n destroyed, which caused layer updates to crash.\n\n Due to the removal of SetDisplayListData, the sync mode isn\u0027t able\n to do anything ever, so remove it.\n\nChange-Id: I1e18ce288d81fd47cc6e612afda9476f75ecef2e\n"
    },
    {
      "commit": "8e1f918738abf70a4dc86dbb12b386a9deea37f8",
      "tree": "2f8b775662768ed77b50ec5740e5d7af608e56c8",
      "parents": [
        "3c86a27d3e9044d04d0f176e59a1ebbcd774a54c",
        "8de65a8e05285df52a1e6f0c1d5616dd233298a7"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Apr 09 23:01:02 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 09 23:01:02 2014 +0000"
      },
      "message": "Merge \"Switch DisplayListData to a staging model\""
    },
    {
      "commit": "8de65a8e05285df52a1e6f0c1d5616dd233298a7",
      "tree": "267faf9277b441030b6276ca6a3a34424bb9aee8",
      "parents": [
        "10bdb4b9e966f0a3d8e1099bf8eff4c41c31981c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Apr 09 15:23:38 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Apr 09 15:48:00 2014 -0700"
      },
      "message": "Switch DisplayListData to a staging model\n\n Bug: 13912977\n\nChange-Id: I5b2f664e797be22a58300964f57ceb4fab60528c\n"
    },
    {
      "commit": "f7d9c1dc84671d4e99657ef071d275700d85bb11",
      "tree": "b1e43d969a44162bd6a1db1b702207019ec32286",
      "parents": [
        "10bdb4b9e966f0a3d8e1099bf8eff4c41c31981c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Apr 09 10:01:03 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Apr 09 11:01:29 2014 -0700"
      },
      "message": "Fix ThreadedRenderer.setEnabled()\n\n Bug: 13914116\n Fixes lifecycle issues around setEnabled where ThreadedRenderer\n was reporting as being enabled before it had a Surface. This is\n incorrect.\n\n Also fix some EGL lifecycle issues\n\nChange-Id: I12ebb279707f9b533a570b61d68735d858b560bf\n"
    },
    {
      "commit": "1949e7928eeec22cd3f74b5f763a4eb433238453",
      "tree": "9989642b268277a76657fcdbab75cd478d770d2f",
      "parents": [
        "1f3f55b434ce324c5fdbe74db1982fea4812a2e9"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Apr 08 15:18:56 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Apr 08 15:18:56 2014 -0700"
      },
      "message": "Ensure there\u0027s a GL context before creating a Layer\n\n Bug: 13745587\n\nChange-Id: Ib0ec059d9a5974a48734daeec9d83580cada94a3\n"
    },
    {
      "commit": "e2c455264351964bf1ae78da2256c17258f0d3ea",
      "tree": "d6be1f13fce173fb067ea82c623be172c46875e3",
      "parents": [
        "85189c5dafb08f051c7024f42ceedcbcf5dbbc7c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Apr 07 17:31:44 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Apr 07 17:38:47 2014 -0700"
      },
      "message": "Veto pool TODO\n\nChange-Id: I50067dba630b75aa539e4406cfc15f66949684b3\n"
    },
    {
      "commit": "85189c5dafb08f051c7024f42ceedcbcf5dbbc7c",
      "tree": "48e2653a88f94fa50aa00b45cf273da2c7b3accd",
      "parents": [
        "af22ce470112b8ee2ea7edf17b5d7c78e92d8ff7",
        "28ad7b52e038ef0cdd89f753d9839444a434b299"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Apr 08 00:32:15 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 08 00:32:15 2014 +0000"
      },
      "message": "Merge \"Fence on draws that are reported\""
    },
    {
      "commit": "28ad7b52e038ef0cdd89f753d9839444a434b299",
      "tree": "918c519f621185485245118eb62599113f80445d",
      "parents": [
        "ce16215d7b4d9bedfc62e172dc44ab439afef13a"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Apr 07 16:59:25 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Apr 07 16:59:25 2014 -0700"
      },
      "message": "Fence on draws that are reported\n\nChange-Id: Ib2ec16cbda40f40df1710bdc868869ea8301f17e\n"
    },
    {
      "commit": "087bc0c14bdccf7c258dce0cdef46a69a839b427",
      "tree": "cab73aeed8e9a0bc8e74243a35c026ab0b321e08",
      "parents": [
        "ce16215d7b4d9bedfc62e172dc44ab439afef13a"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Apr 04 16:20:08 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Apr 07 14:53:08 2014 -0700"
      },
      "message": "Refcount RenderNode\n\nChange-Id: I7a86db8acc2b78ef33d987a43a119f5933d7d752\n"
    },
    {
      "commit": "0d1f634f4b5e1bb37aa51777efb6a68619488d01",
      "tree": "d936b60a47e95c58e7c47363b6e23cdc8b4df7d9",
      "parents": [
        "c75db8266b352ef3a7a6b76654f770d7a24d547a"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Mar 28 20:30:27 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Mar 28 20:57:32 2014 -0700"
      },
      "message": "Add invokeFunctor\n\nChange-Id: I09e675d3e02e3e528642175ada00b2b17fab7652\n"
    },
    {
      "commit": "668f0e38ef0277d55d3118af37e17b8c435df85c",
      "tree": "d0703be6cce376c8a982d7c491445d2e94009375",
      "parents": [
        "bcad68ad80e5a44e5dc6988eddb8acabdc01a737"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 26 15:10:40 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Mar 27 10:00:04 2014 -0700"
      },
      "message": "Async drawing!\n\nChange-Id: I7e728356f58af88174328a8c0b90d27b128bfe01\n"
    },
    {
      "commit": "e18264b079481a244b30e3f71012c53bbd861f92",
      "tree": "0127f3fc60aa351108ee8abd8ee180a5b193b03e",
      "parents": [
        "5b568aa04a91786962af1ab372b5a62481eea8cc"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 12 13:56:30 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 12 13:56:30 2014 -0700"
      },
      "message": "Rename DisplayList-\u003eRenderNode\n\nChange-Id: Id42e23c9a1a6eb6eaeafef707ced7fa6887b03d0\n"
    },
    {
      "commit": "be34f2f3b340196426bdf558b28951359a4d84fa",
      "tree": "06bf57642e009f05dc8a117c88f086fc026c47a7",
      "parents": [
        "863d691efaa92257246598a73af2f581fc991e0a"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Mar 10 08:58:44 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Mar 10 10:12:32 2014 -0700"
      },
      "message": "DisplayList lifecycle changes\n\n Bug: 13360343\n Change DisplayList to be more forgiving with weaker lifecycle\n requirements. Is more self-managed with a strong reference\n to the renderer it needs\n\n Also fix naming mismatch\n\nChange-Id: I5c89453a72a52954f6f959f0846199705dbb6476\n"
    }
  ],
  "next": "44fd8d24f761f82d21e9b00932648a1b6bf91449"
}
