)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "42e1e0d482d774cf18a55773e434f02edb9e4462",
      "tree": "33ac1bca20382f2e8ccbf176c89b3476f2ae5c9b",
      "parents": [
        "8ab8fbbf46d8779f53301e7f706f97608eed7117"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 30 14:47:51 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 31 18:55:16 2012 -0700"
      },
      "message": "Improve gradients\n\nAvoid using textures for common gradients (two stops from 0.0 to 1.0)\n\nChange-Id: Iff55d21b126c8cfc4cfb701669f2339c8f6b131a\n"
    },
    {
      "commit": "786fc93d71b833ab6b02b0c7ea5e30f25cceeedf",
      "tree": "7a33afdfc52077e9f9665acc6d6072cb23e3d9d2",
      "parents": [
        "d8031f0e8c0977ff04aeb2164afacb2434dc0775"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 24 16:24:56 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 24 16:41:21 2012 -0700"
      },
      "message": "Make HardwareRenderer able to target generic Surface objects\n\nChange-Id: I4b7199a1eb30e0df354ae12c4819adc69db5df40\n"
    },
    {
      "commit": "98ba89492a477114148fcb1f89675e41679ca7cc",
      "tree": "89db302c556fdbb61cc1e2e21adceb30a8e53372",
      "parents": [
        "00755fed35e4a91291c42a8a47bed8b957e9f8e1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 20 16:50:03 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 20 16:58:45 2012 -0700"
      },
      "message": "Make gradients look slightly better\n\nChange-Id: Ib12c628a88b9ec6af1214ce6e5cb14cfde40485e\n"
    },
    {
      "commit": "ba64974141bb04d35759c7a8f1741d23c172f9a5",
      "tree": "525f25da1cd84b32201ef32587bf971fc97f8b4e",
      "parents": [
        "041c36686dd986834990d85f7f93fe2ee4e5fca5"
      ],
      "author": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Thu Jun 28 19:12:58 2012 -0700"
      },
      "committer": {
        "name": "Michael Jurka",
        "email": "mikejurka@google.com",
        "time": "Thu Jun 28 19:15:20 2012 -0700"
      },
      "message": "Removing setChildrenLayersEnabled\n\nChange-Id: I88d8228eadb59160648f2c4e131fcd85945f2109\n"
    },
    {
      "commit": "4c43f66d06fe7f75ad6f9c860cf0936b8ee36082",
      "tree": "f69a76ff3c0686431b43c0d2600593a00ef59828",
      "parents": [
        "c1c140657633cc5b0ff26da1f122fab305d21e01"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed May 16 20:01:17 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed May 16 20:01:17 2012 -0700"
      },
      "message": "Fix TextureView OpenGL sample\n\nThe sample was doing something dumb: instead of binding the texture unit\nto the shader\u0027s sampler, it was binding the texture name. Oops.\n\nChange-Id: I13450dacbbd2dad362a2573aebb95e8eb87b25f0\n"
    },
    {
      "commit": "e651cc6239616a202f6e96ebc2ed93b4b8b3627c",
      "tree": "7aa90f8cccc91555bd652d0a88a898a026cdc333",
      "parents": [
        "99a6ddd4cd8762654a575eb4ac3d0e5431d919b8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 14 19:44:40 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 14 19:44:40 2012 -0700"
      },
      "message": "Remove all Dalvik allocations from Cavnas.drawBitmap(int[], ...)\n\nChange-Id: Ie28538a2104d21154fdc78a56525e7403f08287d\n"
    },
    {
      "commit": "d34dd71800d9a1077e58c3b7f2511c46848da417",
      "tree": "464ac603e38b3c8593cc03d244892ee3fb3502a6",
      "parents": [
        "5380cdc2e1adc8511b05e7623efb44d67be88418"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed May 02 18:50:34 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu May 03 11:14:50 2012 -0700"
      },
      "message": "Fix hang/crash in native path code\n\nAn optimization for paths is to only create a texture for the original native\nPath object, and have all copies of that object use that texture. This works in\nmost cases, but sometimes that original path object may get destroyed (when the\nSDK path object is finalized) while we are still referencing and using that object\nin the DisplayList code. This causes undefined errors such as crashes and hanging\nas we iterate through the operations of a destroyed (and garbage-filled) path object.\n\nThe fix is to use the existing ResourceCache to refcount the original path until\nwe are done with it.\n\nIssue #6414050 Analytics Dogfood App crashes reliably on Jellybean\n\nChange-Id: I5dbec5c069f7d6a1e68c13424f454976a7d188e9\n"
    },
    {
      "commit": "810a8676df1d504da17bad80c7bd6638bdd97711",
      "tree": "3ddfda87c49bd6f19d436e9677d9daa1ea459037",
      "parents": [
        "73b61d67109c9a4267b93c238bb9cbab7b1304c4"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue May 01 15:57:24 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed May 02 10:44:33 2012 -0700"
      },
      "message": "Corrects invalidation logic for layered views\n\nA bug in the invalidation logic meant that changes to a view\nwould not cause parents in the view hiearchy that were set to have\na layer (e.g., View.LAYER_TYPE_HARDWARE) to get invalidated properly.\nSo even though the child view was all set to recreate its display list\naccording to the property change, the layer in the tree above it would stay\nas-is, meaning that the change would not show up on the screen.\n\nIssue #5887530 DropTarget text does not change color with the icon\n\nChange-Id: Ie6eac4f406d172cb437822d9fe76340ab2afaf1c\n"
    },
    {
      "commit": "0a1cbc5f7df7e1294b5a4e37f01b76fca5899324",
      "tree": "235e295cc3ec631407278b908627e79e3e88f0b7",
      "parents": [
        "4dfdf4d6297f57b884ec3f43bd1295235e0a938a",
        "2946445b560fde5e63df17f5a2db60c8349fe532"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Apr 03 21:17:34 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 03 21:17:34 2012 -0700"
      },
      "message": "Merge \"New libhwui test activity\""
    },
    {
      "commit": "2946445b560fde5e63df17f5a2db60c8349fe532",
      "tree": "151f9c409903b291045664b6dd91298f88443fd0",
      "parents": [
        "e0aa84b7dc087e999e20055dcc04cb6a48d5bd62"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Apr 03 20:22:10 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Apr 03 21:15:12 2012 -0700"
      },
      "message": "New libhwui test activity\n\nChange-Id: I0ce4bc665f117d7c0ed47670ceb4ed6f9b54d85c\n"
    },
    {
      "commit": "db8c9a6a4d9bf8c39f834b25611926caf21380f6",
      "tree": "5a1ef2e49ea05c5a28477fcf8525ca66e8e31890",
      "parents": [
        "b3fa3960a03ef553e58bf1add88029a6c072c6b6"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Mar 21 18:54:18 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Apr 03 14:02:17 2012 -0700"
      },
      "message": "Optimization of alpha with DisplayList properties\n\nSome views (such as ImageView and TextView) handle non-opaque alpha\nvalues directly. This was originally an optimization, but we can handle it faster\nin many cases without this optimization when DisplayList properties are enabled.\nBasically, if a view has non-overlapping rendering, we set the alpha value directly\non the renderer (the equivalent of setting it on the Paint object) and draw each\nprimitive with that alpha value. Doing it this way avoids re-creating DisplayLists\nwhile getting the same speedup that onSetAlpha() used to get pre-DisplayList properties.\n\nChange-Id: I0f7827f075d3b35093a882d4adbb300a1063c288\n"
    },
    {
      "commit": "9420abd56a2af7ddbeb70562b79d61b2dca8c5a1",
      "tree": "8625a64e2d9ffd1520d890c2eb7989ccbef28adc",
      "parents": [
        "1d6013357847983180a317e2acaf807bde8b7ea7"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Mar 29 16:28:32 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Apr 02 15:31:24 2012 -0700"
      },
      "message": "Re-enable DisplayList properties.\n\nRe-enabling DisplayList properties last week caused some app\nerrors due to the way that some transforms were being handled (specifically,\nthose coming from the old Animations and ViewGroup\u0027s childStaticTransformation\nfield). This change pushes *all* transform/alpha data from View.draw() into\nthe view\u0027s DisplayList, making DisplayLists more encapsulated (and correct).\n\nChange-Id: Ia702c6aae050784bb3ed505aa87553113f8a1938\n"
    },
    {
      "commit": "9777173eb6c9eb97c7921c8288ebc65e3ab3ce6f",
      "tree": "0c2749e602c75cf72a3a2d6ffd480a47f975fdd5",
      "parents": [
        "765dcf32307dbd93ce43f064c426ce157be2d2ae"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 28 18:17:02 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 29 19:14:37 2012 -0800"
      },
      "message": "Full implementation of Canvas.drawPath()\n\nChange-Id: I23223b89770a0cd2b4762365bead9bfddb094290\n"
    },
    {
      "commit": "03d58520c3eb6bb7efb7235bfd957550533d6725",
      "tree": "97b131fd746d7857a005dc2a93d64469ebbcb7fc",
      "parents": [
        "325740fb444af8fc7fb0119b2e30ce322c2ae134"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Feb 24 17:54:07 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Feb 24 17:54:07 2012 -0800"
      },
      "message": "More infrastructure for Canvas.drawTextOnPath\n\nChange-Id: Iff42b24e342650d06fa4e2fa9db6c28da820ff01\n"
    },
    {
      "commit": "325740fb444af8fc7fb0119b2e30ce322c2ae134",
      "tree": "7739e7e56c5835f8f161e8cbed17346083390176",
      "parents": [
        "34c55d30858cba1e58c38e7d8e175d25cf0b33c4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Feb 24 16:48:34 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Feb 24 16:48:34 2012 -0800"
      },
      "message": "Add hooks to implement Canvas.drawTextOnPath() in GL\n\nChange-Id: I165c9e05facf5365aa6850605688e538640c7fcc\n"
    },
    {
      "commit": "4bcb7467a174ed03a67b0c62950c555813ddf00d",
      "tree": "496ee923124a889d0a103fcc8dddba74515c2f81",
      "parents": [
        "cfef12374c15b11b3c2a1041582be9728152e15d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 23 17:08:38 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Feb 23 17:08:38 2012 -0800"
      },
      "message": "Only recreate path textures when necessary\n\nWhen a drawPath command is recorded in a display list, a copy of the\nsource path is made to preserve against possible modifications of the\nsaid source path. Copies are discarded when a display list is cleared,\nwhich usually happens on invalidate(). This means that even if a path\nis never modified, the texture generated to draw it on screen is\ndestroyed every time an invalidate() is issued. This change fixes this\nproblem by introducing a reference to the source path in the copy.\nIf both the copy and the source path have the same genID, they are\nthe same path and can share the same texture.\n\nChange-Id: I34849311c183e06336a1391d2d1568a087f973f6\n"
    },
    {
      "commit": "96ebc6b5097ab73eef45e094241e444f4c21bfcc",
      "tree": "b01b3d09326092131154faa7a42058d026ad5d00",
      "parents": [
        "30c46ad519c127a92f2bd3ca1dc1eab9da6ac165"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 21 18:32:32 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 21 18:32:32 2012 -0800"
      },
      "message": "Only copy paths, paints and shaders when we need to.\n\nChange-Id: Iba7a9c92c865f698821b6ff7bc4f502659642ac1\n"
    },
    {
      "commit": "c27cc01f6abf8564dc9b7b6cd7f2a12a347f725d",
      "tree": "31b1c6044b0f79ed98f7d09b0ec5c038c734aa45",
      "parents": [
        "fe455af277183f910eb74653a3ad172c717e7abf"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 15 18:34:37 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 15 18:34:37 2012 -0800"
      },
      "message": "Prevent AutoCompleteTextView from opening a popup when it shouldn\u0027t\nBug #5553515\n\nThe People app is forcing ACTV to show the IME which had the side effect\nof showing the drop down popup. ACTV was unfortunately not ready to show\nthe drop down if the filtering resulted in no results. Doing so was putting\nACTV in a weird state that in turn caused a window to be leaked and really\nbad behavior to occur in the lower graphics levels.\n\nChange-Id: I2ff146d5ae4e4a28edf6ea17039c9f8fdb710e4f\n"
    },
    {
      "commit": "967e2bf3ac8943a8e8a374bf86021915445cda67",
      "tree": "1534a056ce117ebd6c0b8e39bd6a2ed2a6eb46c8",
      "parents": [
        "0afa7e2d95a1ae047ceddf2ca67f05c67ac30770"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 07 17:04:34 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 07 17:04:34 2012 -0800"
      },
      "message": "Preliminary support for clipRect(Rect, Op)\n\nThis adds basic support for clip regions. It is currently disabled at compile\ntime. Enabling clip regions will require setting up a stencil buffer.\n\nChange-Id: I638616a972276e38737f8ac0633692c3845eaa74\n"
    },
    {
      "commit": "211370fd943cf26905001b38b8b1791851b26adc",
      "tree": "03db29f15516e381b8f4553a87756c03c64d028a",
      "parents": [
        "a403a2e0f0d55a709821a6310de849176dc9b426"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 01 16:10:55 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 01 16:10:55 2012 -0800"
      },
      "message": "Add optional metadata to initiliaze the render threat.\n\nThe render threat is likely to break your application if you initiate it.\nAs such it must be explicitely requested using the following meta-data\ntag in your manifest\u0027s application tag:\n\n\u003cmeta-data android:name\u003d\"android.graphics.renderThread\" android:value\u003d\"true\" /\u003e\n\nChange-Id: Ibf0a48af2a0d091562bf6907eac970e3d1d601c4\n"
    },
    {
      "commit": "5ff9df658230d49e42c43586997a02d8e4dd417e",
      "tree": "4b6f2b97036285bd8e114c2f476bcfd0c812d4c9",
      "parents": [
        "36d7549181af397cfaf879f46e407e762e0e8cba"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 23 17:09:05 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 23 17:09:05 2012 -0800"
      },
      "message": "Add full support for Canvas.setDrawFilter()\n\nChange-Id: I0ad35d0603c4eeda469014803be14c1dcdde918c\n"
    },
    {
      "commit": "f9d9c065ed75f1196316a9a31f92309f602cef76",
      "tree": "ca552893d80825f16728e613d2aa341b1cdd92d9",
      "parents": [
        "75582e889d4895483309e38364266073be6d46b8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 19 16:53:41 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 19 17:16:38 2012 -0800"
      },
      "message": "Deprecate unused APIs\n\nChange-Id: I0107e246b632dda96b8b025217936954f1f46283\n"
    },
    {
      "commit": "671d6cf460531825a321edb200523d0faa7792c9",
      "tree": "7fde21ba8f48911629c3dd67a1138bd6a569c084",
      "parents": [
        "fb9ffe02609c9c4ffca64927e72bc935cfe87768"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 18 12:39:17 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 18 18:00:12 2012 -0800"
      },
      "message": "Full support for Canvas.drawPosText\n\nThis also introduces a small optimization when rendering text.\n\nChange-Id: Iff620ac97bf878eaac406bccc6daa07052c93890\n"
    },
    {
      "commit": "62b6eaa7f3a8111311a7ee097f278eb55865a499",
      "tree": "c41da021e65907a60607fac87c1c7f3172139a73",
      "parents": [
        "7677d8f006b94c76dcad6f551bf14f983f58dc14"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 17 14:52:13 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 17 14:53:26 2012 -0800"
      },
      "message": "Fix text encoding when drawing with drawPosText in software\n\nChange-Id: I0cd8ee526189c38c50953a1a08b50e0b31c55d8c\n"
    },
    {
      "commit": "5e7c469c7a3039af7696789a797f8d91a45227eb",
      "tree": "f66d7d042190f6ec0418dd04db3853d803fcb2d5",
      "parents": [
        "a62f172215727a1e00af0cb934904e00926a86c9"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Oct 20 20:31:50 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Oct 20 20:33:07 2011 -0700"
      },
      "message": "Make sure 9patches are not filtered when not necessary\nBug #5383406\n\nChange-Id: I061c8069a4d9f4eaf45671283710b564639eeb32\n"
    },
    {
      "commit": "a9dc86b21defc26db0d71f276aff5c3af0b62ff5",
      "tree": "e4274c53c5839ef4d6c658bc8b145a67db9568fb",
      "parents": [
        "098ffcd521cd272ee3a63174759cceeda618d2ef"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 11 14:06:21 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 11 14:06:21 2011 -0700"
      },
      "message": "Correctly apply transforms when getting a TextureView\u0027s bitmap\nBug #5439406\n\nChange-Id: I271a9a2e38f5b3600dc158f8f442a6b0893f472b\n"
    },
    {
      "commit": "2a9fa89643ce796ee6dc7edae2742b291b6c5f40",
      "tree": "c07461bb9ae5b51bdc70a6bcff24d53229b0d0d7",
      "parents": [
        "462785fa257671fe4905d1d3e6ca27e4a61ee946"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 28 16:50:02 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 28 16:50:02 2011 -0700"
      },
      "message": "Don\u0027t build display lists for views with a layer.\n\nThis could cause the draw() code of views to be invoked too often\nor worse, called with the wrong canvas. For instance, a view backed\nby a software layer could get its draw() method called to record a\ndisplay list. Using a software layer is the recommended way to use\ndrawing operations not supported in hardware. Since we would\nsometimes call the draw() method with the hardware backend anyway,\nthe app could crash by executing an unsupported operation.\n\nChange-Id: Ib5f9a3a4c6f3efff5e0162ecd73d2dffe06e30a6\n"
    },
    {
      "commit": "407ec78b828173257b0c5dae221649a4ccd8b058",
      "tree": "3890ba718151c345ce5c87a8d252e0445d790dc3",
      "parents": [
        "631582f7f7a3c879a5fba81f2bc082e4826758aa"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 24 17:06:58 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 24 17:06:58 2011 -0700"
      },
      "message": "Add OpenGL backend to ImageWallpaper\nBug #5204874\n\nCurrently disabled.\n\nChange-Id: I5e7b35dce2981b0691f107e39c6394b260466543\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": "402f05530352f34d5320c2d23be43c274d97c4e2",
      "tree": "f16fff92ad3dead45679fff4ee4c7c3fdb5888bb",
      "parents": [
        "5229f7f2266c25f976070e0c2007e425010152ff"
      ],
      "author": {
        "name": "Grace Kloba",
        "email": "klobag@google.com",
        "time": "Tue Aug 09 18:47:17 2011 -0700"
      },
      "committer": {
        "name": "Grace Kloba",
        "email": "klobag@google.com",
        "time": "Tue Aug 09 18:47:17 2011 -0700"
      },
      "message": "Add a return value for SurfaceTextureListener#onSurfaceTextureDestroyed.\n\nIf returns true, the SurfaceTexture will be released by TextureView.\nIf returns false, the client needs to release the SurfaceTexture.\n\nChange-Id: I946f71e337ad4170c168854ac27e028b82489c8c\n"
    },
    {
      "commit": "bd496bc3d481f9cfc39007d22372d3a1a8809f96",
      "tree": "1c69e8c136dd81e68459c8b9870e0fac4bd6ae10",
      "parents": [
        "6805545649f2b194859033df94602492b9ec086e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 02 17:32:41 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 02 17:32:41 2011 -0700"
      },
      "message": "Paint style and stroke width affect text rendering.\nBug #5112207\n\nChange-Id: Ic34037ace21a5058ba23dd15e51aae58c998454d\n"
    },
    {
      "commit": "0965a3244b4c3009d08db2e084cdcb681ef66d26",
      "tree": "034851a3f3c8e4e8c5da0ef829099ed8907e7286",
      "parents": [
        "a60c3889718f4513a6c9d8b80f655db5d6346905"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 01 17:39:21 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 01 17:39:21 2011 -0700"
      },
      "message": "Allow Canvas.setBitmap() to receive a null Bitmap.\n\nChange-Id: I6096f0b44866e532ccd96a29c816bf34d48c1dc2\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": "7eabe55db6b113f83c2cefcd06812648927de877",
      "tree": "a105d90d8addbce9bb457b4bef974ce2f699fc81",
      "parents": [
        "ac4159549c10dbe428d42980278c0e43ecc8d93f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 21 14:56:34 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 21 14:56:34 2011 -0700"
      },
      "message": "Add looper profiling to adb shell am\n\nTo profile the looper, run the following command:\n\nadb shell am profile looper start \u003cprocess\u003e \u003cfile\u003e\nadb shell am profile looper stop \u003cprocess\u003e\n\nChange-Id: I781f156e473d7bdbb6d13aaffeeaae88bc01a69f\n"
    },
    {
      "commit": "3c2c9e4e0dde0f3a9c27ccff5313cfbeb4504f8e",
      "tree": "0028f1611f2dbdbb1269330fdb60a5a622132d25",
      "parents": [
        "c27cc947e42b1effb5f6d18e0d6a8a1055f271d9"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 18 17:45:04 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 18 17:45:04 2011 -0700"
      },
      "message": "Update TextureView.lockCanvas() test.\n\nChange-Id: Ib0f613fcd6ba64a696936e4e2b386b96d76b828a\n"
    },
    {
      "commit": "6be3d5561cbeccf0a8257a4acb155657f868e548",
      "tree": "c43a668998d17e26dee93e37e4702b5d45ab06c7",
      "parents": [
        "f4f79ac42a318145397327cd6a0d1f421c6c00f0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 14 18:08:37 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 18 15:02:06 2011 -0700"
      },
      "message": "Add lock/unlockCanvas to TextureView\n\nWith this change, TextureView has feature parity with SurfaceView.\n\nChange-Id: I4ef2da33420fc9590f868636ae72a5a6de61965b\n"
    },
    {
      "commit": "f9284695e8c10dad4daf3d2c84f607483bcb56ca",
      "tree": "bb4d52d7d3f6d9b73c8ba23d55036d3f4cd1ba31",
      "parents": [
        "fed878d98bc42db61cf04d759235b8406a7d14fd"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 13 18:46:21 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 15 11:25:11 2011 -0700"
      },
      "message": "Add new ViewDebug APIs to profile the event queue.\n\nChange-Id: I225bf288780b0244f459316e2765cfa29cd22c89\n"
    },
    {
      "commit": "5fccb70de94f4270cff1ca35d59a289bdf37a89f",
      "tree": "c7bff5ec29427fc554b24012facd7210691e25ec",
      "parents": [
        "039857520b1a03a52051b966d87d587225bdfcc3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 11 18:23:09 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 11 18:23:09 2011 -0700"
      },
      "message": "Add test for bug #4970944\n\nChange-Id: I3e7287bc406ff497a49cf823cee53b1a943a74a9\n"
    },
    {
      "commit": "cfacbeadffb5dccbf0434d9c05b19430a5237c3b",
      "tree": "aa04e728f2233768a0f919c1349c1c16717aef25",
      "parents": [
        "ec19b4a764d512091a780fc93ced567dfbf80914"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 07 21:33:41 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 07 21:33:41 2011 -0700"
      },
      "message": "Cleanup\n\nChange-Id: I2a9dc34e907b4c6e60f8c2999150b22015012e74\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": "f61970fc79e9c5cf340fa942597628242361864a",
      "tree": "c84c5593c85a3526dffa52eea2158a2332d819a8",
      "parents": [
        "a0c680393f2dd03a937c598b2cb9abf98a58152c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 07 14:10:06 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 07 14:10:06 2011 -0700"
      },
      "message": "Add an API to query maximum bitmap/texture size on Canvas.\n\nChange-Id: I2c576c9a4ecad9f33cc6636bcbc29786acdf052d\n"
    },
    {
      "commit": "595c18b07a86754f5af1a971e3566fcbb6066b60",
      "tree": "08473dfc840255ecea78697e2aa11cad956d8fb4",
      "parents": [
        "2c22882181e867c9ba4e74ee973b87a71db3389f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 29 17:20:38 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 29 17:20:38 2011 -0700"
      },
      "message": "Add test case for driver issue\n\nChange-Id: I0411bf9c8e114ce388e619170fb4c2b1c6fd80f9\n"
    },
    {
      "commit": "d0d07059943603c8d20ab9e2ee31ba5c7d477fba",
      "tree": "7c526801385fe2fd100b048ffcf8e16e23fb3de0",
      "parents": [
        "4a5a71518a71a44dbccb3af9a08b82056ea748b3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 24 18:51:28 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 24 18:51:28 2011 -0700"
      },
      "message": "Update GLTextureView sample to do something real.\n\nChange-Id: I55a62434ae0b602522221689626f6b4155bd0d91\n"
    },
    {
      "commit": "4a5a71518a71a44dbccb3af9a08b82056ea748b3",
      "tree": "d04dafb488a7bfde32e153980a6831c84f93833e",
      "parents": [
        "80429c458506485904715180d10584092a5cd082"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 24 17:53:53 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 24 17:53:53 2011 -0700"
      },
      "message": "Don\u0027t set texture parameters on every frame.\n\nChange-Id: Iec368405ad6a4ccfd569a0b3b4d681871a770396\n"
    },
    {
      "commit": "80429c458506485904715180d10584092a5cd082",
      "tree": "7a7daee4889e2f9dd679a98b12e38ccb2dbed743",
      "parents": [
        "58f4edb7701bf20925468fa5fd1a06a461ff085b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 24 17:20:32 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 24 17:20:32 2011 -0700"
      },
      "message": "Properly tear down TextureView\n\nChange-Id: Ic23cd9257889d0abe8cc3fc1d04a66d0505e383e\n"
    },
    {
      "commit": "02ccac69fd1c0a03c24c5f3ace0ad4bed337b1fd",
      "tree": "60531b505178d4fb169abc83567d5d8db4f14ed0",
      "parents": [
        "b0b1b11b965598cb8fb724e636ebb58a77d437b5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 24 13:20:23 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 24 13:20:23 2011 -0700"
      },
      "message": "Code cleanup\n\nChange-Id: I64c346004e0adf9a776d0315534d4fe445f0c0ca\n"
    },
    {
      "commit": "cf559377b750271472aa0a717bf3b7d34abc0b39",
      "tree": "d7559dc48209ea1fe84c134ec5b83803dd5a1377",
      "parents": [
        "ea5f51909be34bdaec9d17320aaf25ffa56e76e9"
      ],
      "author": {
        "name": "Grace Kloba",
        "email": "klobag@google.com",
        "time": "Wed Jun 22 23:05:40 2011 -0700"
      },
      "committer": {
        "name": "Grace Kloba",
        "email": "klobag@google.com",
        "time": "Wed Jun 22 23:05:40 2011 -0700"
      },
      "message": "Add onSurfaceTextureUpdated to the TextureView listener.\n\nThe app needs a way to throttle the producer side. Expose this to enable it.\n\nChange-Id: I04b6a3fc444117a9fc2449fb87c3c834247c8ef1\n"
    },
    {
      "commit": "1ec3a58bcdd0d5fa82cf878d974d062811933ae2",
      "tree": "87920da198d25f6b33a64104028d61ceab771ff5",
      "parents": [
        "a9489274d67b540804aafb587a226f7c2ae4464d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 22 21:01:03 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 22 21:01:58 2011 -0700"
      },
      "message": "Prevent possible NPE in TextureView\n\nChange-Id: I539813d614c7eb1f68dad6b605cbad5b5144c5e9\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": "98029c825b9234e6b90721d910cc180885fcab1d",
      "tree": "0091be00b155882643ffe2a3f88d6df1c297aa3f",
      "parents": [
        "5d5d1ff2d5daadec48c6c95e86d6d644390c02e6"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 17 15:47:07 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 17 15:47:07 2011 -0700"
      },
      "message": "Fix rendering issue with paths when the stroke width is 0\n\nChange-Id: I5d8ac23dc69e9e17df4ef6b5195186b5207e2524\n"
    },
    {
      "commit": "77a811610f99e21da7f88dafef60d09f345d0506",
      "tree": "f9342ace8ae4541f75c17a3f8531d3c6090de474",
      "parents": [
        "113543c909baadb911cfda6acef056137e16f191"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 14 16:45:55 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 14 17:06:53 2011 -0700"
      },
      "message": "Add TextureView.getBitmap()\n\nThis API can be used to get a Bitmap copy of the content of a\nTextureView.\n\nChange-Id: I07522216c353720fba5cab333174f58f484eb911\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": "451ce44a18e4c48f8a43aa250957f76967a35d31",
      "tree": "d9424d45f00843e584097c1dec19a53ec6f96e3c",
      "parents": [
        "181d0a6ccedee03789919d53c46540a8df751896"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 10 15:40:36 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 10 15:44:09 2011 -0700"
      },
      "message": "Add onSurfaceTextureDestroyed() callback.\n\nThis is needed for Renderscript and it also makes implementations\nof TextureView cleaner. This change also hooks up the onSurfaceTextureSizeCHanged()\ncallback whenever the view size changes.\n\nChange-Id: I2f972ee4504d800329defefacf32cf20547d31a3\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": "f9be16a9d4f5e3b2e9f6b9742626e4a87c5e29be",
      "tree": "b51598fcd17821305edd1287e35c015275bb1964",
      "parents": [
        "4725a90e8ea82799fb88fd27db5bb16969ac5abf"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed May 25 17:49:11 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed May 25 17:49:11 2011 -0700"
      },
      "message": "Rename test to be able to launch it on crespo.\n\nChange-Id: Ieb3e1f6a2e3effe5c4042ad170f195244c7e2158\n"
    },
    {
      "commit": "44984ea0cb3702384d023b5f211deda3c4b0b656",
      "tree": "2ee6fb3780dc0e1cfd3b6d2837569bc5f8fe3a60",
      "parents": [
        "3a9e712aca65ac49e7155e98e5d6b815da76f94b"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu May 19 13:50:47 2011 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu May 19 16:39:37 2011 -0700"
      },
      "message": "Enable large font rendering with GPU acceleration\n\nChange-Id: I7b022100fb0762613f9cf7753dbb0217e1e75f8d\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": "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": "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": "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": "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": "3a03eeedafb3e3335b56bdb9c0a2f02104d32299",
      "tree": "660acf7eb7b5d9eef082b169f7bbc0e5be7abb32",
      "parents": [
        "e1c6ff4b91072a4071589938c74dd65d66f88fb5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Apr 26 14:04:08 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Apr 26 14:04:08 2011 -0700"
      },
      "message": "Update shader text to test with drop shadows.\n\nChange-Id: Iefdf116846c9b5649d1561a9d80d66d1c3acfeca\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": "1a81aea8144b92ebaf807af9de69a0ab3415a5aa",
      "tree": "01eba86ec3fc430e0b174d59019026e35a42b1db",
      "parents": [
        "43e7aeb37e1d4d86eb89a0a5f620d148289d1986"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 21 15:24:51 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 21 15:30:27 2011 -0700"
      },
      "message": "Update GL textures when changing a Bitmap\u0027s pixels\nBug #4146495\n\nChange-Id: I4fe3f8501373b86b164af11ae51642b140035bb8\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": "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": "47b8adec3904535c8d8ce2b6e42ecd736f2d90ce",
      "tree": "3aa0807a2963ea256c378bf7dd5200fac9f39484",
      "parents": [
        "81904fa40b501d3907c086e7d4fdc4a3e25cd922"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 23 19:46:33 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 23 19:51:42 2011 -0800"
      },
      "message": "Add a new Camera API to control the camera\u0027s location\n\nChange-Id: Id9a082d2def803eb527e1987875e0d8a22c6e8aa\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": "f28daffda50042c1b7cbfeb34b4d47741c6e21a8",
      "tree": "ea4ec2648e7c585d35f26750d18cc1007ebd2052",
      "parents": [
        "e5e764ad0bb74d8c1405d018b4e0fe92d6554660"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Feb 04 00:59:34 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Feb 04 00:59:34 2011 -0800"
      },
      "message": "Empty the clip rect when intersection is empty.\nBug #3410035\n\nChange-Id: I5ceb80514d3b20c9ad230478549ad31ced403d53\n"
    },
    {
      "commit": "09b7c91de73b59aa3f679b3ae3ba299f82ec9f8a",
      "tree": "9eb49f2fedb60e6df37b54216ed20f054a6f55fd",
      "parents": [
        "62687ec12cb8e0b1d4044a235b1387b9a8c3b4b4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 02 20:28:09 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Feb 02 20:28:09 2011 -0800"
      },
      "message": "Allocate layers from the layers pool.\nBug #3413433\n\nThis change will be beneficial to Launcher to avoid hiccups when\nswiping pages of icons. When a layer is discarded, it is kept\nin the layers pool instead of being destroyed right away. This\nfavors memory reuse over allocations.\n\nChange-Id: Ifb6944ba83d6ceb67c331527c0827b26ce648eb1\n"
    },
    {
      "commit": "849d0a37cf2ca6c6a6c2d4d4456495e32e363120",
      "tree": "f23404bc72d50712c8d7b26ec375f9e22b91e500",
      "parents": [
        "485d577af1b410769e1a364d8e2bf7837fb313b0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 01 17:20:48 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 01 17:56:09 2011 -0800"
      },
      "message": "New API to let apps draw without layers.\nBug #3413433\n\nLauncher now enables layers all the time, but in some cases (for instance, when the\nworkspace is not scrolling,) it is more efficient to draw without the layer.\n\nChange-Id: I625fb5b48506acda9ae75356fdbbe812c85f2aab\n"
    },
    {
      "commit": "54229ee5eb92e3e2fc63d75353bcf09e0ebc8030",
      "tree": "cbec7a5d7caa4a04d534de6d624b3ae6670d1de9",
      "parents": [
        "feeea8f07c854e6b0ae2fec3aa2d239c17f32b5b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 01 13:05:16 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Feb 01 13:05:16 2011 -0800"
      },
      "message": "Correctly set the alpha of a hardware layer before drawing it.\nBug #3410819\n\nChange-Id: I3ebaca2233f4edf5b59d84ec7706555056a1a4b1\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": "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": "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": "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": "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": "2577db1ec135a1470a2c42139772ec97a6c30e78",
      "tree": "8be799a2fa33a0b68b8b11706ded6e0c66ce66d7",
      "parents": [
        "807daf7df615b60ce6fc41355aabe3aa353cebab"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 18 13:02:38 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 18 13:02:38 2011 -0800"
      },
      "message": "Add support for Paint::setTextSkewX in OpenGLRenderer.\nBug #3360888\n\nChange-Id: I42e81a1f10bf7b9ae1c63ca8add1878fd59a1e8a\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": "d6cd572df8067c40b3e0e7e74e58cdb456b33e92",
      "tree": "bb0ed888ea6af5780ad0b92c397297ebf4a579b8",
      "parents": [
        "73fddbae964ee41895c8218454d0ed7fd71d6913"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 17 14:42:41 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 17 14:42:41 2011 -0800"
      },
      "message": "Improve hardware layers rendering speed when setting a View\u0027s alpha.\n\nChange-Id: Ib1275677f531c60d9919978c5538c663fdb823b5\n"
    },
    {
      "commit": "2361098da3b9d9c3eeed410dc72ba62c0e9177cf",
      "tree": "f3c5cb63e38bfb99ef76e10400cb846ecc21c812",
      "parents": [
        "875862e3ec85153553ce50acc02863ea0720ccb6"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 17 12:51:55 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 17 13:04:12 2011 -0800"
      },
      "message": "Add BitmapFactory.Options.inMutable to load mutable bitmaps.\n\nChange-Id: Iaa222127520f3aa55072d44af12ee3477908b876\n"
    },
    {
      "commit": "fb13abd800cd610c7f46815848545feff83e5748",
      "tree": "299f1c241fc360cbf3016adee07ac3db46750203",
      "parents": [
        "90fc03bc493fc2c984599b198b9d50bc387134f2"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 16 15:16:38 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sun Jan 16 15:16:38 2011 -0800"
      },
      "message": "Fix 9patch rendering in ExpandableListView.\n\nChange-Id: I60843d61a40b0cb7dd09923cb4489a5a76f20486\n"
    },
    {
      "commit": "6c319ca1275c8db892c39b48fc54864c949f9171",
      "tree": "d89e4222487db2ccd9a6b03b0d55f8361a7d1856",
      "parents": [
        "b796889671c089fb7e2fc4498aa701d3e8e552a3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 11 14:29:25 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 11 17:53:19 2011 -0800"
      },
      "message": "Better backend for hardware layers.\n\nWith this new backend, a hardware layer is only recreated when\nits associated view is udpated. This offers fast composition\nin GL and fast update of the layer in GL as well.\n\nChange-Id: I97c43a612f5955c6bf1c192c8ca4af10fdf1d076\n"
    },
    {
      "commit": "7230a74e9a36dfc6c4346c14e325bf07cd05b380",
      "tree": "0726a708eb545618fde761bd03ed3a1830e34c03",
      "parents": [
        "a07105b7d2a27e6d69407bf96ddb773bddb5e553"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 10 22:26:16 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 10 22:26:16 2011 -0800"
      },
      "message": "Composite layers as regions.\n\nThis change detects what area of a layer was drawn into and generates a mesh\nto match this area exactly. This can be used to avoid blending empty pixels\nwhen the layer is composited.\nThis change also adds proper layers support to lines rendering and implements\nlayers composition in a more readable way.\n\nChange-Id: I4a5588b98b19bd66891ebdc39631b193c5e31999\n"
    },
    {
      "commit": "171c592f0b7066acf279863c8a52ddabea49d3db",
      "tree": "eebf9a8c82c6a6d9db6edbf077b9299a96ae36e4",
      "parents": [
        "f0fe6d311d183c5fcf45d5e3e995fc8f9ed12f8b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 06 10:04:23 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jan 06 18:34:30 2011 -0800"
      },
      "message": "New layers API for Views.\n\nThis API can be used to back a view and its children with either a\nsoftware layer (bitmap) or hardware layer (FBO). Layers have\nvarious usages, including color filtering and performance\nimprovements during animations.\n\nChange-Id: Ifc3bea847918042730fc5a8c2d4206dd6c9420a3\n"
    }
  ],
  "next": "9f0696709b403065d98936e7884536dc98349a59"
}
