)]}'
{
  "log": [
    {
      "commit": "63999da503dae76551f3368baa8248638634fedc",
      "tree": "d4380e6c078029c2e849a87b7ce427e9f6e2cbac",
      "parents": [
        "ca34ab06eca921f8c193dfa7d0b500b6892890e6"
      ],
      "author": {
        "name": "Aurimas Liutikas",
        "email": "aurimas@google.com",
        "time": "Wed May 11 15:54:17 2016 -0700"
      },
      "committer": {
        "name": "Aurimas Liutikas",
        "email": "aurimas@google.com",
        "time": "Wed May 11 16:43:37 2016 -0700"
      },
      "message": "Switch the default text selection handles to Material style.\n\n-Switch to material style handles.\n-Delete old handles.\n-Remove the unrelated use of old handle in a test.\n\nBug: 28723844\nChange-Id: I268c2672df541e5a1cdcdeb6712289fe06c06d5f\n"
    },
    {
      "commit": "6d42b5c6e399a10799d2bba3f7113dd198cbcae6",
      "tree": "d003e4cc33b4114b5bc8ff7b0c7a3118cf8a2431",
      "parents": [
        "a1c06675dd2a83ce445f27b46cddab80f8c743e6",
        "2f69d6d4fdd4994912e5515016421625d1e1c4ec"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Apr 29 14:49:19 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 29 14:49:21 2016 +0000"
      },
      "message": "Merge \"Support transform\u0027d GraphicBuffers\" into nyc-dev"
    },
    {
      "commit": "a1c06675dd2a83ce445f27b46cddab80f8c743e6",
      "tree": "0722f305c5212e021db5f513db64d2391242d89a",
      "parents": [
        "1658fff3a92ce6ad13f41ce5faf7fcdfe3ca2673",
        "f3a51d652ff9fbcb5a41c71c801de71a3b1ece78"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Apr 29 14:49:11 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 29 14:49:13 2016 +0000"
      },
      "message": "Merge \"Video source test \u0026 bugfix\" into nyc-dev"
    },
    {
      "commit": "2f69d6d4fdd4994912e5515016421625d1e1c4ec",
      "tree": "66c4345be78f555c646506e7a41111951087f229",
      "parents": [
        "f3a51d652ff9fbcb5a41c71c801de71a3b1ece78"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Apr 28 13:18:51 2016 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Apr 28 13:32:27 2016 -0700"
      },
      "message": "Support transform\u0027d GraphicBuffers\n\nBug: 28428955\nChange-Id: I23e2fc9b96a67c7cfda42d9d7319e478194a7fa7\n"
    },
    {
      "commit": "f3a51d652ff9fbcb5a41c71c801de71a3b1ece78",
      "tree": "dce2f5362e93ba84889baededc26c8ca2aa134cd",
      "parents": [
        "8ff7d162c624f9889a8e90ac10b6b554869fef6e"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Apr 27 15:23:51 2016 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Apr 28 10:11:36 2016 -0700"
      },
      "message": "Video source test \u0026 bugfix\n\nBug: 28428970\n\nTest for video sources and fix a bug where\nwe should throw an IAE for surfaces that are invalid\nat request time.\n\nChange-Id: I891a2b1568f583300433c7aca6de36d2e2621c63\n"
    },
    {
      "commit": "137e30ae7bcfd0a7e2e272affc25a7770c9b626b",
      "tree": "113b85efb8a518ecc6a8cd739e9677671cc49568",
      "parents": [
        "0f018570fff044bb68b8009815ae7e5c397d09fd",
        "8398e8261e451358b779514569825ae7a94ef579"
      ],
      "author": {
        "name": "Hyunyoung Song",
        "email": "hyunyoungs@google.com",
        "time": "Thu Apr 28 16:57:24 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 28 16:57:26 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert the default wall paper for framework / emulator b/27451024 Change-Id: I68ed094f44f1b4c48407497790f809147ec0ad5a\"\" into nyc-dev"
    },
    {
      "commit": "8398e8261e451358b779514569825ae7a94ef579",
      "tree": "3890c6cc43953ec17858cb43b82557fa67818281",
      "parents": [
        "fcef23e831df0153fab7a3462973f0906ce9b8d8"
      ],
      "author": {
        "name": "Hyunyoung Song",
        "email": "hyunyoungs@google.com",
        "time": "Wed Apr 06 00:43:47 2016 +0000"
      },
      "committer": {
        "name": "Hyunyoung Song",
        "email": "hyunyoungs@google.com",
        "time": "Thu Apr 28 16:50:11 2016 +0000"
      },
      "message": "Revert \"Revert the default wall paper for framework / emulator b/27451024 Change-Id: I68ed094f44f1b4c48407497790f809147ec0ad5a\"\n\nThis reverts commit fcef23e831df0153fab7a3462973f0906ce9b8d8.\nBug: 28028331\nChange-Id: I0bbcf7024749d06b7d78574afbb9625e6de8b96d\n"
    },
    {
      "commit": "7f209d37f17d4df09475137c38b84a3338c84023",
      "tree": "07856ff96c1e32df08aef9ad73b7b8216d16f9c0",
      "parents": [
        "9fa8b54589b68dc6da3a7201cad1fc43e01e59e3",
        "e94cbc76d560a157c0a0d47181b4ed2a0aadbeb1"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Apr 27 14:36:51 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 27 14:36:53 2016 +0000"
      },
      "message": "Merge \"API tweaks to PixelCopy and make it public\" into nyc-dev"
    },
    {
      "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": "0e974e74252c9419094c7aadb5ec1f537f0902fd",
      "tree": "c2039076399b02f11035b48f60f7bee868bcea8c",
      "parents": [
        "976f28b926964889666a72332b8483f81c777f60"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Apr 22 15:44:14 2016 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Apr 22 15:48:17 2016 -0700"
      },
      "message": "Improve SurfaceView postion snapping\n\nbug:27098060\n\nSnap SurfaceView positions to safely align to pixel boundaries.\n\nAlso expands MovingSurfaceViewActivity to support a scaling option, and\nshow problems more clearly.\n\nChange-Id: Ic8e9c1e2f80c2c653bf4428e373f14528ddbce81\n"
    },
    {
      "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": "417ed6d4337e5409d52f58cc93677c8715193f32",
      "tree": "e209754dcabdc52f6cae49fa78b42fd9e7241801",
      "parents": [
        "df1e2b1457690ccbd1302078cedafbfbb8918265"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Mar 22 16:01:08 2016 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Mar 23 07:59:10 2016 -0700"
      },
      "message": "Fix missing first frame\n\nBug: 26776366\nChange-Id: I46258c0ff35fdefe5c9f2ee610c904b2dbe8c5d9\n"
    },
    {
      "commit": "5d634d7828ed345c1cca46818a6beab1de0ab626",
      "tree": "1b4347c148675b11fbac1e465310126ce3087e98",
      "parents": [
        "3716e52be592482534943d32ba0f72309305a224",
        "fcef23e831df0153fab7a3462973f0906ce9b8d8"
      ],
      "author": {
        "name": "Hyunyoung Song",
        "email": "hyunyoungs@google.com",
        "time": "Wed Mar 02 22:54:04 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 02 22:54:05 2016 +0000"
      },
      "message": "Merge \"Revert the default wall paper for framework / emulator b/27451024 Change-Id: I68ed094f44f1b4c48407497790f809147ec0ad5a\" into nyc-dev"
    },
    {
      "commit": "fcef23e831df0153fab7a3462973f0906ce9b8d8",
      "tree": "1298b43fb0090098d1b32870e82f105b2497df72",
      "parents": [
        "27d68bb2df0165149f81fc491d66aa55e33b9a13"
      ],
      "author": {
        "name": "Hyunyoung Song",
        "email": "hyunyoungs@google.com",
        "time": "Wed Mar 02 11:50:16 2016 -0800"
      },
      "committer": {
        "name": "Hyunyoung Song",
        "email": "hyunyoungs@google.com",
        "time": "Wed Mar 02 11:50:16 2016 -0800"
      },
      "message": "Revert the default wall paper for framework / emulator\nb/27451024\nChange-Id: I68ed094f44f1b4c48407497790f809147ec0ad5a\n"
    },
    {
      "commit": "b67985f337e1592f621e1b85f525098887804ccd",
      "tree": "fb73aa42cc5c678f1922a7efe971a3701ed9e0a7",
      "parents": [
        "b4672ef6dfbaf416981539d515ad1489d7d0bc87",
        "a748c08241e43fc68c7c34767d819aef5183936e"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Mar 02 18:52:33 2016 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 02 18:52:35 2016 +0000"
      },
      "message": "Merge changes I4f72448f,I74b7233c into nyc-dev\n\n* changes:\n  Fix ripple positioning within scrolled node\n  Clip projected ripples to outlines\n"
    },
    {
      "commit": "678ff81105753656aa4822f4f675ef96dc9d2b83",
      "tree": "695ff095d9b5c839a51316c9b3f8976682be7d5e",
      "parents": [
        "82197c33a23a130acd93dcf54e70138a7e7ba970"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Mar 01 13:27:54 2016 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Mar 02 10:29:15 2016 -0800"
      },
      "message": "Clip projected ripples to outlines\n\nbug:27343928\n\nAlso fixes positioning of ripples to a scrolled projection receiver.\n\nChange-Id: I74b7233c46d7c15839ca8bf50e188ba6646d7432\n"
    },
    {
      "commit": "d9f91827a9c6b0537b18d6e29873ae70b2d0bba6",
      "tree": "a621e3e5e8ccd1424b06df95ef3032d238793242",
      "parents": [
        "2ab93cb22ad641572bdfed1b2d3d9e8dc1e89f1f"
      ],
      "author": {
        "name": "Hyunyoung Song",
        "email": "hyunyoungs@google.com",
        "time": "Tue Mar 01 20:39:03 2016 -0800"
      },
      "committer": {
        "name": "Hyunyoung Song",
        "email": "hyunyoungs@google.com",
        "time": "Tue Mar 01 20:39:03 2016 -0800"
      },
      "message": "Update wallpaper asset for N dev preview\nBug: 27434845\n\nChange-Id: I0f9ff168beab12d630ab824ab632f98051564570\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": "51aaf906f9f5fb2f117f5ccfae8be6974f7cb903",
      "tree": "f9f453d32d8fe3ea29a459535d0a215b7dafefdc",
      "parents": [
        "35fc197caaecf22e8e5642963aa4807f1b43d88f"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Dec 02 15:08:07 2015 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed Dec 02 15:46:11 2015 -0800"
      },
      "message": "Nuke HardwareRenderer abstract base\n\nBug: 17303292\n\nChange-Id: I4a272ea4f695f4f9993e8be640fdd8530b691be0\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": "fca52b7583d1e5f5ff8ed06554875d2a30ef56fa",
      "tree": "e383a2db169421a722fa9c559dd01904e83fa504",
      "parents": [
        "aa1cd25db72297f13539928e8aa45ba992f2f230"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Apr 28 11:45:59 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 26 17:53:16 2015 -0700"
      },
      "message": "Use path intersection instead of saveLayer+mesh to mask projected ripples\n\nbug:14297149\n\nSaveLayer\u0027s performance cost is high, and proportional to the surface\nbeing projected onto. Since ripples (even unbounded ones) are now\nalways projected to the arbitrary background content behind them, this\ncost is especially important to avoid.\n\nThis removes the last semi-secret, saveLayer from the projected\nripple implementation.\n\nAlso fixes the HW test app to correctly demonstrate this projection\nmasking behavior.\n\nAdditionaly, alters PathTessellator to gracefully handle\ncounter-clockwise paths, and simplifies the work done by\nShadowTessellator to ensure all of its paths are counterclockwise.\n\nChange-Id: Ibe9e12812bd10a774e20b1d444a140c368cbba8c\n"
    },
    {
      "commit": "31a2d063df5111e730abe7d07be064690deedc34",
      "tree": "ad96bc2fe1f7a8bc0feeb39a63763240746c4308",
      "parents": [
        "5c705c595d6adbb4b6e8ad5dee29205246cd5cc4"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri May 01 14:22:47 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri May 01 14:30:15 2015 -0700"
      },
      "message": "Revert \"Revert \"Merge getDisplayList and updateDisplayListIfDirty\"\"\n\nFixes breakage from HwAccelerationTest\n\nThis reverts commit b2847afde24aac22c8fb804cdce0c24b8a7c40c4.\n\nChange-Id: I762b3c9020fc1d06bac61ffa8b956049147515b1\n"
    },
    {
      "commit": "f6829a0a618b4523619ec53c996b04d67e3186b9",
      "tree": "816816dadc5cd7ac8ad1b6a309525f6300fc9b82",
      "parents": [
        "edacf22ca132ac48207a68aa30998f5b43d893b8"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Mar 10 10:28:59 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Mar 10 14:56:11 2015 -0700"
      },
      "message": "Remove HardwareCanvas\n\nChange-Id: I239646a7f00f09d3f76fe6b6162eed86bc0d6e77\n"
    },
    {
      "commit": "36a35e366a65980843b96759f863643f17ca1ee7",
      "tree": "c4eba90c7c54625044e7fc97d09e31021065aeeb",
      "parents": [
        "6c770900d6dc96b98c980c23f4a62ccf30a36586"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 18 09:24:33 2015 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 18 17:47:21 2015 +0000"
      },
      "message": "Fix layer shader to store layer pointer\n\nbug:19419672\n\nChange-Id: I4277348ceab41fbf45a107a8b21f64e2b4af23e0\n"
    },
    {
      "commit": "c47c98be04d602f331e0ea9704d2c11f8c53852d",
      "tree": "c6a66e5ed45b85915ed7f902210b8d379b8d53ee",
      "parents": [
        "6ef76c60df9e68950721f92a14c77a3ecd13607c"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Dec 09 09:07:35 2014 -0800"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Dec 09 12:35:12 2014 -0800"
      },
      "message": "Fix issue with RNA destruction mid-animation\n\nBug: 18521508\n\nFix an issue where an RNA\u0027s native object was destroyed\nbefore the java-side object was started\n\nChange-Id: I487fb476e0ecdf7000515f4f7320e8cfbc50a52b\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": "f5945a0c8bb868f978d9d0d22043a8b44464a86e",
      "tree": "225f4979dc6b8e0290307194fa1ec0c3a48ddcff",
      "parents": [
        "c237555c6cb89c347acf13eba45b875946473501"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Sep 05 15:57:47 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Sep 05 15:58:26 2014 -0700"
      },
      "message": "Disable RT-anim for AnimatorSet\n\n Bug: 17317184\n\n Unfortunately this will disable *all* RT animations in a scene,\n but we don\u0027t have more selective targetting currently\n\nChange-Id: I57e1c0ae43957f45229473bdcdaf34c05825fab7\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": "c01bd1167a1b08d59557f214ddc48cf24d3b8d0a",
      "tree": "6b1b2e5dea2cdd0027a17cfdcccf9f781f1c52cc",
      "parents": [
        "6eed108eeb66d123c47e7066d23738ca8dd8bdd4"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Jul 18 16:22:09 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Sat Jul 19 02:00:15 2014 +0000"
      },
      "message": "Return Animator instead of ValueAnimator\n\nChange-Id: I29a7cfdc7ffbb3a4d33f9e64f9d7ca791f5c947c\n"
    },
    {
      "commit": "31ba192dd201df2cad96a8c503f730130ab0d80f",
      "tree": "6c2be2ad287e826bf2f7f7fc6316b55c2fd36834",
      "parents": [
        "5552cc5c9dd111c5fb1db512240b5daf15866c88"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jul 18 13:48:09 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Sat Jul 19 00:13:59 2014 +0000"
      },
      "message": "Tweaks to outline API\n\nb/15283203\nb/16142564\n\nRemove boolean return value chaining, as it\u0027s redundant with\nthe data in the Outline itself.\n\nChange-Id: I3116e57cd1b35c98b74e95195117edd7e39fb2df\n"
    },
    {
      "commit": "d3de42cae84fadfa1befd082a2cf1bf72f9ad82a",
      "tree": "e3bff6900caa9cc6546dc6e843f37414192fcc74",
      "parents": [
        "fac77c46fe03466cb4bd728da3dc49b40652964b"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Jul 15 14:29:33 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Jul 18 22:10:22 2014 +0000"
      },
      "message": "Add RT-enabled reveal animator\n\n Bug: 16161431\n\n Also re-writes RevealAnimator to avoid using any listeners internally,\n removing the logic around shadowing the update listeners.\n\nChange-Id: I6ed8126398eed971a87f20bccb7584c9acafbb6c\n"
    },
    {
      "commit": "ab87983a11e0bd2e08d752d86d5e945ea7d39a04",
      "tree": "4e05141a491cdaabed0c6ba820b3aa07bbc2cb8a",
      "parents": [
        "3ff3db5f5c222af0ddd588cee41efc70ddf2b0c3"
      ],
      "author": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Wed Jul 09 16:44:35 2014 -0400"
      },
      "committer": {
        "name": "Leon Scroggins III",
        "email": "scroggo@google.com",
        "time": "Thu Jul 10 18:01:22 2014 -0400"
      },
      "message": "Simplify Shader.setLocalMatrix.\n\nPreviously, calling setLocalMatrix updated any Paint that had the\nShader attached. This depended on deprecated behavior in Skia. Use\nnew Skia APIs, and do not modify any Paints that use the Shader.\n\nIn addition, update callers to call setShader (again) after modifying\nthe Shader.\n\nSample app at ag/499573 for testing.\n\nDepends on I673801444f0a8fd4f192b5b7effdde1aa83e702b in external/skia.\n\nBUG:14315916\nChange-Id: I3c3316377874e89fccc85afb864bc038b0ef3890\n"
    },
    {
      "commit": "3994371aa3bec727ee8dc5643bb4212c0525467f",
      "tree": "0a820de44163f15ad575a43c4f8c35bbe2995694",
      "parents": [
        "b4dabadd89f8a6928b51e809eec6425a3df9b593"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Jun 30 13:35:00 2014 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Jun 30 15:42:49 2014 -0700"
      },
      "message": "Draw overlapping rectangles with color modulated.\n\nTouch the screen to turn on / off depth test.\nDisalbe the vsync to get the real performance.\nDrawing 10 rectangles on N10 show almost 3x perf gain, in this setup.\n\nChange-Id: I97bb84f744e90c35febad8cb853ed877cda5e64f\n"
    },
    {
      "commit": "b4dabadd89f8a6928b51e809eec6425a3df9b593",
      "tree": "4f3d1e01490acc7a4091e7769caa0f1a00b7a106",
      "parents": [
        "9cb5b4c2d93acb9d6f5e14167e265c328c487d6b"
      ],
      "author": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Jun 30 13:04:47 2014 -0700"
      },
      "committer": {
        "name": "ztenghui",
        "email": "ztenghui@google.com",
        "time": "Mon Jun 30 13:11:40 2014 -0700"
      },
      "message": "Preparing the new GL depth test.\n\nRight now, the code is just copied from ApiDemos for the initial setup.\n\nChange-Id: I531f95faca744c7e91fadae189818af3d04a85ee\n"
    },
    {
      "commit": "c6b3264e16f1d2b72e7f9508559981ce9970157c",
      "tree": "4b9b4d78d238e04cdd5c0394b757d88276856d0a",
      "parents": [
        "58136d02113ae768dc2cdf871a773bd34cc71583"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Jun 02 11:00:09 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Jun 02 11:00:09 2014 -0700"
      },
      "message": "Add setStartValue to RNA\n\n Bug: 15198607\n Should be good-enough for Ripples to use for pseudo-chaining\n support.\n\nChange-Id: Ia8666928ccb69ae401cb583751632a52bd928b63\n"
    },
    {
      "commit": "ab008f0c642461b033e6f7dd3edfc49a43fb6293",
      "tree": "29ac0346ed84a8035b9950c0568d3dbde9f77092",
      "parents": [
        "dab839e0478559781fe703c83f4e8a43d34960d2"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri May 23 17:55:03 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed May 28 13:35:10 2014 -0700"
      },
      "message": "Respect Z ordering in touch dispatch, software drawing\n\nbug:14390526\nChange-Id: I617a6ea7dbac1facae246491a247cf307452fc0e\n"
    },
    {
      "commit": "80fe183c34d862839546ed214e5f69a427cc73d8",
      "tree": "0d3101e769a955d4733da4cc03a6fe2b7e04e23f",
      "parents": [
        "241cdab7597c9f6f203057125c9d629c285d574d"
      ],
      "author": {
        "name": "Ji-Hwan Lee",
        "email": "jihwan@google.com",
        "time": "Sat May 17 23:18:40 2014 +0900"
      },
      "committer": {
        "name": "Ji-Hwan Lee",
        "email": "jihwan@google.com",
        "time": "Sat May 17 23:18:40 2014 +0900"
      },
      "message": "Fix build\n\nChange-Id: If0e46d6fa0f5b176c3b5294eab58d25935b3b4f8\n"
    },
    {
      "commit": "91b5c658d958f5330f81a7a4d9692b036991473d",
      "tree": "d88ee7c92f1dfe3236faaa31cc95bb3781cbc7b7",
      "parents": [
        "d27a69c40d285c8911dac19c22926ec279110e51"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri May 16 18:04:03 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri May 16 18:04:03 2014 -0700"
      },
      "message": "Fix build\n\nChange-Id: Ic0b36cd0f6525c4bc1ad365cd089e9a9fac9dc17\n"
    },
    {
      "commit": "c9ee304c91b5572f0c1cd95e9bd1e4a84e28587d",
      "tree": "bfa9e5965d749b815ac7e55cea6b7b204db70cca",
      "parents": [
        "6c536eac59adf6e11694ba3800222ad03fe93d1f",
        "deeda3d337aed1eee218b89a7aba5992ced371f0"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri May 16 00:37:28 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 16 00:37:29 2014 +0000"
      },
      "message": "Merge \"Round rect outline clipping\""
    },
    {
      "commit": "deeda3d337aed1eee218b89a7aba5992ced371f0",
      "tree": "15e13e84727baebce58b735e34ef5d198fd84389",
      "parents": [
        "fe4c1e225d147fe9cb5d7c121b7d6d11a312844e"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon May 05 19:09:33 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu May 15 16:36:12 2014 -0700"
      },
      "message": "Round rect outline clipping\n\nChange-Id: Iee9cf4f719f6f1917507b69189ad114fa365917b\n"
    },
    {
      "commit": "ff941dcd815021bb20d6504eb486acb1e50592c3",
      "tree": "1d417ed425ed1c08598689f302b31e23d73036f2",
      "parents": [
        "951ecb77c5dfe69a4d19d26429286111333ab123"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed May 14 16:34:14 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu May 15 08:53:39 2014 -0700"
      },
      "message": "Animator start value...\n\nChange-Id: Ifd35ed95a28c625086d7fa97764fe63ab4a997f1\n"
    },
    {
      "commit": "315c329544d7c593d1072b071cbb92d9afe74021",
      "tree": "b10fccc58bfb0267c049fd49d6a56dfc25c6ec23",
      "parents": [
        "a9c47626975181261a409d029d24d9c893bc4717"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri May 09 19:21:04 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon May 12 14:41:06 2014 -0700"
      },
      "message": "Add TimeInterpolator support to RNA\n\n Bug: 14678626\n\nChange-Id: I6554e7fcd42c49fac3618ca792083bb68e358f55\n"
    },
    {
      "commit": "030d619aaab044491381e72f222cc9ba8dabcc19",
      "tree": "e16de5c7954af8d86404b38fa189824225533f49",
      "parents": [
        "ebb9e69513b690881a5bad7bf45c6f32e0fc7062"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed May 07 15:45:47 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Wed May 07 15:46:36 2014 -0700"
      },
      "message": "Allow all loopers to be RT-accelerated\n\n Bug: 14445956\n\nChange-Id: I03e92642aa118db5c7fefa1f09c3a5bde6ea671d\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": "52244fff29042926e21fa897ef5ab11148e35299",
      "tree": "2cc7b2f6dd47fe7863c6bc2b6a806e275c149ba9",
      "parents": [
        "abc975f539b4ea06c05b11ec56b0abe7c6fd95aa"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu May 01 21:27:37 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri May 02 13:43:46 2014 -0700"
      },
      "message": "Add CanvasProperty for drawCircle\n\nChange-Id: Icbcc030f5033d2094e567d7c519b9d672f2aac1c\n"
    },
    {
      "commit": "cc39e16cb98855f35079941b5e7e6eac2b7bc388",
      "tree": "f37cb0ce9da11a018446adfb83c756f5e76e77f1",
      "parents": [
        "802667b20b2170ddce94d70a022b68b64b9a7493"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Apr 25 18:34:11 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Apr 28 14:33:33 2014 -0700"
      },
      "message": "Add elevation, Z properties to View\n\nChange-Id: I3dd3b683a66e248a0fdf2ca69d1e962615b0daf9\n"
    },
    {
      "commit": "7979388d4f7d5d9dbfcf7e1cc4709f8088c034ae",
      "tree": "fb8460098f57d66ed696b65a9cc70b51cf1128ff",
      "parents": [
        "07f0b8ee730be00a2a4bccf797bd8cb71e556546"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Apr 25 13:08:25 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Apr 25 15:59:47 2014 -0700"
      },
      "message": "Support Oval GradientDrawable outlines, and ShapeDrawable\n\nChange-Id: Ifc9e55757d3325cb28a1a812ec696512d4a18b39\n"
    },
    {
      "commit": "3f085429fd47ebd32ac2463b3eae2a5a6c17be25",
      "tree": "2930b7ee50ce98092fde97546a3d546c817038f1",
      "parents": [
        "fbb54b8363b66e0b22d519ee20d1a50e8b5340ee"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Apr 15 16:18:08 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Apr 23 16:15:11 2014 -0700"
      },
      "message": "Clip TouchFeedbackDrawable effect to receiver Outline\n\nProjected RenderNodes are now wrapped with a ClipRect or masked\nSaveLayer, so that they are clipped to the outline of the projection\nreceiver surface.\n\nChange-Id: I1d4afc1bb5d638d650bc0b1dac51a498f216773e\n"
    },
    {
      "commit": "dcc206dd76f5edbb588b06b3e4f3686cd9164f82",
      "tree": "4bf3c332ad6ac2a508b6da26474bbf146222a131",
      "parents": [
        "494fb7b58a21a7a9a8eba3bacecffe115edcb8c6"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Apr 11 14:20:08 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Apr 11 14:20:08 2014 -0700"
      },
      "message": "Remove isolated z volume test\n\nChange-Id: I757cd9445b7e8f564b5f1357d3e5c17032daf17e\n"
    },
    {
      "commit": "f666ad7046c0b1b255835f75aeb7d1391067df93",
      "tree": "fbb47933fdf2a0d9d2d4b85c34f0c39a419ba74b",
      "parents": [
        "6b2b14028ddec40b70c346f5a1e4d266720fadcd"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Fri Mar 14 16:24:57 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Mon Mar 17 10:30:32 2014 -0700"
      },
      "message": "Rename DisplayList-\u003eRenderNode\n\nChange-Id: Idcca6f26ba6282594789962f5edb3ed53a290fef\n"
    },
    {
      "commit": "f481907990a0667e8dc6b09cca87d8e52d489e25",
      "tree": "5ea204253d62c9fead628b33d6bde37d75e6d376",
      "parents": [
        "16340670aff0ec980fff4354d785a38b11c33d3b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 07 14:15:57 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 07 14:15:57 2014 -0800"
      },
      "message": "Fix build, removing hidden attr\n\nChange-Id: Ia820e76345ad6077025e887afdaa91e08eecd649\n"
    },
    {
      "commit": "6dbca96f0858372e4ba8214bc94876b9a0222ea7",
      "tree": "51b99a92c4f36d3fd33a182caa777461e6c89af8",
      "parents": [
        "adbd2ba1bcc222ce47e24d0db180bb85eefae371"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Mar 03 11:40:23 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Mar 03 11:43:43 2014 -0800"
      },
      "message": "Improve isolatedZVolume test\n\nShows interleaving effect better\n\nChange-Id: I85361b15587306484dc8fa6d6366e866014c270f\n"
    },
    {
      "commit": "1df26446b7eac7050767c38ca977fde03a41a033",
      "tree": "7a21fd8c7d067b80c704c72e2cf02342b7511c78",
      "parents": [
        "d5154ec2bc7e7c0bdfd14fc784912d390afe43cc"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 05 16:50:41 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Feb 06 16:07:37 2014 -0800"
      },
      "message": "Rework and clean up DisplayList projection\n\nMove the projection surface to be a property of a DisplayList,\nset to true for every background drawable.\n\nAdditionally, handle a projecting view background such that it doesn\u0027t\ntry to project onto itself (which is undesirable).\n\nChange-Id: Ic70b17474bd87340e80767f8518f73b233419c7a\n"
    },
    {
      "commit": "6657a6c53930eb0ff8d03317eb10ea7ddb0c49b4",
      "tree": "37821f1cd1b594c83b6341ce65c1e1847ef1ecf6",
      "parents": [
        "967c7fb2af23cbdadba45f9113cbcaa9f55c3f24"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Sun Jan 26 11:30:58 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jan 29 13:55:39 2014 -0800"
      },
      "message": "Update reordering method names, and make 3d reordering API public\n\nIsContainedVolume -\u003e hasIsolatedZVolume conveys that this affects Z\nordering of views\n\nProjectToContainedBackground -\u003e ProjectBackwards, since it ended up\nusing its own projection target, separate from the 3d volume bit\n\nChange-Id: Ia2cde838cc4da134366fe6ff623290fbd65e50c3\n"
    },
    {
      "commit": "f533e947035795a485344f4c270e16507f974901",
      "tree": "8d2ddc12234898cc2f3578f6db01d4d25b2248ef",
      "parents": [
        "81155da28476862a7056ec74312a8010ec154671"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jan 14 22:35:37 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jan 15 16:14:01 2014 -0800"
      },
      "message": "Support projection of DisplayLists onto ancestors.\n\nFor now, ancestor views signal the acceptance of projections with a\nsave(0x20)/restore pair.\n\nDuring the order traversal, each view with the save(0x20) code will\ncollect descendent views with mProjectToContainedVolume (which still\nneeds to be renamed) so that they can be drawn out of order later.\n\n- *Temporary* sample code added to HwAccelerationTest.\n\n- Note that a projected displaylist must not be clipped.\n\nChange-Id: I45c493e845961535b958d59c53e8aff3f8891d9f\n"
    },
    {
      "commit": "0a57d6587200b408263f5e895ad16c7108608a26",
      "tree": "a96213489851a8cbe52e8a22b4450b67ade435dc",
      "parents": [
        "2ef42b3d254537caafdb263361b7fcc6f79699d2",
        "c1acf7994a975903320ec8146c62118b651debc4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 20:16:12 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 21 20:16:12 2013 -0700"
      },
      "message": "am c1acf799: am 243a026b: Merge \"Second attempt at avoiding infinite loop in PathCache::trim() Bug #10347089\" into klp-dev\n\n* commit \u0027c1acf7994a975903320ec8146c62118b651debc4\u0027:\n  Second attempt at avoiding infinite loop in PathCache::trim() Bug #10347089\n"
    },
    {
      "commit": "5d923200846ed59e813373bde789d97d4ccc40b5",
      "tree": "db2f874cf61f812c4aa359f07d49525d8da82de8",
      "parents": [
        "0a8c51b1d0d66d6060afcec1eab33091d49332ae"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 18:40:24 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 18:42:46 2013 -0700"
      },
      "message": "Second attempt at avoiding infinite loop in PathCache::trim()\nBug #10347089\n\nChange-Id: I70f5a3933e848632473acc6636c88be5dc6ac430\n"
    },
    {
      "commit": "13656743cc21bac43676568314366497346713ee",
      "tree": "38e4547d5669b5d43c6482bb7372b6dab9b334d4",
      "parents": [
        "0c5e72127b7c002c9e9e7facf65b9c2e41c99556"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 19 17:42:51 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 19 18:18:00 2013 -0700"
      },
      "message": "Make color filters mutable\n\nChange-Id: I3d035d24a75e09db13d136a22bd7dbd326d0ce36\n"
    },
    {
      "commit": "b7b93e00893f5c690a96bd3e0e10583bc5721f83",
      "tree": "89c975e81ab527630ab4c10478b80bca12593d24",
      "parents": [
        "5d3dff1d66f99fbd5bef9178e62d789119c02ad1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 01 15:29:25 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 01 15:35:24 2013 -0700"
      },
      "message": "Fix region clipping bugs\nSee external bug #58344\n\nChange-Id: Iecd6c41fc8076cd76add2335d3442a6dd8878f12\n"
    },
    {
      "commit": "8018c8db8221aa604b3c083e09d173cc27e53d83",
      "tree": "60cbc26ddde4fa65a476a7e869d88f358b734210",
      "parents": [
        "93d34a61dbdfd9ece9ac4a53d78e896638172895"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 29 19:17:59 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 30 10:51:24 2013 -0700"
      },
      "message": "Add path ops API\n\nPath ops can be used to combine two paths instances in a single path\nobject. The following operations can be used:\n\n- Difference\n- Reverse difference\n- Union\n- XOR\n- Intersection\n\nTo use the API:\n\nPath p1 \u003d createCircle();\nPath p2 \u003d createRect();\n\nPath result \u003d new Path();\nresult.op(p1, p2, Path.Op.DIFFERENCE);\n\nThis code will subtract the rectangle from the circle and generate\nthe resulting path in \"result.\"\n\nChange-Id: Ic25244665b6691a7df0b0002a09da73d937b553b\n"
    },
    {
      "commit": "f69913056b8c6000ff0306573a97971702e8d35a",
      "tree": "c1180d9f68dac44dafd2be1b55cf1d8841d646f2",
      "parents": [
        "5d25b18ec82347975248b5a6cee5c7501e8a0b2d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 05 17:19:01 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 06 12:10:42 2013 -0700"
      },
      "message": "Remove unnecessary allocations\n\nChange-Id: Ia561a0a312ca2737d5afa742184f5392bb2f29a3\n"
    },
    {
      "commit": "3b748a44c6bd2ea05fe16839caf73dbe50bd7ae9",
      "tree": "ea104e727beba793c10952f5b328478020859599",
      "parents": [
        "dd424cf079d2677e9333d89466f93166787e61c8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Apr 17 18:54:38 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu May 02 13:32:09 2013 -0700"
      },
      "message": "Pack preloaded framework assets in a texture atlas\n\nWhen the Android runtime starts, the system preloads a series of assets\nin the Zygote process. These assets are shared across all processes.\nUnfortunately, each one of these assets is later uploaded in its own\nOpenGL texture, once per process. This wastes memory and generates\nunnecessary OpenGL state changes.\n\nThis CL introduces an asset server that provides an atlas to all processes.\n\nNote: bitmaps used by skia shaders are *not* sampled from the atlas.\nIt\u0027s an uncommon use case and would require extra texture transforms\nin the GL shaders.\n\nWHAT IS THE ASSETS ATLAS\n\nThe \"assets atlas\" is a single, shareable graphic buffer that contains\nall the system\u0027s preloaded bitmap drawables (this includes 9-patches.)\nThe atlas is made of two distinct objects: the graphic buffer that\ncontains the actual pixels and the map which indicates where each\npreloaded bitmap can be found in the atlas (essentially a pair of\nx and y coordinates.)\n\nHOW IS THE ASSETS ATLAS GENERATED\n\nBecause we need to support a wide variety of devices and because it\nis easy to change the list of preloaded drawables, the atlas is\ngenerated at runtime, during the startup phase of the system process.\n\nThere are several steps that lead to the atlas generation:\n\n1. If the device is booting for the first time, or if the device was\nupdated, we need to find the best atlas configuration. To do so,\nthe atlas service tries a number of width, height and algorithm\nvariations that allows us to pack as many assets as possible while\nusing as little memory as possible. Once a best configuration is found,\nit gets written to disk in /data/system/framework_atlas\n\n2. Given a best configuration (algorithm variant, dimensions and\nnumber of bitmaps that can be packed in the atlas), the atlas service\npacks all the preloaded bitmaps into a single graphic buffer object.\n\n3. The packing is done using Skia in a temporary native bitmap. The\nSkia bitmap is then copied into the graphic buffer using OpenGL ES\nto benefit from texture swizzling.\n\nHOW PROCESSES USE THE ATLAS\n\nWhenever a process\u0027 hardware renderer initializes its EGL context,\nit queries the atlas service for the graphic buffer and the map.\n\nIt is important to remember that both the context and the map will\nbe valid for the lifetime of the hardware renderer (if the system\nprocess goes down, all apps get killed as well.)\n\nEvery time the hardware renderer needs to render a bitmap, it first\nchecks whether the bitmap can be found in the assets atlas. When\nthe bitmap is part of the atlas, texture coordinates are remapped\nappropriately before rendering.\n\nChange-Id: I8eaecf53e7f6a33d90da3d0047c5ceec89ea3af0\n"
    },
    {
      "commit": "d4289922ce772ed8e170a27d1c9521672b315698",
      "tree": "211cddaef3df27355b6aa0029a39116c39b61c7e",
      "parents": [
        "c46d07a29e94807e768f8b162ce9f77a88ba6f46"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 18 19:30:48 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 18 19:30:48 2013 -0700"
      },
      "message": "Apply ComposeShader\u0027s local matrix to children\n\nChange-Id: Idf9b8e7d7b30f8fcd8ba1fd4bfe8991e9ca148e2\n"
    },
    {
      "commit": "c46d07a29e94807e768f8b162ce9f77a88ba6f46",
      "tree": "9b6aec5f5dc1d73b6cd9d583d5c5c78285480070",
      "parents": [
        "338b18844434379de54050ff582d36ff6da3ba11"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 15 19:06:39 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 18 18:32:17 2013 -0700"
      },
      "message": "Merge all shapes/paths caches to PathCache\n\nThis change will greatly simplify the multi-threading of all\nshape types.\n\nThis change also uses PathTessellator to render convex paths.\n\nChange-Id: I4e65bc95c9d24ecae2183b72204de5c2dfb6ada4\n"
    },
    {
      "commit": "5dc7fa709646799a5207a5d217f70aa02bf4a3aa",
      "tree": "3ebf45fa51bd0373f77aa451868df2d6ae1a8a87",
      "parents": [
        "8818d84a3540de6e53e5d82e2112292102574118"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 11 20:48:31 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 12 15:06:42 2013 -0700"
      },
      "message": "Add TaskManager API\n\nThis API can be used to run arbitrary tasks on a pool of worker\nthreads. The number of threads is calculated based on the number\nof CPU cores available.\n\nThe API is made of 3 classes:\n\nTaskManager\n      Creates and manages the worker threads.\n\nTask\n      Describes the work to be done and the type of the output.\n      A task contains a future used to wait for the worker thread\n      to be done computing the result of the task.\n\nTaskProcessor\n      The processor dispatches tasks to the TaskManager and is\n      responsible for performing the computation required by\n      each task. A processor will only be asked to process tasks\n      sent to the manager through the processor.\n\nA typical use case:\n\nclass MyTask: Task\u003cMyType\u003e\n\nclass MyProcessor: TaskProcessor\u003cMyType\u003e\n\nTaskManager m \u003d new TaskManager();\nMyProcessor p \u003d new MyProcessor(m);\nMyTask t \u003d new MyTask();\np.add(t);\n\n// Waits until the result is available\nMyType result \u003d t-\u003egetResult();\n\nChange-Id: I1fe845ba4c49bb0e1b0627ab147f9a861c8e0749\n"
    },
    {
      "commit": "ca89e2a68703bd428e8b66547d033a6ed35b3595",
      "tree": "5661de81848f7d26559531a1ea650ed7fea2decd",
      "parents": [
        "6e2004089305cf2cd958b52b234459a49a4e5c83"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 08 17:44:20 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 11 17:05:28 2013 -0700"
      },
      "message": "Precache paths from a worker thread\n\nChange-Id: I3e7b53d67e0e03e403beaf55c39350ead7f1e309\n"
    },
    {
      "commit": "19d4dd8599cb870923ab349d2ab96cacffd9c6f5",
      "tree": "86b0575167b2c27642a1e7a7296be2de2877474a",
      "parents": [
        "cdac497289fd2c39a352f6167dae3f77cc608cb8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 04 11:14:26 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 04 13:48:43 2013 -0800"
      },
      "message": "Take text scale/skew into account only when rendering into a layer\n\n3D rotations can undo scale/skew transforms; since FreeType only accepts\n2x2 matrices we can end up generating very large glyphs that are drawn\nat a 1:1 scale on screen. For instance, if the current transform has a\nscale of 2000 set on both X and Y axis and a perspective Z factor set to\nZ, the actual scale factor on screen ends up being 1. We would however\ngenerate glyphs with a scale factor of 2000 causing the font renderer\nto blow up.\n\nChange-Id: Ia5c3618d36644e817825cb9c89e2f53aece2074e\n"
    },
    {
      "commit": "a4adcf0239039eb8f005be252409901c41b28839",
      "tree": "bb339ae27217db42e4ef0de743b07ca138ef335a",
      "parents": [
        "aaa46155ec80f02b37ec858408d7dabbf9bc289a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 28 12:15:35 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 28 16:04:48 2013 -0800"
      },
      "message": "Support 3D rotations when drawing text\n\nIf a perspective transform is set on the Canvas, drawText() should\nnot attempt to rasterize glyphs in screen space. This change uses\nthe old behavior instead (i.e. rasterize the glyphs at the native\nfont size and apply the transform on the resulting mesh.)\n\nThis change also adds an optimization: empty glyphs (spaces) do\nnot generate vertices anymore. This saves a lot of vertices in text\nheavy applications such as Gmail.\n\nChange-Id: Ib531384163f5165b5785501612a7b1474f3ff599\n"
    },
    {
      "commit": "29ce8c98ff1cd2fdf6ccc5127aab466d52367b61",
      "tree": "c876567e7ed63c3a9b54da9108c3538c6c7ac449",
      "parents": [
        "19886f8b5109218191908d2ce5faf0293f85cf31"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 28 13:08:34 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 28 13:08:34 2013 -0800"
      },
      "message": "Reorganize OpenGL renderer tests\n\nThe new UI works just like ApiDemos. The label of the activities\ndeclared in the manifest defines where they go in the UI.\n\nFor instance Draw/Circles will create an entry called Draw in the\nfirst screen of the test app. Click the \"Draw\" item will launch\na new activity containing an item called \"Circles\".\n\nChange-Id: I98a4442ee3d992598af440b2078ae1925214da20\n"
    },
    {
      "commit": "c74f45a334f0e3725c23cdd270cbcb0efac4ea75",
      "tree": "1b198e8b6b7d6d4a69237116a580236836744294",
      "parents": [
        "d80806b305ce337283c24f14522cc58fea090b8c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 26 19:10:14 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 27 15:49:57 2013 -0800"
      },
      "message": "Properly scale text\n\nThis change does not apply to drawPosText() and drawTextOnPath() yet.\n\nPrior to this change, glyphs were always rasterized based on the\nfont size specified in the paint. All transforms were then applied\non the resulting texture. This creates rather ugly results when\ntext is scaled and/or rotated.\n\nWith this change, the font renderer will apply the current transform\nmatrix to the glyph before they are rasterized. This generates much\nbetter looking results.\n\nChange-Id: I0141b6ff18db35e1213e7a3ab9db1ecaf03d7a9c\n"
    },
    {
      "commit": "ff316ec7a76e52572a2e89b691e6b3bba0cafba3",
      "tree": "8418a45b809c9382a0fc3d9d9bb6db6a537dd4cc",
      "parents": [
        "2b44eb75c42e4caa94f0b002f0ea9e134fe7b543"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 13 18:39:43 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 13 18:39:43 2013 -0800"
      },
      "message": "Implement support for drawBitmapMesh\u0027s colors array\n\nChange-Id: I3d901f6267c2918771ac30ff55c8d80c3ab5b725\n"
    },
    {
      "commit": "3c099c42fd7ead1429076055990ae39b72c904f4",
      "tree": "d9c375c30a202a46a95282375c9b71d09d5c0ba0",
      "parents": [
        "b969a0de65730b071d846f8302e751e2637e6dbe"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 06 15:28:04 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 06 15:28:04 2013 -0800"
      },
      "message": "Fix Snapshot::resetClip to also reset the clip region\n\nChange-Id: I979151e73f64ff9d45f8a5232d8700361b09fbc7\n"
    },
    {
      "commit": "b969a0de65730b071d846f8302e751e2637e6dbe",
      "tree": "d49fd8cc93d96c54e991359e375c093882734909",
      "parents": [
        "15a4620b18412d81c1f9102cfc85777dece41a8b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 05 14:38:40 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 05 14:44:43 2013 -0800"
      },
      "message": "Add support for non-antialiased text\n\nChange-Id: I17c073955ab94abc9b409e5fcfbc675faa07c5ba\n"
    },
    {
      "commit": "c3fedafc5f50100219449125a000e3138f6fb987",
      "tree": "830bacf80a5b9e4194de2d221199dc86efe75555",
      "parents": [
        "8c47e856b067057b5fcbb6eccfc79d1da4cff8f1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 29 17:26:25 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 29 17:46:17 2013 -0800"
      },
      "message": "Fix graphical corruption on QCOM GPU\nBug #7146141\n\nThe GL_QCOM_tiled_rendering extension requires careful use of\nstart/endTiling when attaching a renderbuffer dynamically.\n\nChange-Id: I20036683ed3909ffaf40cc3d57a25257e35b6fa2\n"
    },
    {
      "commit": "2055abaa0a590c35e27e1ae2e7d7cfccdfb98b59",
      "tree": "1e302d08b6aa3714048a4d8435aa44f155c998c9",
      "parents": [
        "f25febf01453733e8bdd1ac241ecd9d3bcbef475"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jan 18 16:42:51 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jan 18 16:42:51 2013 -0800"
      },
      "message": "Allow layers with a stencil buffer to be resized on the fly\nBug #7146141\n\nThis change moves the resizeLayer() from LayerCache (where it should\nnever have been anyway) to Layer. This makes a little more sense.\n\nChange-Id: I8b2f9c19c558e738405a58b9e71ec5799fc6be88\n"
    },
    {
      "commit": "8ce00301a023eecaeb8891ce906f67b513ebb42a",
      "tree": "3b14c80a49cbec537aad39aa4bb266cac41102f7",
      "parents": [
        "0f8d155363c361199a9d9aa5dcdbc4088990f893"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 15 18:51:42 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 17 15:39:31 2013 -0800"
      },
      "message": "Implement clipRect with a transform, clipRegion \u0026 clipPath\nBug #7146141\n\nWhen non-rectangular clipping occurs in a layer the render buffer\nused as the stencil buffer is not cached. If this happens on a\nView\u0027s hardware layer the render buffer will live for as long\nas the layer is bound to the view. When a stencil buffer is\nrequired because of a call to Canvas.saveLayer() it will be allocated\non every frame. A future change will address this problem.\n\nIf \"show GPU overdraw\" is enabled, non-rectangular clips are not\nsupported anymore and we fall back to rectangular clips instead.\nThis is a limitation imposed by OpenGL ES that cannot be worked\naround at this time.\n\nThis change also improves the Matrix4 implementation to easily\ndetect when a rect remains a rect after transform.\n\nChange-Id: I0e69fb901792d38bc0c4ca1bf9fdb02d7db415b9\n"
    },
    {
      "commit": "735738c4ddf3229caa5f6e634bf591953ac29944",
      "tree": "4e972e943ffefc5bc268629ed45e8a5783ffe7c5",
      "parents": [
        "57b59e025bc10056daf42cd741b626843ff344f5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 03 12:34:51 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 14 14:27:54 2013 -0800"
      },
      "message": "Preliminary Support for region clipping\n\nRegion clipping, using Canvas.clipPath or Canvas.clipRegion, requires\na stencil buffer to be always present. In addition, extra wiring is\nrequired in JNI and display lists.\n\nThis change only adds the necessary JNI/C++ APIs and some extra\nplumbing to start the real work on properly supporting region\nclipping.\n\nA new debug define called DEBUG_CLIP_REGIONS can be used to draw\nthe current clip region. It is off by default, as is region\nclipping.\n\nThe default implementation of clipPath() and clipRegion(), now\nin native, mimics the previous Dalvik implementation to prevent\nregressions.\n\nChange-Id: I7903e7cfd7412b9b9b622566d4dbfce7bdcec00c\n"
    },
    {
      "commit": "5341cead27070656458750a789ba211a505b57b5",
      "tree": "4887e2e3289373e24a6496427df4597b5b28f458",
      "parents": [
        "16ad17705eb22bb02a551cddd68f65b8addaa4d6"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 09 14:15:58 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 09 14:15:58 2013 -0800"
      },
      "message": "Cleanup 9patch mesh matching code\nBug #7970966\n\nThe bug described in #7970966 should normally never happen but just in\ncase, change the detection code to be more robust.\n\nChange-Id: I7040a6087590e34abe8803cb8f83f051d77f3944\n"
    },
    {
      "commit": "e3a9b24b5e3f9b2058486814a6d27729e51ad466",
      "tree": "17830a6fd61c286854cebb07638d3c2dea6277cd",
      "parents": [
        "5b4628aeeaa0462cd99256d28b636c06b1845930"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 08 11:15:30 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 08 15:21:42 2013 -0800"
      },
      "message": "Add plumbing for better text scaling\n\nFonts are now described by a transform matrix. This lead to switching\nfrom a vector to a hashmap. This change therefore adds new comparators\nand hash computations to Font.\n\nChange-Id: I2daffa7d6287c18554c606b8bfa06640d28b4530\n"
    },
    {
      "commit": "5b4628aeeaa0462cd99256d28b636c06b1845930",
      "tree": "1e438a572917e0cd4a32d64cdca8ff192b51169c",
      "parents": [
        "7d1c4fa322dec1247f7d509a066e436f1d2706fa"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 07 18:11:52 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 07 18:11:52 2013 -0800"
      },
      "message": "Add more tests for libhwui\n\nThese tests verify the behavior when scaling paths and text\n\nChange-Id: I0f3259175bcee93186e30296759996e0447cba99\n"
    },
    {
      "commit": "886b275e529e44a59c54b933453d9bc902973178",
      "tree": "33ed0717b43683ba9f8a825c7012739a2146e943",
      "parents": [
        "5913148104f0b233d861fab2873befc865bf57c0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jan 04 12:26:18 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jan 04 15:15:16 2013 -0800"
      },
      "message": "Properly support ALPHA_8 bitmaps in all drawBitmap() methods\n\nChange-Id: I869993c59e0a0d76f369c09acbae711753908f48\n"
    },
    {
      "commit": "1b85122bd22c4528679ae8bd67077dfc2fdf1847",
      "tree": "4664b577e4dfdd34b63e6004961c8c7d2f3e1e0b",
      "parents": [
        "e13ae648504661ca158d15aa415568e351b380c4",
        "713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 16 19:05:48 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 16 19:05:49 2012 -0700"
      },
      "message": "Merge \"Add API to enable mipmaps on Bitmap Bug #7353771\" into jb-mr1-dev"
    },
    {
      "commit": "713e1bb9df6bdfc21bd5c40d1a6ecf6c822a4be5",
      "tree": "d2cb42c7e05fff03274f9acdbdee80d848a86da2",
      "parents": [
        "d43b22da291fd08017fac627561091a633c85807"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 16 18:44:09 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 16 18:44:09 2012 -0700"
      },
      "message": "Add API to enable mipmaps on Bitmap\nBug #7353771\n\nThis API can be used when scaling large images down to a small size\nto get nicer looking results.\n\nChange-Id: If09087eed36077eee5355f6047a3ca67747d7d9e\n"
    },
    {
      "commit": "a92bb4dc9605c86b8773c929412af2dc242b1fa8",
      "tree": "bf77badb865a50d59f6d9ecf40426ab6e0a72bbb",
      "parents": [
        "4682cf02b42f75876f14f512e874c3e798b09c9c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 16 11:08:44 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 16 11:09:26 2012 -0700"
      },
      "message": "Support clipping in Canvas.drawBitmapMesh()\nBug #7354162\n\nChange-Id: Ifd1d0b365e8a4d88e0ff0629c9ee13f27e1a7331\n"
    },
    {
      "commit": "5c2591e6eff3233c7f9c5bbae0dd20c1320f0854",
      "tree": "47c43c26679edb66f8bdb5e355ad015f7c171689",
      "parents": [
        "067af95257e1f8007a3a1777c257760aed9947af",
        "d88e3054d08b1f821bb2e27b2647aa16a60d8742"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Sun Sep 23 11:10:40 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Sep 23 11:10:40 2012 -0700"
      },
      "message": "Merge \"Fix bug #7206086 NumberPicker widget should use locale digits\" into jb-mr1-dev"
    },
    {
      "commit": "d88e3054d08b1f821bb2e27b2647aa16a60d8742",
      "tree": "7a55ebb26900c310a8886b7b26e617aec71cbf09",
      "parents": [
        "4e7b551fbffa6112821ed6cfeedd6128463fccd0"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri Sep 21 12:15:23 2012 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri Sep 21 18:42:47 2012 -0700"
      },
      "message": "Fix bug #7206086 NumberPicker widget should use locale digits\n\n- fix for having the TwoDigitFormatter being able to be recreated if the locale is changed\n- accept now also the Arabic and Persian digits\n\nChange-Id: Ifbf7e274d971008f4a5782402d4b76d9472b68fc\n"
    },
    {
      "commit": "57b5268708c3b974296c7d4e58a02a957979224a",
      "tree": "bb3a36e20b66edcbd7539aefd947c5b57d2897b3",
      "parents": [
        "314488b791d36756504ee593f818f04b4cd24893"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 20 17:38:46 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 20 17:38:46 2012 -0700"
      },
      "message": "Optimize tiling management\nBug #7186819\n\nChange-Id: Iebc42a6e9c96ad5605fbbe1539aa887695d2e829\n"
    },
    {
      "commit": "2b7028eabac80cec170572bc0e945a1d4224e595",
      "tree": "116f24c751ece653a5c1e08aa9c142ad1e142b25",
      "parents": [
        "4be07ade3658da9345067780520ddbd266900ee4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 19 17:25:38 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 19 21:10:09 2012 -0700"
      },
      "message": "Add support for QCOM_tiled_rendering\nBug #7186819\n\nThis optional OpenGL extension can be used by tiled renderers to optimize\ncopies from main memory to tiles memory.\n\nChange-Id: Id4a5d64e61ad17f50e773e8104b9bf584bb65077\n"
    },
    {
      "commit": "189ff17caa29e51e3438af59fb33c5cb513018bd",
      "tree": "a3e6c5a7ac20840dbbe86612b016d02fde1e0adc",
      "parents": [
        "684385ddde2ac0c26de0862390ad713aff3fb149"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Sep 18 18:59:59 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Sep 18 18:59:59 2012 -0700"
      },
      "message": "Add test for layer updates optimizations\n\nOptimizations are following.\n\nChange-Id: I120e1d0c08d8068fcac46515f37a4ae510e5f3a3\n"
    },
    {
      "commit": "4aacf93d40b4be82aa35bf164d6fd6536c8b2a50",
      "tree": "daa3d1fab2d9688f1d8f8aa06064b2f99cce0b42",
      "parents": [
        "4ea283a05f3724285ed3057ff1de1a344ab3e15a",
        "e49d7ec36132f33b7c9e2c044ab9dd3585aa3747"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 07 18:44:39 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 07 18:44:40 2012 -0700"
      },
      "message": "Merge \"Fix memory corruption in LayerRenderer::copyLayer\" into jb-mr1-dev"
    },
    {
      "commit": "e49d7ec36132f33b7c9e2c044ab9dd3585aa3747",
      "tree": "1321a0c086c3b17de0d3c4a62645f672fa511d6d",
      "parents": [
        "1558cf1498ecc687532f2dad3de720053dca9309"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 07 18:42:38 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 07 18:42:38 2012 -0700"
      },
      "message": "Fix memory corruption in LayerRenderer::copyLayer\n\nThe pixel store pack alignment was not set for the source texture,\ncausing a write to occur outside of the destination bitmap\u0027s\nbounds.\n\nChange-Id: Iaa5767acf7b5943fbc2765c3810a142f06b1a796\n"
    },
    {
      "commit": "75040f8a7727f18bb33da23696a32a0760926ff2",
      "tree": "9f32eb9b41df3c09ce0f27abae389695eaa3ff3d",
      "parents": [
        "9147cd4ac56d53dec6da1ef13dd04ba1eec1a7df"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Sep 07 13:56:43 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Sep 07 15:20:38 2012 -0700"
      },
      "message": "Handle different x, y scales in drawLines AA path\n\nbug:7114630\n\nFixes different x, y scales, and fixes boundaryWidthProportion to be from\ncenter, not edge.\n\nAlso adds drawLine tests that previously drew blurry.\n\nChange-Id: I2b648a60361ad3931eac67647b9b27909525ee1e\n"
    },
    {
      "commit": "378d131e65348d199db36c21ba7156542bbf0045",
      "tree": "b2e41ab4962973acea7fe8a3b9b3f97581ead2be",
      "parents": [
        "369bb97d02209fa800081fc3b4e8675ea7e75d34",
        "6ebdc114e0d72137394f02bc8ffe9d7a782a65c4"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Sep 06 10:52:13 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 06 10:52:14 2012 -0700"
      },
      "message": "Merge \"Varying-based AA rect drawing\" into jb-mr1-dev"
    },
    {
      "commit": "6ebdc114e0d72137394f02bc8ffe9d7a782a65c4",
      "tree": "4900dd3246e54b2dcaa869b519e181542467ae82",
      "parents": [
        "176d105d2f71198966b566d36d4e856a797695c7"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Aug 31 18:24:33 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Sep 05 16:45:03 2012 -0700"
      },
      "message": "Varying-based AA rect drawing\n\nInstead of calculating opacity from relative position in the shader, use a\nshader varying to do this computation for us.\n\nbug:5045101\n\nAlso adds a test to HwAccelerationTest to show incorrect antialiasing in\nscaled drawAARect / boundarySize calculation.\n\nChange-Id: Icdc41acb01dc10ce354834f8389a5aed2f439162\n"
    },
    {
      "commit": "9fc4b356a4552336f661bf4dfaaa19a251194cdb",
      "tree": "304b88ff4c3d4dc2deb43384f1288a9e1a51de24",
      "parents": [
        "599943e48b92594f40b278813e0203aa722a18ec"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Sep 04 10:27:05 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Sep 04 10:27:05 2012 -0700"
      },
      "message": "Add new hw acceleration test\n\nChange-Id: Id2b94286cf62ab77d8c843cffaba09b3070a6332\n"
    },
    {
      "commit": "e816baea651476aca4407200d4a5e629b9ab8dfa",
      "tree": "03d9a7d4bdda72e8811486706cb67152a43e7966",
      "parents": [
        "38cc2a5a3ad076fbbb0824a91f49730a4297549b"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Aug 09 13:39:02 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Aug 14 10:33:30 2012 -0700"
      },
      "message": "Optimize interactions with glyph cache\n\nThere are two fixes here:\n- precaching: instead of caching-then-drawing whenever there is a new\nglyph, we cache at DisplayList record time. Then when we finally draw that\nDisplayList, we just upload the affected texture(s) once, instead of once\nper change. This is a huge savings in upload time, especially when there are\nlarger glyphs being used by the app.\n- packing: Previously, glyphs would line up horizontally on each cache line, leaving\npotentially tons of space vertically, especially when smaller glyphs got put into cache\nlines intended for large glyphs (which can happen when an app uses lots of unique\nglyphs, a common case with, for example, chinese/japanese/korean languages). The new\napproach packs glyphs vertically as well as horizontally to use the space more efficiently\nand provide space for more glyphs in these situations.\n\nChange-Id: I84338aa25db208c7bf13f3f92b4d05ed40c33527\n"
    },
    {
      "commit": "320d46bf844b84351cb80c5d4a4768d86447ac81",
      "tree": "fee65370216aee9df6116a46ebae0edfd8de1272",
      "parents": [
        "c89b14bba0f6cc2c91629080617f7ed215f697f3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 08 16:05:42 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 08 16:05:42 2012 -0700"
      },
      "message": "Reduce gradients textures size whenever possible\n\nChange-Id: Ifd58625ee62edac3b5d20b77553cb98b6fa2b46e\n"
    },
    {
      "commit": "33fa1f774c8e7289fd7c39fbc2c65b9361f2c2c4",
      "tree": "d74879134ece535c3930df34a05857566be6307b",
      "parents": [
        "2440e670de0294bdf64592849613db9b8f00ee11"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 07 19:09:57 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 07 19:09:57 2012 -0700"
      },
      "message": "Draw an empty border around glyphs to avoid sampling issues\nBug #6942209\n\nThe font renderer was preserving a 1 px border around each glyph to ensure\nbilinear filtering would work nicely. Unfortunately, this border was not\nset to 0 when glyphs were added in the cache to replace old evicted glyphs.\n\nChange-Id: Ib85afca7ebad5cb63f960dc0e87ae162333dbfe8\n"
    },
    {
      "commit": "211efea7376371ee755edd2ad03e83ef6eea464e",
      "tree": "b79530b9f807f24571ce0e9ca143747e8c418725",
      "parents": [
        "42e1e0d482d774cf18a55773e434f02edb9e4462"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 31 21:16:07 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 01 19:18:35 2012 -0700"
      },
      "message": "Add dithering to gradients\n\nChange-Id: Ic1208855bde3a254eca2fd7cef43e0f1318ce419\n"
    }
  ],
  "next": "42e1e0d482d774cf18a55773e434f02edb9e4462"
}
