)]}'
{
  "log": [
    {
      "commit": "cac5fd3e09e9dc918753d4aff624bf29a367ade3",
      "tree": "6d1db0b5ed0cf9ce616f7e8d969da81f7f606b66",
      "parents": [
        "d21b6e1fe337b35f62cf2028e9bd0637fd009a75"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Dec 01 20:08:50 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Dec 01 20:08:50 2011 -0800"
      },
      "message": "Faster text clipping\n\nChange-Id: I03a00c4261d81a416b1ad7b86ce2d432c71908b4\n"
    },
    {
      "commit": "d21b6e1fe337b35f62cf2028e9bd0637fd009a75",
      "tree": "8831d34e2dd0335c158c2aa12bee68452745c8c5",
      "parents": [
        "28147b654bba8ae2b7976e58aa7869255e436b0b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Nov 30 20:21:23 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Nov 30 20:21:23 2011 -0800"
      },
      "message": "Optimize away unnecessary state changes\n\nChange-Id: I0f6816f9f6234853575ecee5033186ad19e76380\n"
    },
    {
      "commit": "d3ea6b40bb8f0fbc2a877963db1ab4fa0fc02b2f",
      "tree": "2f0be21ad21c6efc24597d5cadbadd5645da091c",
      "parents": [
        "589364c7179e764f4e8b9c0d53f45a1abf528aa8",
        "3892889952b0ad3fa0b095c96d8ae2ae110585e2"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Nov 28 15:47:16 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 28 15:47:16 2011 -0800"
      },
      "message": "am 38928899: am 8990cb57: Merge \"Fix flashing wifi dialog after rotating back from landscape.\" into ics-mr1\n\n* commit \u00273892889952b0ad3fa0b095c96d8ae2ae110585e2\u0027:\n  Fix flashing wifi dialog after rotating back from landscape.\n"
    },
    {
      "commit": "08837c246c9c27902c59b41c8661c2f27a4aa2bc",
      "tree": "ef44ddbbbe0ffe253fff53baa2701d8c747db570",
      "parents": [
        "425c595acb798ed9652b5a1f0e5412cbd8e3873d"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Nov 28 11:53:21 2011 -0800"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Nov 28 15:19:22 2011 -0800"
      },
      "message": "Fix flashing wifi dialog after rotating back from landscape.\n\nThere was an error in some of the OpenGL layer logic such that we would\noccasionally set up a layer for rendering and then not clean up when it was\ndone. This caused future OpenGL rendering to go into that layer instead of\nto the buffers being displayed on the screen, resulting in artifacts including\nflashes and displaying of stale content. This happened specifically when\nusing the wifi settings dialog with the InputMethod keyboard displayed,\nbut it was probably visible in other situations as well.\n\nIssue #5628248: Flickering/flashing after entering password for WiFi\n\nChange-Id: I38139f620b310f4309570fa7224552d2ee633999\n"
    },
    {
      "commit": "c28e574037b2bfc8c2ea24593299aa20ae9078f8",
      "tree": "38a75bdcc25887e4c9f2c640227fce4d2635079a",
      "parents": [
        "0ce49783083bf81cc1ea812e029fc94e1625a8fd",
        "a2fabf4a109d46f99ff7370aa05e48c1708c2838"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Nov 22 12:42:06 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 22 12:42:06 2011 -0800"
      },
      "message": "am a2fabf4a: am 303a0695: Merge \"Draw in the correct FBO after invoking a GL functor Bug #5650514\" into ics-mr1\n\n* commit \u0027a2fabf4a109d46f99ff7370aa05e48c1708c2838\u0027:\n  Draw in the correct FBO after invoking a GL functor Bug #5650514\n"
    },
    {
      "commit": "421458aad764cd9d1403d2540ab979b336b02341",
      "tree": "403620dc73a58422834e39e2ba04059ea1ed1274",
      "parents": [
        "7859c1842c1f2e3c43415dfb5337a0b005bdb1c4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Nov 21 15:14:37 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Nov 21 15:14:37 2011 -0800"
      },
      "message": "Draw in the correct FBO after invoking a GL functor\nBug #5650514\n\nAfter invoking a GL functor, libhwui restores a few OpenGL states\nincluding the current FBO. The renderer was however making the\nwrong assumption that the FBO to restore to was the base layer\ninstead of the FBO associated with the current canvas state.\n\nChange-Id: Ie565500832ebffd673f6a43b83422d6cc05470a0\n"
    },
    {
      "commit": "28a5ec9613a824d2ec15ce5e5cec77a6fcf444d5",
      "tree": "07bea7361a1fefe863809e83e585f4d0b194ec7d",
      "parents": [
        "196c215a8b89499a353cf023488a04888431a6b0",
        "2cfb873c9f0b56f2c7d694a21c968511223933af"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Mon Nov 14 12:30:04 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 14 12:30:04 2011 -0800"
      },
      "message": "am 2cfb873c: am 9d66da8a: Merge \"Revert \"Discard framebuffer rendering queues when discarding layers\"\" into ics-mr1\n\n* commit \u00272cfb873c9f0b56f2c7d694a21c968511223933af\u0027:\n  Revert \"Discard framebuffer rendering queues when discarding layers\"\n"
    },
    {
      "commit": "7077506f9945b87b02bdd47ffce75a5b813c821c",
      "tree": "303448affa31375afa0a721d8d5555801ead8454",
      "parents": [
        "cde433c5f75fd4ac2ab31e9fc34654750d1e83f8"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Mon Nov 14 11:39:30 2011 -0800"
      },
      "committer": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Mon Nov 14 11:39:30 2011 -0800"
      },
      "message": "Revert \"Discard framebuffer rendering queues when discarding layers\"\n\nThis reverts commit da96f8ac2c1c35a54f3f36e6d776cb386a251d03.\n"
    },
    {
      "commit": "3f511aaf1cb9dfa69e2f4225a5bd41bec0864cc7",
      "tree": "70f0bfe3328a8d573208abbf3a12e5a883c48f7a",
      "parents": [
        "e7a8aae0a60cdb251fb83eba2ccb35c5f00a0cdf",
        "a16ee9390e1fcea8ff7cbefd253659c37f2999a3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 14 07:49:07 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 14 07:49:07 2011 -0800"
      },
      "message": "am a16ee939: am 28587497: Merge \"Discard framebuffer rendering queues when discarding layers Bug #5581817\" into ics-mr1\n\n* commit \u0027a16ee9390e1fcea8ff7cbefd253659c37f2999a3\u0027:\n  Discard framebuffer rendering queues when discarding layers Bug #5581817\n"
    },
    {
      "commit": "da96f8ac2c1c35a54f3f36e6d776cb386a251d03",
      "tree": "646abfdfeee4346b422943924182162f4a3cdf84",
      "parents": [
        "50a66f0e9c5a85a6af4a99eb66656a69eba24572"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Nov 10 19:23:58 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Nov 10 19:23:58 2011 -0800"
      },
      "message": "Discard framebuffer rendering queues when discarding layers\nBug #5581817\n\nChange-Id: If612846ec5f7793710fc4df152791fb32c506551\n"
    },
    {
      "commit": "ef9bb3c3ea3aa08071ea0c32a505b379c322e5b5",
      "tree": "2c7e9eac12b3ac3ace044d9f1f0c8b11d59176ae",
      "parents": [
        "688ff9a7d6c42d4b26f1a72f963d09203f774c3f"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Mon Oct 17 11:06:46 2011 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Tue Nov 01 17:16:08 2011 -0700"
      },
      "message": "Fix bug #5438102 Double Arabic harakat overlap instead of stack In TextView\n\nIMPORTANT: this change needs two patches for Harfbuzz:\n- one concerning hb_utf16_script_run_prev() which was not returning the correct \"previous\" script\n- one for the \"script_properties\" table that was missing Arabic code point ranges and declaring\nHB_Script_Inherited instead of HB_Script_Arabic\n\nThe current change is doing the following:\n- pass the correct typeface for Harbuzz shaping (depending on the script of the run)\n- offset correctly the glyphIDs returned by Harfbuzz\n\nWe need to offset the glyphsID as Harfbuzz will return local glyphIDs (meaning in the\nlocal range of the font used for shapping).\n\nWe then cannot use those glyphIDs when we are using a fallback Font (Arabic, Hebrews...)\nbecause the FontRenderer needs glyphIDs in the range of all the Fonts (including the fallbacks)\n\nChange-Id: I494897435bbc59293b02392ee2059cebcdf0e571\n"
    },
    {
      "commit": "e707859415f4c8e1c01228dfaa58fb0a690d442e",
      "tree": "880dfbda361e41286f0cda9789889a7b64c9a106",
      "parents": [
        "ee5954a8fe890a373f6e651c50ca5a2c53dac756"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Oct 28 14:32:20 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Oct 28 14:32:20 2011 -0700"
      },
      "message": "Load identity matrix when calling Canvas.setMatrix(null)\nBug #5446826\n\nChange-Id: I3a7817f266b17e9abe948500816d629edd9a2822\n"
    },
    {
      "commit": "2ffefd48e20d311b38c0673edadb27c1f6ad328b",
      "tree": "1adeefe99d2ca6b006ea87dcb3324949e990462e",
      "parents": [
        "e080af37544f5d7d0cc8140289ac96dd21a8742d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 08 15:33:03 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 08 15:33:03 2011 -0700"
      },
      "message": "Add support for 3 new blend modes when blending with framebuffer:\n  Add\n  Multiply\n  Screen\n\nChange-Id: I92a3c2612c86613087568bf0c03cc6f92b5ded44\n"
    },
    {
      "commit": "8a3957d43bcae93fbb9f6b4b4c3de8abdb3c953c",
      "tree": "53c8d8bbf6c229316644bdc8d492a658ceb8a4e3",
      "parents": [
        "7a57009c3ab5e4a55db448596a650261e878c975"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 07 17:55:15 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 07 17:55:15 2011 -0700"
      },
      "message": "Add reminder in the code to fix T-junctions\n\nChange-Id: I52b112694f930e641f01fb78dc55412986023411\n"
    },
    {
      "commit": "04c9d8c2ffd028c35c750bac0a4a7b79e48059b5",
      "tree": "5f81921f30f373d4377f470e06193b242b3c8ae4",
      "parents": [
        "189887e0ae171c1b7601991442104a30e56c50ab"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 25 14:01:48 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 25 14:01:48 2011 -0700"
      },
      "message": "Optimize display lists\n\nRemove redundant or useless operations\n\nChange-Id: If989b4eaa9143eef4254c38b39959aeed1f2b9ab\n"
    },
    {
      "commit": "631582f7f7a3c879a5fba81f2bc082e4826758aa",
      "tree": "20cfea489e2f22d08104ea3a7391f596df43beb4",
      "parents": [
        "6816972eb69ee8b294553dac92b3c1ad5b1ca1f7"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 24 11:51:35 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 24 11:51:35 2011 -0700"
      },
      "message": "Enable linear filter when scaling bitmaps\nBug #5205673\n\nChange-Id: I8b0f90877df6b6c6757d35dcf6cd14e79e840b96\n"
    },
    {
      "commit": "6816972eb69ee8b294553dac92b3c1ad5b1ca1f7",
      "tree": "6174bc7bba14ffc748bff13bbebcd62f6f6a1f9a",
      "parents": [
        "91bd59dbda75d176a79d5c42cccce0a9b0391bde"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 22 17:33:33 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 22 17:33:33 2011 -0700"
      },
      "message": "Don\u0027t use bilinear filtering on unscaled bitmaps\nBug #5198590\n\nChange-Id: I4333d850501ac849eeeeb247e4178dd469b9de3d\n"
    },
    {
      "commit": "302a9df1d50373c82923bb84ff665dfce584fb22",
      "tree": "01a6e183b3c0f49676730a679397a31692942f8d",
      "parents": [
        "95a78c38373bb99258d83a6ab2c92825d979f200"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 16 13:55:02 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 16 13:55:02 2011 -0700"
      },
      "message": "Add an API to set the transform on a TextureView\u0027s surface texture.\nBug #5156689\n\nChange-Id: I635a625885c9b832a60d44ece0de7613ceb84109\n"
    },
    {
      "commit": "9d865512f1a39bac6bed612b24023213d5a1fb1d",
      "tree": "ab2c197947927eb61cbb54faa460b85cd0e7e155",
      "parents": [
        "e63a4f35c94f32dbc13533ddfb7334f9706be844"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 11 17:31:42 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 11 17:37:02 2011 -0700"
      },
      "message": "Remove unnecessary private API\n\nChange-Id: I2ecb367528ec0691c07153a3d163b82a6ca33fdf\n"
    },
    {
      "commit": "b50149825fae95b2918bcf67b2ddb773b9797068",
      "tree": "0a7e7b7deda72360adfabed3bc7d64eeccc7311c",
      "parents": [
        "a7ffaee29892cc38ae2327017b6670adafef711b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 28 15:39:12 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 28 15:40:47 2011 -0700"
      },
      "message": "Correctly apply linear filter to drawBitmap(Rect, Rect)\n\nChange-Id: I1049282e1996b1020c92cb7bec46e9f28e94e967\n"
    },
    {
      "commit": "e3c26851dc315b730ea0fe5ef35bb1db81f6d675",
      "tree": "bc3fbae626f785fa38e40d4f5ab3737777d9a1ef",
      "parents": [
        "29d23ecfd8612ecd4a7b2140acd344934b73a558"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 25 16:36:01 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 25 16:36:01 2011 -0700"
      },
      "message": "Improve rendering performance on some GPUs\n\nThis change sets textures filtering to GL_NEAREST by default. GL_LINEAR\nfiltering is only used when textures are transformed with a scale or\na rotation. This helps save a couple of fps on some GPUs.\n\nChange-Id: I1efaa452c2c79905f00238e54d886a37203a2ac1\n"
    },
    {
      "commit": "f2fc460a9512500d9d5749fbaada88903d8e3b22",
      "tree": "6751bbfd9de2084b19d03e8995e52569cbd98cfb",
      "parents": [
        "566b3efb25299d2a9c8ae827522802bad965426a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 19 15:20:03 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 19 15:20:03 2011 -0700"
      },
      "message": "Reduce the fade area to save bandwidth.\n\nChange-Id: I8ccea17fc1fb3c132329baa0acc1b3d5a140a5c6\n"
    },
    {
      "commit": "b2479153b743df9e54f7e17c7132a5ecd87fa453",
      "tree": "9c57ccc10e57d9743dfa0bbc92b41ba0a060c85b",
      "parents": [
        "cfacbeadffb5dccbf0434d9c05b19430a5237c3b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 08 11:57:29 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 08 11:57:29 2011 -0700"
      },
      "message": "Correctly position layers.\n\nChange-Id: I1678b1c5bdab140b44e56556c50ab8329255f18a\n"
    },
    {
      "commit": "ec19b4a764d512091a780fc93ced567dfbf80914",
      "tree": "d984af1d55edf6bb305ca36617db679bc546f23a",
      "parents": [
        "9ace8f5e79e76893fe4ca9e4d10f6c4056330485"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 07 21:05:04 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 07 21:27:14 2011 -0700"
      },
      "message": "Use NEAREST filtering mode for TextureView.getBitmap().\n\nChange-Id: I4649062bbdf18ebba7924bdf578f39ad8f6576ac\n"
    },
    {
      "commit": "9ace8f5e79e76893fe4ca9e4d10f6c4056330485",
      "tree": "dac712f57ecba04e50aac7c5934498d9be89c8a1",
      "parents": [
        "f61970fc79e9c5cf340fa942597628242361864a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 07 20:50:11 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 07 20:50:11 2011 -0700"
      },
      "message": "Use NEAREST filtering for layers whenever possible.\n\nChange-Id: Id5bee1bd4a322cf93e8000b08e18f1e1b058648e\n"
    },
    {
      "commit": "a9489274d67b540804aafb587a226f7c2ae4464d",
      "tree": "2e181f440cfdda41da82e3763523b437af0fcf8f",
      "parents": [
        "d586ad9c9fec80aa1d24d6b53cd2c8d5b47fe868"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 22 20:58:11 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 22 20:58:11 2011 -0700"
      },
      "message": "Add the ability to specify the opacity of a TextureView\n\nTextureView assumes its content is opaque by default.\n\nChange-Id: Iba873423566a5b67c388081838bd910dceba32ba\n"
    },
    {
      "commit": "d6b2a00dd43257d1498b09175bff63663f6cb861",
      "tree": "458956fbcc18eb53ddc81fd7a4d1bf64ee3c7a92",
      "parents": [
        "98029c825b9234e6b90721d910cc180885fcab1d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 17 17:45:59 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 17 17:45:59 2011 -0700"
      },
      "message": "Add error checking to LayerRenderer::copyLayer\n\nThis method is invoked by TextureView.getBitmap() and failures must be\ncaught to avoid leaving the GL context in a potentially bad state.\n\nChange-Id: I620de395ba1bc20154de58c81963223dc55cac78\n"
    },
    {
      "commit": "54be1cdf3d63095512120fa7ced5c16e462abffa",
      "tree": "01f454747cc08f12375ae1ce458b0ef07beecbef",
      "parents": [
        "40b62576ffeea06e481cae40db89455c2ddf8a63"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 13 19:04:27 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 13 19:04:27 2011 -0700"
      },
      "message": "Batch glCopyTexImage() calls to get about 15 fps back on SGX.\n\nChange-Id: I04079e070739c1e46df3e90fc388c335e2a7d2b9\n"
    },
    {
      "commit": "181d0a6ccedee03789919d53c46540a8df751896",
      "tree": "9a18b084e28573c7625b4f1db25fb12fd05f8f71",
      "parents": [
        "59a12cae208790dd202656f50a40a53ef49baeeb"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 09 18:52:38 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 09 18:52:38 2011 -0700"
      },
      "message": "Don\u0027t apply AA to rects with no rotation/perspective.\n\nChange-Id: I21138d4d0589cc28f1dcffb8b675cd81a9900e24\n"
    },
    {
      "commit": "67ffc36a79ce3a9a0b5da28b65123864b7d2597f",
      "tree": "c59ba66ffc9e45b58a06ab746647fa7f23f6bbd2",
      "parents": [
        "c5e626c3934d00bbfb13d48c640ba86a06aad49d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 03 18:50:11 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 03 18:51:11 2011 -0700"
      },
      "message": "Measure text with the appropriate text encoding.\nBug #4546327\n\nChange-Id: I8eb593b03a81145e08be92579706ddd775feb0a2\n"
    },
    {
      "commit": "726aeba80ffc6778a9bc3e0ee957b8d644183505",
      "tree": "2a270831f12cfa6dd69a07e9068c76c3b737754e",
      "parents": [
        "f09ef51889f75289b041f9e9f949b7b82ed5b686"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 01 14:52:00 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 01 14:55:42 2011 -0700"
      },
      "message": "Add support to OpenGLRendere to draw BiDi text.\nBug #4350336\n\nChange-Id: I1cf31693f7ca9653fa3a41b5b91c27ef288d680f\n"
    },
    {
      "commit": "f09ef51889f75289b041f9e9f949b7b82ed5b686",
      "tree": "abb6fa101bbf18deec6edbd1d799cf7eb31a2b41",
      "parents": [
        "a4fa2cd1c007c2bd0f330f6a3ffde2949d9574c5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri May 27 11:43:46 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri May 27 11:43:46 2011 -0700"
      },
      "message": "Fix issue with drawColor(color, Mode.Clear)\n\nChange-Id: I486b24a5b609c6f8adb0276037ddb24af2b888b2\n"
    },
    {
      "commit": "1e59f9d10d164f156221f6d34b932f06cdd29f1f",
      "tree": "bf37ea0028b41c83646021e90b11a9536909bae2",
      "parents": [
        "f504a2fa144504ca1efd39a4ef9208e3d4d336c5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu May 26 18:39:34 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu May 26 18:39:34 2011 -0700"
      },
      "message": "Fix texture coordinates for sub-bitmap rendering.\n\nChange-Id: I05a31775e03f5b223a55a5144d420351abac89be\n"
    },
    {
      "commit": "f504a2fa144504ca1efd39a4ef9208e3d4d336c5",
      "tree": "3d797f8910ac7615bddfc073435d8a26fcb80e61",
      "parents": [
        "3453b1c584f456a18f17d74a72c044b4e39c6405"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu May 26 16:40:55 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu May 26 16:40:55 2011 -0700"
      },
      "message": "Correctly implement the CLEAR xfermode.\n\nThe previous implementation was using glBlendFunc with the parameters\nGL_ZERO/GL_ZERO which doesn\u0027t work for text, paths and other alpha\nsources (anti-aliasing.) The correct implementation is GL_ZERO/\nGL_ONE_MINUS_SRC_ALPHA.\n\nChange-Id: I4cca65e57b6a37bbf5a41d382cb0648ee8e11e79\n"
    },
    {
      "commit": "d39d1affe82cb8c21d32baaa5fbb2d6afb806f8e",
      "tree": "05f6bcaf8113b7428c7f8315ee8a540ad91940e1",
      "parents": [
        "7b06e3516ccd452224d9b160c8cf54c3b9f3597d"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Mon May 16 13:09:42 2011 -0400"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Mon May 16 15:30:40 2011 -0400"
      },
      "message": "Updates resulting from the Skia merge (revision 1327)\n\nChange-Id: I2a8f5869dbe95bb594f2ba5d7278f9b330e6f17a\n"
    },
    {
      "commit": "9dec462c1f522533620be3c70f2fc60e69368c1a",
      "tree": "41edf6e4ef55ef8027af8c1007f85c372cb4a913",
      "parents": [
        "6ebbc077404a2ae1c82c746faa7b941901340569",
        "2ea75880142152b3a9993cb245754d73c05749a7"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri May 13 11:09:19 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 13 11:09:19 2011 -0700"
      },
      "message": "Merge \"Prepare OpenGLRenderer to use glyphs from TextLayoutCache\""
    },
    {
      "commit": "2ea75880142152b3a9993cb245754d73c05749a7",
      "tree": "35cc62ca30c9a4446a96ad674936dbe6652cfc6c",
      "parents": [
        "f470ced7cdb10a112a526339f92840587918aa6b"
      ],
      "author": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Thu May 12 17:42:06 2011 -0700"
      },
      "committer": {
        "name": "Fabrice Di Meglio",
        "email": "fdimeglio@google.com",
        "time": "Fri May 13 11:07:38 2011 -0700"
      },
      "message": "Prepare OpenGLRenderer to use glyphs from TextLayoutCache\n\n- add OpenGLRenderer.drawGlyph()\n- refactor glypth logging code\n\nChange-Id: I797e6f1304d3f3f8f6ed31e7f9965d336233d2a4\n"
    },
    {
      "commit": "858aa93ddb6e69e0503382af63bb681b6728aef1",
      "tree": "e6d79eaeef1f9cd204615448da72b63970e3c256",
      "parents": [
        "e4ba346f0f1bb153ec1f9da5c0a4fc96c301efda"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu May 12 09:06:00 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu May 12 14:55:29 2011 -0700"
      },
      "message": "Antialiasing for rectangles\n\nChange-Id: I7ca6931606541ddd504bd5db7f8dc04b9cde8cd9\n"
    },
    {
      "commit": "c54ed966f78b9ee8117931859d62faa6f11fe018",
      "tree": "4e1511aa1408128e2a88cde1a537763accaf2c0a",
      "parents": [
        "3825fef300122ffcc262e56a36a9fc36d8d084b0"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri May 06 14:13:05 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri May 06 14:14:20 2011 -0700"
      },
      "message": "Minor javadoc enhancements\n\nChange-Id: Ic24bb0e1e669989f0cae3a9b8fa064b38c8e7948\n"
    },
    {
      "commit": "3825fef300122ffcc262e56a36a9fc36d8d084b0",
      "tree": "31359d29e4e93d918e7c9f6a866f44a1edfcbc20",
      "parents": [
        "d9fd3d5ca93ba9840a56812752c4b8beaffcdee7",
        "99ecdc480dd4f9b550b2a62ea39f77845a4fec49"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri May 06 13:51:09 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 06 13:51:09 2011 -0700"
      },
      "message": "Merge \"Fix for scaled AA lines\""
    },
    {
      "commit": "99ecdc480dd4f9b550b2a62ea39f77845a4fec49",
      "tree": "e85b2138c79401cb2da03cfc190ce7e81d12bc71",
      "parents": [
        "098b781699981a550500d2e30b4c844af63eb187"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri May 06 12:06:34 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri May 06 12:10:54 2011 -0700"
      },
      "message": "Fix for scaled AA lines\n\nPreviously, the translucent boundary of AA lines would be scaled\nby the line\u0027s transform. It should always be exactly one pixel wide\nin screen space. This fix accounts for scaling for the boundary\nregion, and fixes some AA calculations that make wide/AA lines\nmore correct.\n\nChange-Id: I30df2d5d96315bf3e7ff30be9735282fd5439a39\n"
    },
    {
      "commit": "ed30fd8e9a2d65ee5c8520de55b0089c219f390c",
      "tree": "26ba777cc019d3adcba613427a2bb2feabf9a54f",
      "parents": [
        "098b781699981a550500d2e30b4c844af63eb187"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Apr 22 16:18:45 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu May 05 07:35:40 2011 -0700"
      },
      "message": "Add ability for hierarchyviewer to output displaylist info\n\nClicking on a node in hierarchyviewer1 and hierarchyviewer2 and then\nclicking the new \"Dump DisplayList\" button will cause the display\nlist for the selected node (including its children) to be output into\nlogcat.\n\nChange-Id: Iad05f5f6cca0f8b465dccd962b501dc18fe6e053\n"
    },
    {
      "commit": "a17de9b493123f0d6e6d0b842150bf29322b7a88",
      "tree": "5a7518cfd3276a2e6ed40504f69fd3f8c3008a34",
      "parents": [
        "f2a4568afca603d3166fd86335abe095cd087393"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed May 04 18:23:12 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed May 04 18:23:12 2011 -0700"
      },
      "message": "Revert \"Add ability for hierarchyviewer to output displaylist info\"\n\nThis reverts commit b2a4b52e8d5e499d33e2765e8c47851bf0266299.\n"
    },
    {
      "commit": "b2a4b52e8d5e499d33e2765e8c47851bf0266299",
      "tree": "fccd7891e4f5ac2b3bb833f226e2c7c23a28202d",
      "parents": [
        "b969d2d9c1771a3a4c813f2c2824522659d26927"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Apr 22 16:18:45 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed May 04 17:18:27 2011 -0700"
      },
      "message": "Add ability for hierarchyviewer to output displaylist info\n\nClicking on a node in hierarchyviewer1 and hierarchyviewer2 and then\nclicking the new \"Dump DisplayList\" button will cause the display\nlist for the selected node (including its children) to be output into\nlogcat.\n\nChange-Id: Id32f62569ad1ab4d533bc62987f3a7390c1bb4e6\n"
    },
    {
      "commit": "df0a7fbdcff3c683641b7980da50a7d0eebe0876",
      "tree": "bce1f0ec1aecb5735a1dd17a7a5a87f13d7a94b0",
      "parents": [
        "8ef9eaaea8cc27145bf159e45b7d9eaa0aae6d5c",
        "8f0095cd33558e9cc8a440047908e53b68906f5f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 02 18:33:26 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 02 18:33:26 2011 -0700"
      },
      "message": "Merge \"Allows to render with an OpenGL context inside a TextureView.\""
    },
    {
      "commit": "8f0095cd33558e9cc8a440047908e53b68906f5f",
      "tree": "2f55d779bf102e0c134357d89c7de69d0444634a",
      "parents": [
        "3a5c227279011f850036c29e7c0bc96023298d5c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 02 17:24:22 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 02 18:32:29 2011 -0700"
      },
      "message": "Allows to render with an OpenGL context inside a TextureView.\n\nChange-Id: I59453f7fc3997f0502a1c5d325d37fed376fabc7\n"
    },
    {
      "commit": "99585adeb4167ca357a72eb866f34c1af944f4b9",
      "tree": "ba993a2167fb880c98e29e4d2bd46933e182b1cf",
      "parents": [
        "71a0dab1ca962c2827be0221a7fbcc065dc3cbb8"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon May 02 15:00:16 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon May 02 15:08:38 2011 -0700"
      },
      "message": "Line endcaps for AA lines are now antialiased.\n\nAlso fixed other minor issues with AA and line rendering.\n\nChange-Id: Icd4638d27c70e2ee0f28b5d9a2b97d8b29e8ac4d\n"
    },
    {
      "commit": "ad44445c772efe66fdf063aa8f78d7ae3233570e",
      "tree": "8097234b893dbc0dfe050a0a98e7acecce74b28b",
      "parents": [
        "efe2a0e6ac8183c98dfe969928509e3b32903b40",
        "aa6c24c21c727a196451332448d4e3b11a80be69"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Apr 28 18:47:01 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 28 18:47:01 2011 -0700"
      },
      "message": "Merge \"New widget: TextureView Bug #4343984\""
    },
    {
      "commit": "aa6c24c21c727a196451332448d4e3b11a80be69",
      "tree": "27114ab3852d31723d885f3846ee874a07247126",
      "parents": [
        "9fc27819d75e24ad63d7b383d80f5cb66a577a0d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Apr 28 18:40:04 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Apr 28 18:46:19 2011 -0700"
      },
      "message": "New widget: TextureView\nBug #4343984\n\nTextureView can be used to render media content (video, OpenGL,\nRenderScript) inside a View.\n\nThe key difference with SurfaceView is that TextureView does\nnot create a new Surface. This gives the ability to seamlessly\ntransform, animate, fade, etc. a TextureView, which was hard\nif not impossible to do with a SurfaceView.\nA TextureView also interacts perfectly with ScrollView,\nListView, etc. It allows application to embed media content\nin a much more flexible way than before.\n\nFor instance, to render the camera preview at 50% opacity,\nall you need to do is the following:\n\nmTextureView.setAlpha(0.5f);\nCamera c \u003d Camera.open();\nc.setPreviewTexture(mTextureView.getSurfaceTexture());\nc.startPreview();\n\nTextureView uses a SurfaceTexture to get the job done. More\nAPIs are required to make it easy to create OpenGL contexts\nfor a TextureView. It can currently be done with a bit of\nJNI code.\n\nChange-Id: Iaa7953097ab5beb8437bcbbfa03b2df5b7f80cd7\n"
    },
    {
      "commit": "75e3ef048d8826f0db58f117403ce412e1d076a7",
      "tree": "f720e1a1cf871eb8997e535f6ea708521e123041",
      "parents": [
        "2ef1ce494c923a9163de08f5cda6259e23134761",
        "8a5cc92a150bae38ec43732d941b38bb381fe153"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Apr 27 14:26:40 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 27 14:26:40 2011 -0700"
      },
      "message": "Merge \"Fix various hw-accelerated line/point bugs\""
    },
    {
      "commit": "8a5cc92a150bae38ec43732d941b38bb381fe153",
      "tree": "24bf32e7fcc20ab94e64f57e6f72bd8762d3bdf9",
      "parents": [
        "b4a56f10d875dc62a9c73008f98596c7e32fc249"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Apr 26 07:28:09 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Apr 27 14:23:29 2011 -0700"
      },
      "message": "Fix various hw-accelerated line/point bugs\n\nAll accelerated lines are now rendered as quads. Hairlines used to\nbe rendered as GL_LINES, but these lines don\u0027t render the same as our\nnon-accelerated lines, so we\u0027re using quads for everything. Also, fixed\na bug in the way that we were offsetting quads (and not offseting points)\nto ensure that our lines/points actuall start on the same pixels as\nSkia\u0027s.\n\nChange-Id: I51b923cc08a9858444c430ba07bc8aa0c83cbe6a\n"
    },
    {
      "commit": "9fc27819d75e24ad63d7b383d80f5cb66a577a0d",
      "tree": "a5d490bc034404c4a2ddcba95c4fdbfd0d01d6db",
      "parents": [
        "2d039219adbeaad1a481267bca021b1a8645b481"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Apr 27 14:21:41 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Apr 27 14:21:41 2011 -0700"
      },
      "message": "Correctly compute tex coords for rect layers.\nBug #4192695\n\nThis change also fixes Javadoc links in the framework.\n\nChange-Id: Ia548bcb18baba5d6fe6a4a04a2278e3a3bd465b2\n"
    },
    {
      "commit": "740bf2bb2e900d3db2292b5909b4b4c6e90320e6",
      "tree": "9c6759f83ab467d849ef8072e262fe7ac55b8c71",
      "parents": [
        "3a03eeedafb3e3335b56bdb9c0a2f02104d32299"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Apr 26 15:33:10 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Apr 26 15:33:10 2011 -0700"
      },
      "message": "Apply shaders/filters to text drop shadows.\nBug #4318323\n\nThis change also fixes the fact that shaders were not modulated\nby the paint\u0027s color when drawing paths.\n\nChange-Id: Id88804143aea06c895d4cbcdbe106d660230aa5a\n"
    },
    {
      "commit": "6cfdf4538049e4b96f50d8c0fe3119664420cc34",
      "tree": "766190868e274776121ec8b3d41669d223d9c78e",
      "parents": [
        "b86a6ea41dadae6ee1915cdb9406c51193e97555"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Apr 22 16:42:10 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Apr 22 16:42:10 2011 -0700"
      },
      "message": "Fix bitfield bug with vertex shader selection\n\nChange-Id: I8bd3005f363afb52e6624806efb3e04c4a56ee18\n"
    },
    {
      "commit": "5b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82",
      "tree": "905d0c539f0ed9a4e6ae6538bd6ab7f74efeefb8",
      "parents": [
        "3ad604b3d8a3ae87ee3f7545677bacc8f11159c0"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Apr 13 17:58:08 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Apr 21 11:47:05 2011 -0700"
      },
      "message": "Enable anti-aliasing for hw-accelerated lines\n\nDraw anti-aliased lines with OpenGL by constructing a quad with\na border that fades out (to mimic fragment coverage).\n\nChange-Id: Ib81a3e62d663acdf1b46b401ac4aa7ee9855cc7e\n"
    },
    {
      "commit": "8a40f6a6324387b324c998cd9d6af900f1dca5ab",
      "tree": "876575c8bc54d2478814861720950e0839f69387",
      "parents": [
        "9c78930046a6e393764b58e6d7d4648963306d3f",
        "f147340bd117c16a67287e2f6ca9ded651bb32b2"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Mar 24 16:04:22 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 24 16:04:22 2011 -0700"
      },
      "message": "Merge \"Fix bug with accelerated translucent rendering\""
    },
    {
      "commit": "f147340bd117c16a67287e2f6ca9ded651bb32b2",
      "tree": "695fc01badf4bea220a31765249f2edff90282a0",
      "parents": [
        "15cb32ed9d189526d5a98add386b28cea6bc46b7"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Mar 24 15:55:05 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Mar 24 15:55:05 2011 -0700"
      },
      "message": "Fix bug with accelerated translucent rendering\n\nThere was a bug in the dirty region optimizations when\nusing alpha layers. This prevented translucent objects from\nbeing drawn at all in many situations.\n\nChange-Id: I23e9bce3595fbd6fe2bda15e8753a0f35baffb82\n"
    },
    {
      "commit": "5b7a3150a6dbf193b371854b66fa654937633d3a",
      "tree": "a748b2ad0bc5eaec4dde172a2065304f47e74063",
      "parents": [
        "80bbfb19eefe3cb9be8833b136381cece069e24d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 23 17:15:38 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 23 17:18:44 2011 -0700"
      },
      "message": "Don\u0027t crash when omitting paint to drawBitmap() with A8 configs.\n\nChange-Id: I3d630554ad82fa846385274d12d0434e890ef45d\n"
    },
    {
      "commit": "ed6fcb034b44d9a6ac2fc72fee6030417811f234",
      "tree": "42a469fd5b0eabb1fd3b6a34243d57c081eee764",
      "parents": [
        "67ac217a81f34ee3d35df84b38f3456843c40706"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 21 13:11:28 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 21 13:11:49 2011 -0700"
      },
      "message": "Add support for drawPoint() and drawPoints().\n\nChange-Id: I01bef50c08ec3160f8d40dc060b2cf6c2e4d7639\n"
    },
    {
      "commit": "67ac217a81f34ee3d35df84b38f3456843c40706",
      "tree": "7d6bda2903af512621d1fd775d186b4f374bd591",
      "parents": [
        "a168d7372132d6c87835878794b6ed43d0d282fd"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 18 17:14:27 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 18 17:14:27 2011 -0700"
      },
      "message": "Fix hairline rendering.\n\nChange-Id: Ib6129b446b53678b1b955d8516418370cbae4f10\n"
    },
    {
      "commit": "a168d7372132d6c87835878794b6ed43d0d282fd",
      "tree": "08649fab2d90c649d9d518ca672ec453d5e742e9",
      "parents": [
        "b29cfbf768eab959b31410aafc0a99e20249e9d7"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 18 16:50:13 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 18 16:50:13 2011 -0700"
      },
      "message": "Correctly apply filters to Alpha8 bitmaps.\n\nThis change also removes unnecessary operations from display lists.\n\nChange-Id: I627f85861982731f0ee7705b48b36d9c56f22f39\n"
    },
    {
      "commit": "40667676e542a9daeafeac9904c30004e8706fd3",
      "tree": "601160198237fde4f32a152f5ee03ab1de55e7fd",
      "parents": [
        "b18a047de574f188b2c7633164f15ab3c9e40b5b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 18 14:34:03 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 18 14:36:44 2011 -0700"
      },
      "message": "Optimize rect-shaped layers.\n\nThis brings back an optimization disabled in HC-MR1. This time the\ncorrect geometry is generated to avoid unnecessary blending.\n\nChange-Id: Id56404dc46bb84c75facc25c18488a690741b592\n"
    },
    {
      "commit": "08aa2cbd5e62e7ca140f78f8bea0477a19880fd9",
      "tree": "12e37d2b0cba0d0913f71374b1e5298fe41d4daf",
      "parents": [
        "4d733f520707a3b52410297b5e16bb289c40e73b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 17 11:06:57 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Thu Mar 17 12:04:04 2011 -0700"
      },
      "message": "Send WebView the current transform and whether we\u0027re drawing a layer.\nBug #3275491\n\nThese can be used by WebView to correctly apply alpha and geometric\ntransforms.\n\nChange-Id: I2ecd4376d68df886dead3c9240317de33f56828f\n"
    },
    {
      "commit": "80911b851764b073310fd0bffdf4a7db0d8fdd0b",
      "tree": "854e09626693907162ed479408abd619e280ddc4",
      "parents": [
        "fc59176241f498ad4eeb4237800c2eb5edd9efcd"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 16 15:30:12 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 16 15:31:33 2011 -0700"
      },
      "message": "Modify the GL renderer\u0027s functor to pass the clip to WebView\n\nChange-Id: If5efe399ca58f3000b2883e24e9f3736a2025184\n"
    },
    {
      "commit": "6217a71cd281003a376d998269d577d26a61c206",
      "tree": "3fbaaf391a24d8d4f3c009accb4b9c911a939709",
      "parents": [
        "ad37cd3b5d3de9dd0858af04fbccd102e8ff4b0e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 15 16:32:28 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 15 16:32:28 2011 -0700"
      },
      "message": "Fix performance issue in Launcher\nBug #3515248\n\nThe problem is caused by the fast path when compositing layers on screen.\nThe fast path draws a single quad using glDrawArrays() whereas the general\npath draws an arbitrary mesh using glDrawElements(). It looks like there\u0027s\nan issue in the driver since glDrawArrays() is significantly slower than\nglDrawElements() for a quad (6 vertices!)\n\nThis change just gets rid of the fast path.\n\nChange-Id: Ib2361253ec67f44a988270f76c183422f12ce537\n"
    },
    {
      "commit": "ad37cd3b5d3de9dd0858af04fbccd102e8ff4b0e",
      "tree": "39023e1c98a3a727296eec906b8070ff2af279ea",
      "parents": [
        "57fccf12e1e71089aa01cbf9867314f82db4e6f9"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 15 11:12:25 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 15 11:12:25 2011 -0700"
      },
      "message": "Fix disappearing edges in lists/scrollviews/etc.\nBug #4093871\n\nThis bug was introduced by a change that modified the way fade areas\nare cleared. The previous change relied on Rect::intersect() to empty\nthe intersected rect when the two rects don\u0027t intersect. Unfortunately\nthis is not what intersect() does. The fix is rather simple and\nsets the layer\u0027s bounds to empty when they don\u0027t intersect with the\nclip or the viewport. This has the side effect of ignoring the layer\nwhich is the expected result.\n\nChange-Id: Icf0038b9a476c53f8eff7084136aba3033d093e6\n"
    },
    {
      "commit": "7b5b6abf852c039983eded25ebe43a70fef5a4ab",
      "tree": "918c9bd4b35e0790a9d01fdf88bafd90b952101e",
      "parents": [
        "c7fcc5076fb2988fba699a2167d19475fd58ed0b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 14 18:05:08 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 14 18:05:08 2011 -0700"
      },
      "message": "Fix rendering artifact in edge fades.\nBug #4092053\n\nThe problem always existed but was made visible by partial invalidation.\nWhen saving a layer, the renderer would try to postpone glClear()\noperations until the next drawing command. This however does not work\nsince the clip might have changed. The fix is rather simple and\nsimply gets rid of this \"optimization\" (that turned out to be\nusless anyway given how View issues saveLayer() calls.)\n\nThis change also fixes an issue with gradients (color stops where\nnot properly computed when using a null stops array) and optimizes\ndisplay lists rendering (quickly rejects larger portions of the\ntree to avoid executing unnecessary code.)\n\nChange-Id: I0f5b5f6e1220d41a09cc2fa84c212b0b4afd9c46\n"
    },
    {
      "commit": "cabfcc1364eb7e4de0b15b3574fba45027b45cfc",
      "tree": "f38e237ba2009dcacb5082a99928aad379a7adc0",
      "parents": [
        "9b7146db6d9c0586b98b062fbcdb3fac6cc54d19"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 07 18:06:46 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 07 18:09:03 2011 -0800"
      },
      "message": "Add support for partial invalidates in WebView\nBug #3461349\n\nThis change also fixes two bugs that prevented partial invalidates\nfrom working with other views. Both bugs were in our EGL implementation:\nthey were preventing the caller from comparing the current context/surface\nwith another context/surface. This was causing HardwareRenderer to always\nredraw the entire screen.\n\nChange-Id: I33e096b304d4a0b7e6c8f92930f71d2ece9bebf5\n"
    },
    {
      "commit": "84962f2fe6ce779c583cc54b11a9de2b6a568117",
      "tree": "1732500726ef522e7f54b006fbcae8ae1bc6805d",
      "parents": [
        "40a787f89a6f4c20f2c7fce29e5bc53954305f34"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 02 15:43:44 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 02 15:43:44 2011 -0800"
      },
      "message": "We need to go deeper.\nBug #3431907\n\nWhen drawing layers inside a layer, the wrong target FBO would be used.\nThis would happen for instance with app widgets using a ViewFlipper\nin Launcher. The ViewFlipper uses a fade animation that triggers a\ncall to saveLayerAlpha(), which in turns creates an FBO. If this happened\nduring a scroll, the ViewFlipper\u0027s FBO would be composited back directly\ninside FBO 0, i.e. the screen. This properly initializes the snapshots\nof hardware layers to use the layer\u0027s FBO as the default compositing\ntarget instead of using 0.\n\nThis problem did not happen when drawing hardware layers inside\nhardware layers because LayerRenderer already takes care of figuring\nout the FBO it needs to composite into. The bug would occur only\nwith layers generated with saveLayer() and its saveLayerAlpha()\nvariation.\n\nLayers inside hardware layers insider layers inside hardware layers\nnow work properly.\n\nChange-Id: Ibe852301087f3d414ad8a18436eebc81f8ac66f5\n"
    },
    {
      "commit": "d643bb56fdf21973ea75984f0816b7dc024698df",
      "tree": "fa0b758dfebc484db04a7d7f052ac8c961e35b10",
      "parents": [
        "321dce646dc3c2ecfbd72a693d8d9294a6119736"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 01 14:55:21 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 01 14:55:21 2011 -0800"
      },
      "message": "Correctly mark layers dirty when drawing WebView.\n\nChange-Id: I7ae0c3cfa0916d8fbeaf01e8da127c621a06a0f4\n"
    },
    {
      "commit": "4368c449d7baa398e67eb4d96467f1de8862c5bb",
      "tree": "b07523d05935050b5e0f2be84eb9c2ab4096fda4",
      "parents": [
        "4b7c6fa2c0707b7e5b451b31de8a113e945c8e09",
        "cf28957c89127ccfc82d535903c776124665446a"
      ],
      "author": {
        "name": "David Li",
        "email": "davidxli@google.com",
        "time": "Fri Feb 25 12:59:14 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 25 12:59:14 2011 -0800"
      },
      "message": "Merge \"Fix mTexCoordsSlot \u003e 0 check to mTexCoordsSlot \u003e\u003d 0\""
    },
    {
      "commit": "cf28957c89127ccfc82d535903c776124665446a",
      "tree": "c18c613f9798762648cb36a5b3eb7bb9a76ccdd2",
      "parents": [
        "10d63fada8a0e67095422d60b381906ebe5b65ee"
      ],
      "author": {
        "name": "David Li",
        "email": "davidxli@google.com",
        "time": "Fri Feb 25 12:05:44 2011 -0800"
      },
      "committer": {
        "name": "David Li",
        "email": "davidxli@google.com",
        "time": "Fri Feb 25 12:05:44 2011 -0800"
      },
      "message": "Fix mTexCoordsSlot \u003e 0 check to mTexCoordsSlot \u003e\u003d 0\n\n0 Is a valid attribute location.\n\nChange-Id: Ib24335f48efd6cc59e2ab877569d7d0c95f8490a\nSigned-off-by: David Li \u003cdavidxli@google.com\u003e\n"
    },
    {
      "commit": "b37cbec6d06578a72bdd9c2caa3fd964ade71c53",
      "tree": "7b66637451a3b32894edf1882a953e45dcef573f",
      "parents": [
        "a5364ee8942cd9f0546f80f6430812ca2ee59f30"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 24 17:21:29 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 24 17:21:29 2011 -0800"
      },
      "message": "Correctly blend translucent GIF bitmaps.\n\nChange-Id: Ifeb2c1d97a4c6dfeb1a7b5b26f1a3153e9f8da7f\n"
    },
    {
      "commit": "6062c5912dc79704b489fc8c289b78a400ed05ee",
      "tree": "9de24cadd06e34a3f9a7de165f90fbcfc55d2307",
      "parents": [
        "2fad616237ce2db020eb6c0e03084ece291aee3c"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Tue Feb 22 13:55:04 2011 -0500"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Tue Feb 22 16:07:36 2011 -0500"
      },
      "message": "Skia Merge (revision 808)\n\nThis is a companion CL to the one found in /external/skia\n\nChange-Id: If81748545435cab20a5d8479329ab333cb973e16\n"
    },
    {
      "commit": "894df17eee708688c8a6e67941add2017239c790",
      "tree": "6bdce5bbcd62d824227c9e9f30e78db40bba5988",
      "parents": [
        "2e10374dceea41ebab13e5d2834f6767f2c23b3d"
      ],
      "author": {
        "name": "Alex Sakhartchouk",
        "email": "alexst@google.com",
        "time": "Thu Feb 17 16:45:37 2011 -0800"
      },
      "committer": {
        "name": "Alex Sakhartchouk",
        "email": "alexst@google.com",
        "time": "Thu Feb 17 16:45:37 2011 -0800"
      },
      "message": "Fixing font renderer attribute slot locations.\n\nChange-Id: I6377bb641df7d8372d873c00790189f9a190afd6\n"
    },
    {
      "commit": "b18d2d0079b4dbf5675ab79b7111b3dfb3cc1ad0",
      "tree": "36e09ec065df8e1855c6ca3d809dbd59dea935ff",
      "parents": [
        "83a7b963f0070022d98853ea1fb4fa5c81cc5e79"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 10 15:52:54 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 10 15:52:54 2011 -0800"
      },
      "message": "Dirty layers in the area covered by a drawBitmapMesh() call\nBug #3410827\n\nChange-Id: Ic8b4f6201af94497bba86c75819588c78debddc2\n"
    },
    {
      "commit": "c78b5d50f961ac8f696f8282979ae283cacd3574",
      "tree": "e0a11c7b9084ceb5b5ea328c42197045567205f0",
      "parents": [
        "ba27cf756db9ac80608ed61a39a66e94951ecc61"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Feb 04 14:00:42 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Feb 04 14:00:42 2011 -0800"
      },
      "message": "Properly handle dirty rectangles generated from 9-patches\nBug #3409580\n\nThis bug affects anything that draws a 9patch inside a layer, this includes\nlauncher\u0027s workspace, all of the fade animations, etc.\n\nChange-Id: Icbe8ecd158e3d5f44d07516462de68c5d1fb0a8f\n"
    },
    {
      "commit": "3a3133d876caf60ebff2176ad75c3dcf0259148d",
      "tree": "dca8a743e3e8b99eb6b7aaddba3402c82132a9c5",
      "parents": [
        "849d0a37cf2ca6c6a6c2d4d4456495e32e363120"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 01 22:59:58 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 01 23:01:43 2011 -0800"
      },
      "message": "Update layers based on the dirty region.\nBug #3413433\n\nThis helps Launcher when a widget updates during a scroll, or when interacting\nwith widgets on the workspace if layers are still turned on.\n\nChange-Id: Ic7a42eb34f74f4ae988039754f815e2efd1d1e4f\n"
    },
    {
      "commit": "4f09f5417b5c14fd31336dacfff86972e7885a03",
      "tree": "3f086cfaccb190108c414f598e996e5769c1d17b",
      "parents": [
        "3b1fd35c6876f7eb1d15db3095c3e57969783302"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 26 22:41:43 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 26 22:45:16 2011 -0800"
      },
      "message": "Don\u0027t draw the same triangles several times.\nBug #3388197\n\nChange-Id: Ief1dfd9447f144e9992340a173d2893e5e049129\n"
    },
    {
      "commit": "2b1847ea60650a9f68372abe860415f18b55081d",
      "tree": "1ec502a48a720f8167240c6563af32f235a9bffb",
      "parents": [
        "d30b36d3cdccc7854dedf5e3c020d2f4a8afa7b8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 26 13:43:01 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 26 13:43:01 2011 -0800"
      },
      "message": "Remove unused API\n\nChange-Id: I1714fd82a64b752f0350ef4ef9179ce19e089c6a\n"
    },
    {
      "commit": "f90f8171e6acb56f9f87093c01fd586f2140697a",
      "tree": "4f6580623c857cfad197e2ccd48194aa591a981c",
      "parents": [
        "5c4c0d50fc1653fb6158e20d9b0af0325a80287c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 25 22:53:24 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 25 22:53:24 2011 -0800"
      },
      "message": "Make sure the opaque bitmap is opaque. GL doesn\u0027t like being lied to.\nBug #3382992\n\nThe result still looks wrong but it works as designed, unfortunately.\n\nChange-Id: I6108e199fa336cb01faaabf6c75faa3b71c2339b\n"
    },
    {
      "commit": "8d2959ddffcdee8b0c2f6387f2e2772c6df474ae",
      "tree": "35da87fcf17b5c678324b4f0c10b6a8dfa084ed6",
      "parents": [
        "5e7f766e99c679110fa95501728bb81a8e396e58"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 25 11:03:00 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 25 11:03:00 2011 -0800"
      },
      "message": "Remove debugging log left by mistake.\n\nChange-Id: I7d5165b4b682714940cea9886abeedd3f4858057\n"
    },
    {
      "commit": "8168396d1acbcb5fdd29eeda4c30b2803d5283ae",
      "tree": "b46fbc12d304be461abb1592e0f645b6f8df350b",
      "parents": [
        "d88f54c5c4ce59585b8b9e6009836f14c00be743"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 24 20:40:18 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 24 20:40:18 2011 -0800"
      },
      "message": "Fix rendering issues with animated layers.\nBug #3385247\n\n- The layer\u0027s alpha was interpreted in the wrong range 0..255 instead of 0..1\n- 9-patches would not correctly dirty the layer region, the generated mesh\n  was incorrect\n\nChange-Id: I4916249bedcdb0794929f3796bd17854971efc88\n"
    },
    {
      "commit": "7d7b5490a0b0763e831b31bc11f17d8159b5914a",
      "tree": "7326e41a76618cba25a9757b43db779a607b9bdf",
      "parents": [
        "3dd0908a65095cb6946001ae3039ab87a47b4f33"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 24 16:33:45 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 24 18:39:56 2011 -0800"
      },
      "message": "Enable partial invalidates when rendering with OpenGL.\n\nChange-Id: Ie8be06c4776b815e8737753eb8003b4fd8936130\n"
    },
    {
      "commit": "daf98e941e140e8739458126640183b9f296a2ab",
      "tree": "e338ad021139d706004b70a38fbbe539ccfbbacf",
      "parents": [
        "57ffc00239edcfe733832771e1429fca20182207"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Jan 10 14:10:36 2011 -0800"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Jan 24 08:43:20 2011 -0800"
      },
      "message": "Use optimized display lists for all hwaccelerated rendering\n\nPreviously, display lists were used only if hardware acceleration\nwas enabled for an application (hardwareAccelerated\u003dtrue) *and* if\nsetDrawingCacheEnabled(true) was called. This change makes the framework\nuse display lists for all views in an application if hardware acceleration\nis enabled.\n\nIn addition, display list renderering has been optimized so that\nany view\u0027s recreation of its own display list (which is necessary whenever\nthe visuals of that view change) will not cause any other display list\nin its parent hierarchy to change. Instead, when there are any visual\nchanges in the hierarchy, only those views which need to have new\ndisplay list content will recreate their display lists.\n\nThis optimization works by caching display list references in each\nparent display list (so the container of some child will refer to its\nchild\u0027s display list by a reference to the child\u0027s display list). Then when\na view needs to recreate its display list, it will do so inside the same\ndisplay list object. This will cause the content to get refreshed, but not\nthe reference to that content. Then when the view hierarchy is redrawn,\nit will automatically pick up the new content from the old reference.\n\nThis optimization will not necessarily improve performance when applications\nneed to update the entire view hierarchy or redraw the entire screen, but it does\nshow significant improvements when redrawing only a portion of the screen,\nespecially when the regions that are not refreshed are complex and time-\nconsuming to redraw.\n\nChange-Id: I68d21cac6a224a05703070ec85253220cb001eb4\n"
    },
    {
      "commit": "a566b7c3aada08d37cf08096c972e3e641bed773",
      "tree": "47ad89183050d1689f72ec701cb172ea2a794aeb",
      "parents": [
        "8b2f5267f16c295f12faab810527cd6311997e34"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 23 16:36:11 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 23 16:36:11 2011 -0800"
      },
      "message": "Fix bitmap meshes to work in display lists.\n\nChange-Id: Ie226d049840942d9ad9cf58e0c19132f49d62a75\n"
    },
    {
      "commit": "8b2f5267f16c295f12faab810527cd6311997e34",
      "tree": "2f81ab177ebfadee474c44f3aa8e44cdc539665e",
      "parents": [
        "c1cd9ba335b293f11e1082447ef08e474710a05f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 23 16:15:02 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 23 16:15:02 2011 -0800"
      },
      "message": "Add support for arcs.\n\nChange-Id: I96c057ff4eb1b464b03f132da0b85333777bee4f\n"
    },
    {
      "commit": "c1cd9ba335b293f11e1082447ef08e474710a05f",
      "tree": "3f07bf1887e0cd5602c2f1e356e3efe92d7f766b",
      "parents": [
        "f6834478b379856d3e5de92ddce7de0e6ba9fa4a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 23 14:18:41 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 23 14:18:41 2011 -0800"
      },
      "message": "Add support for ovals and stroked rectangles.\n\nChange-Id: I1292e241386763c82e6622c8f7ed90b0f5b7bd4f\n"
    },
    {
      "commit": "f6834478b379856d3e5de92ddce7de0e6ba9fa4a",
      "tree": "ac7fb70de40ec8487112fd1bcfc3684d980ba718",
      "parents": [
        "b149f5c8d29cda2f2e46559a68467be89714f737"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 23 13:32:12 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 23 13:32:12 2011 -0800"
      },
      "message": "Always render text underline extra.\nBug #3381287\n\nChange-Id: Ibfbc9c51c8dccef216daccc37d835e5dbf143a6a\n"
    },
    {
      "commit": "c88e357d1ed9dadfc0efb3dfbe92f24460674ef5",
      "tree": "af36de378d845f6db755c13191d8118f9711fd8b",
      "parents": [
        "acf36126e4620a0cc36d4e5b1268d15777ea4361"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sat Jan 22 00:32:12 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sat Jan 22 00:35:23 2011 -0800"
      },
      "message": "Fix regression with hardware layers.\n\nThe renderer was checking whether the layer\u0027s region is a rect to\ndraw it with a simple quad. This test was done against the layer\u0027s\nregion structure, which was cleared after generating the mesh.\nUnfortunately Region::isRect() returns true when the region is\nempty, which was causing the renderer to always use a quad to\ndraw a mesh on screen.\n\nChange-Id: If4b874579ee0cedcb67367c9efa5c0c98ca55231\n"
    },
    {
      "commit": "5a7b466a2b4b7ced739bd5c31e022de61650545a",
      "tree": "1eef540913ce3a131019586f9187bc8e66f59caa",
      "parents": [
        "c8219299b0003793cee8049b96a3bf7530765eea"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 20 19:09:30 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 20 19:09:30 2011 -0800"
      },
      "message": "Add support for drawBitmapMesh().\n\nChange-Id: Ic77f9c534bb90dc7b9458299544bd50b8b6ae6a5\n"
    },
    {
      "commit": "ed8f8dd8cf621d6046db7e083f8a36205ed55609",
      "tree": "1f24081c2b6d92fdfbb18edf77e414939e554ede",
      "parents": [
        "818a7bbfb42061d67aae0d5c725cecd0261c9643",
        "01d58e43ede5ca98cbebdd166f9b0c545032c01b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 19 21:52:49 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 19 21:52:49 2011 -0800"
      },
      "message": "Merge \"Add rounded rects and circles support to OpenGLRenderer.\" into honeycomb"
    },
    {
      "commit": "01d58e43ede5ca98cbebdd166f9b0c545032c01b",
      "tree": "6d9976c551fd6ec9f104e5a849c0ad743946af6c",
      "parents": [
        "9335f5b2fde244614184f45d29cc574d1ba8cbba"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 19 21:54:02 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 19 21:55:10 2011 -0800"
      },
      "message": "Add rounded rects and circles support to OpenGLRenderer.\n\nChange-Id: I6cedf2b495d58de7c0437096809fa9e4518a1b8c\n"
    },
    {
      "commit": "514fb18827186591d66973c2362c859b64b63556",
      "tree": "165318d5eee420728fbf92d1fda3505307ebf834",
      "parents": [
        "9335f5b2fde244614184f45d29cc574d1ba8cbba"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 19 14:38:29 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 19 14:38:29 2011 -0800"
      },
      "message": "Don\u0027t attempt to create empty layers.\nBug #3369888\n\nChange-Id: Ic17bbd1c04bbf760cb17d0eb9e6767fd6479948c\n"
    },
    {
      "commit": "42f3a4b7c35dd1ea1922356eb3611af8cde05179",
      "tree": "aac476548acfc97b0dd5785ce06008c40b98753a",
      "parents": [
        "a3311ed7a9ddd7ecb066f4731ce4bc3bd3ffd939"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 19 13:42:26 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 19 13:42:26 2011 -0800"
      },
      "message": "Make embedded hardware layers work.\nBug #3369474\n\nChange-Id: Ib6d7fb44eedda9dc2933b5e1b176f307968af91d\n"
    },
    {
      "commit": "807daf7df615b60ce6fc41355aabe3aa353cebab",
      "tree": "96eeb8bde5042241238946f787d1dbc3a416d6e6",
      "parents": [
        "d6cd572df8067c40b3e0e7e74e58cdb456b33e92"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 18 11:19:19 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 18 11:19:19 2011 -0800"
      },
      "message": "Add support for skew()\n\nChange-Id: Ia3a9a867f74fd78b61f75179e3788fdc2f0cacd0\n"
    },
    {
      "commit": "f219da5e32e85deb442468ee9a63bb28eb198557",
      "tree": "3d27f5c3a1fcce028ca12aa7dc7331f95d8ae8c0",
      "parents": [
        "a47aa87a19c733e28d9d2db1c4eb7f29d668db7b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 16 12:54:25 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 16 12:54:25 2011 -0800"
      },
      "message": "Don\u0027t blend transparent pixels when rendering layers.\n\nWith this change, the rendere keeps track of what regions are rendered into\nand generates a mesh that matches these regions exactly. The mesh is used\nto composite the layer on screen.\n\nChange-Id: I1f342576b9134fb29caff7fb8f4c1da179fe956d\n"
    },
    {
      "commit": "1bd1bad0b4a75e633c5edbe802bf6fb4dd765161",
      "tree": "ec6c62135677673e47741385c63ba082d1326fca",
      "parents": [
        "739e34a362518020b4aed3f2dc54be2154c41406"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jan 14 20:07:20 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jan 14 20:07:20 2011 -0800"
      },
      "message": "Preapre region tracking in layers\n\nChange-Id: Ied1fa0d36c99ef4e33cb8fde7e3106a793db3a4c\n"
    },
    {
      "commit": "f5106847fc962d57c7d5c586099b4a382f3e1c3d",
      "tree": "41b3a7768b347b6bf7cd28abc8dbbf4a76943db0",
      "parents": [
        "501053a16dd8b24664856cab5551b246550d1ce5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jan 14 11:27:12 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jan 14 11:27:12 2011 -0800"
      },
      "message": "Don\u0027t add clipped rects to layer regions.\nBug #3350208\n\nChange-Id: I9266862f1d4d57b4598852e8dfa202b5f5099cce\n"
    },
    {
      "commit": "1e3a431d07cc0a307c6441e9ae1b17d3bf42323e",
      "tree": "dc6611234da5e6a5cbdd117424daa5528f6c4d1f",
      "parents": [
        "ffac7fc5042296a459d0f5a450dbfe20917093dc"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 13 17:47:15 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 13 17:47:15 2011 -0800"
      },
      "message": "Remove debug code\n\nChange-Id: Idbc54d16adb4d86185d7196ea0297b5019d14ae4\n"
    }
  ],
  "next": "ffac7fc5042296a459d0f5a450dbfe20917093dc"
}
