)]}'
{
  "log": [
    {
      "commit": "6056e1027107aaa15f51a5ed775ff14c6b664ca3",
      "tree": "1337c3e4d996bb3528f9c92531a95ce30fd860c1",
      "parents": [
        "557a93e104f1fec69ed05b2d0ff26c78bca4c5d6"
      ],
      "author": {
        "name": "Jens Gulin",
        "email": "jens.gulin@sonymobile.com",
        "time": "Tue Feb 04 17:38:02 2014 +0100"
      },
      "committer": {
        "name": "Takeshi Aimi",
        "email": "takeshi.aimi@sonymobile.com",
        "time": "Tue Mar 25 09:37:02 2014 +0900"
      },
      "message": "Solve three memory leaks related to PatchCache\n\nA Patch can be fairly large, holding bitmap data, but\nis also frequently leaked which adds to the severity.\nThe feature is used in many important processes such\nas Home, SystemUI and Chrome.\n\nThe following leaks are solved:\n\n1. The Patch itself was not always freed.\nPatchCache::removeDeferred() can mark patches to be\ncared for by PatchCache::clearGarbage(). But\nmCache.remove() would only destroy the container\nand the pointer, not the Patch object itself.\n\n2. The vertices stored in the Patch at Patch::createMesh()\nwould always leak. The empty/default destructor in Patch\nwould not properly destroy \"vertices\" since it\u0027s just a\npointer.\n\n3. A BufferBlock that\u0027s added to the mFreeBlocks\nin PatchCache could leak. The leak happened when a\npatch later needed the entire free block, because the\nobject was removed from the list but never deleted\nin PatchCache::setupMesh().\n\nChange-Id: I41e60824479230b67426fc546d3dbff294c8891f\n"
    },
    {
      "commit": "6381dd4ff212a95be30d2b445d40ff419ab076b4",
      "tree": "ea96f7e229cafae41f7be46a3cf0345edd2dc869",
      "parents": [
        "3fc3b9fd1bf71351bf1ff2d49d6e10b6acabf068"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Mar 03 17:12:03 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Mar 10 10:00:02 2014 +0000"
      },
      "message": "LP64: Make 9 patches architecture agnostic.\n\nThe Res_png_9patch struct had several pointer members\nwhose size differed between 32 and 64 bit platforms.\n\nThese members have been replaced by uint32_t offsets\nto serialized data. The serialized form for 9patches\nplaces a Res_png_9patch object at the beginning of\nserialized data, followed by int32_t arrays of xDivs,\nyDivs and colors.\n\nNote that these offsets are not strictly required,\nsince they can be computed from the values of numXDivs,\nnumYDivs \u0026 numColors, however they are called in tight\nloops so having them computed once is a beneficial.\n\nThis change also removed the unused patch_equals function\nfrom aapt\u0027s Image.cpp.\n\nChange-Id: I3b9ac8ae5c05510d41377cae4dff1c69b40c2531\n"
    },
    {
      "commit": "6cad75744ed3b81cf2c96f545368067b62c726ec",
      "tree": "42028d937d8071bbd1e58029da66a20e39346b1c",
      "parents": [
        "4a8baef3f56042ab4592db030c61af0a4c632d15"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 24 11:49:33 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 24 11:49:33 2013 -0700"
      },
      "message": "Fix 9patches\u0027 limitation of 32 empty quads\n\nThe 9patch format allows to define more empty quads than this, remove\nthe use of a single int to index empty quads and replace it with a\nlookup in the 9patch resource data structure.\n\nChange-Id: I148ee5d9e0c96822b534a344e15c9d88078db7c2\n"
    },
    {
      "commit": "f296dca95f09be9832b5dcc79717986525d2b6cb",
      "tree": "7fda09c7b293823c59d63c08370369c45690a95d",
      "parents": [
        "066bdcfe83e49ad4bfb97670521c1b7e7297ba53"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 24 14:33:37 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 24 16:45:41 2013 -0700"
      },
      "message": "(Small) 9patch drawing improvements\n\nSave a bit of memory in meshs generated from native code\nAvoid an extra if/else when drawing with hardware accelration on\n\nChange-Id: I31a4550bde4d2c27961710ebcc92b66cd71153cc\n"
    },
    {
      "commit": "03c00b5a135e68d22ca5bb829b899ebda6ed7e9d",
      "tree": "7538aa95ebbfb5c06aaaebbd22966cddcce2ee1e",
      "parents": [
        "d485ef27c795648c4a05c4c089e8c5a15712fd36"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 20 18:30:28 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 21 10:13:58 2013 -0700"
      },
      "message": "Batch 9-patches in a single mesh whenever possible\n\nThis change also fixes the way batched bitmaps were handled\ninside a layer. The layer is now correctly dirtied to minimize\nthe amount of pixels to blend.\n\nFix alpha, mode and opaque computations for DrawPatchOp.\n\nChange-Id: I1b6cd581c0f0db66c1002bb4fb1a9811e55bfa78\n"
    },
    {
      "commit": "3b748a44c6bd2ea05fe16839caf73dbe50bd7ae9",
      "tree": "ea104e727beba793c10952f5b328478020859599",
      "parents": [
        "dd424cf079d2677e9333d89466f93166787e61c8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Apr 17 18:54:38 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu May 02 13:32:09 2013 -0700"
      },
      "message": "Pack preloaded framework assets in a texture atlas\n\nWhen the Android runtime starts, the system preloads a series of assets\nin the Zygote process. These assets are shared across all processes.\nUnfortunately, each one of these assets is later uploaded in its own\nOpenGL texture, once per process. This wastes memory and generates\nunnecessary OpenGL state changes.\n\nThis CL introduces an asset server that provides an atlas to all processes.\n\nNote: bitmaps used by skia shaders are *not* sampled from the atlas.\nIt\u0027s an uncommon use case and would require extra texture transforms\nin the GL shaders.\n\nWHAT IS THE ASSETS ATLAS\n\nThe \"assets atlas\" is a single, shareable graphic buffer that contains\nall the system\u0027s preloaded bitmap drawables (this includes 9-patches.)\nThe atlas is made of two distinct objects: the graphic buffer that\ncontains the actual pixels and the map which indicates where each\npreloaded bitmap can be found in the atlas (essentially a pair of\nx and y coordinates.)\n\nHOW IS THE ASSETS ATLAS GENERATED\n\nBecause we need to support a wide variety of devices and because it\nis easy to change the list of preloaded drawables, the atlas is\ngenerated at runtime, during the startup phase of the system process.\n\nThere are several steps that lead to the atlas generation:\n\n1. If the device is booting for the first time, or if the device was\nupdated, we need to find the best atlas configuration. To do so,\nthe atlas service tries a number of width, height and algorithm\nvariations that allows us to pack as many assets as possible while\nusing as little memory as possible. Once a best configuration is found,\nit gets written to disk in /data/system/framework_atlas\n\n2. Given a best configuration (algorithm variant, dimensions and\nnumber of bitmaps that can be packed in the atlas), the atlas service\npacks all the preloaded bitmaps into a single graphic buffer object.\n\n3. The packing is done using Skia in a temporary native bitmap. The\nSkia bitmap is then copied into the graphic buffer using OpenGL ES\nto benefit from texture swizzling.\n\nHOW PROCESSES USE THE ATLAS\n\nWhenever a process\u0027 hardware renderer initializes its EGL context,\nit queries the atlas service for the graphic buffer and the map.\n\nIt is important to remember that both the context and the map will\nbe valid for the lifetime of the hardware renderer (if the system\nprocess goes down, all apps get killed as well.)\n\nEvery time the hardware renderer needs to render a bitmap, it first\nchecks whether the bitmap can be found in the assets atlas. When\nthe bitmap is part of the atlas, texture coordinates are remapped\nappropriately before rendering.\n\nChange-Id: I8eaecf53e7f6a33d90da3d0047c5ceec89ea3af0\n"
    },
    {
      "commit": "2af4635e4a9e448a65ff541252f8f94bc6ac48e0",
      "tree": "2ea27d507f81660cdbb8e2cdf48cce875c1b8cdd",
      "parents": [
        "878749fef09c7cb5894f77d9b032f876f9476e47"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Nov 26 18:30:17 2012 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jan 22 13:47:03 2013 -0800"
      },
      "message": "Object-based DisplayList recording\n\nbug:8037003\n\nChanges the DisplayList from using stream read/write commands to use an array of\nobjects manually allocated on a linear buffer.\n\nDepends on frameworks/native change https://googleplex-android-review.googlesource.com/#/c/257695/ which adds LinearAllocator\n\nAlso changes drawRects to use float count instead of rect count, to be more like drawLines/drawPoints\n\nChange-Id: Ia2e4a11acd8f0a757042a05cbc9e7563cb73ee47\n"
    },
    {
      "commit": "5341cead27070656458750a789ba211a505b57b5",
      "tree": "4887e2e3289373e24a6496427df4597b5b28f458",
      "parents": [
        "16ad17705eb22bb02a551cddd68f65b8addaa4d6"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 09 14:15:58 2013 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 09 14:15:58 2013 -0800"
      },
      "message": "Cleanup 9patch mesh matching code\nBug #7970966\n\nThe bug described in #7970966 should normally never happen but just in\ncase, change the detection code to be more robust.\n\nChange-Id: I7040a6087590e34abe8803cb8f83f051d77f3944\n"
    },
    {
      "commit": "c37f349ecff54f15ed31d57c1b886897c91430af",
      "tree": "431ab2a4385f6c3b61818e0c48b49bcf4e7ffff6",
      "parents": [
        "41d35aef06c2a570a45474a01ca95a6cb9c29d9e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 10 17:13:36 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 10 17:13:36 2012 -0700"
      },
      "message": "Prevent possible divide by 0\nBug #7307304\n\nShould never happen, but eh :))\n\nChange-Id: Ic7a09fd5c7a3622e6b4963f9ee6920e232018e2e\n"
    },
    {
      "commit": "41d35aef06c2a570a45474a01ca95a6cb9c29d9e",
      "tree": "0e4d15428b41eef15744027e19a00516bb8edab6",
      "parents": [
        "251445667ce045c4425c10fb24e3e23f90a210c0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 10 16:06:04 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 10 16:06:04 2012 -0700"
      },
      "message": "Allow 9patches to shrink\nBug #7307304\n\nChange-Id: I1fabf6df99c18c86ab1ec0e1e398a3d6d4098496\n"
    },
    {
      "commit": "70561df470c31513056df181571632851fd0d081",
      "tree": "371119049d622a7c524017ad0cf3900bd5e53a96",
      "parents": [
        "753e1280cbc3f0006b04f67385f02e1f92019f7d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 10 17:40:18 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Sep 10 17:40:18 2012 -0700"
      },
      "message": "Prevent degenerate 9-patches from drawing out of bounds\nBug #7137292\n\nChange-Id: I371e94899445d2f3c6794d5c0aee8faa514d3c2c\n"
    },
    {
      "commit": "4ff0cf4b83605bff630c4e6f1fabe4f72a3f93a1",
      "tree": "2616ad1230b8ebc22a720945c5841a36572b9545",
      "parents": [
        "bec1d13da2ef3c8c2c4cc4f740474d095068bd8b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 06 14:51:10 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Aug 06 14:51:10 2012 -0700"
      },
      "message": "Add new debug tool to track hardware layers updates\n\nYou can setprop debug.hwui.show_layers_updates true to flash\nhw layers in green when they update. This is also a setting\nin the Dev. section of the settings app.\n\nChange-Id: Ibe1d63a4f81567dc1d590c9b088d2e7505df8abf\n"
    },
    {
      "commit": "f3a910b423db7ad79cf61518bdd9278c048ad0d8",
      "tree": "a0ae14d597ee14202ec6ca60cedfb446ff470379",
      "parents": [
        "d71dd367af604571c7d00ca473184a1b9240eca2"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 12 20:35:21 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Dec 12 20:35:21 2011 -0800"
      },
      "message": "Optimize state changes\n\nChange-Id: Iae59bc8dfd6427d0967472462cc1994987092827\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": "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": "a3311ed7a9ddd7ecb066f4731ce4bc3bd3ffd939",
      "tree": "9b612b812078e8c9ee8b86c378a7264ca161f1a2",
      "parents": [
        "c4d09f2b69b82201ce48dbe29c4d8bd85bdda92a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 19 12:00:08 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 19 12:00:08 2011 -0800"
      },
      "message": "Fix the fix for 9patches.\n\nChange-Id: I66dca835d9d0e9766d887746c3265e4b13ae688b\n"
    },
    {
      "commit": "fdbec3e4828f93bfa5cde758ad0e77b89c5c2ecd",
      "tree": "cc77b42b6e772ca9093eeb99a80d97f1b49cfea9",
      "parents": [
        "7890fe2da4719bf72b4fbcbef20a555d5fbd94bb"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 19 10:37:35 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jan 19 10:37:35 2011 -0800"
      },
      "message": "Fix 9patches in Launcher\n\nChange-Id: Ieedf36ccaab253909b44ed8c222d523867f095be\n"
    },
    {
      "commit": "eb6a4a17a07f1aa41bd58d418b2982cddb97685a",
      "tree": "3c838bf10e360e69d032d41bbff55661bcb30edd",
      "parents": [
        "2577db1ec135a1470a2c42139772ec97a6c30e78"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 18 14:02:16 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jan 18 14:02:16 2011 -0800"
      },
      "message": "Fix 9patches, again...\nBug #3365243\n\nChange-Id: Id45a1f1fd5e099b1d691e6064401d3de1b0c5c20\n"
    },
    {
      "commit": "7444da512680df0c52af39ea521e35adbe0c167d",
      "tree": "001f5bbb70e6f0a8759381498665343136e003f9",
      "parents": [
        "fb13abd800cd610c7f46815848545feff83e5748"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 17 10:53:31 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jan 17 10:53:44 2011 -0800"
      },
      "message": "Yet another fix for 9patch rendering.\nBug #3362133\n\nChange-Id: Ia6521d31a8c208a2ad2506a23b6a01e5e442ad86\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": "8ab4079ca27e36e5c584495bcd71b573598ac021",
      "tree": "80b5dca2e6ad9cf75a7215109575a9c2d927b278",
      "parents": [
        "3a3fa1be9ab8e11edc660ecb35ae21ae0b5c8cc2"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 07 13:30:10 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Dec 07 13:30:10 2010 -0800"
      },
      "message": "Fix 9patch rendering\nBug #3253396\n\nSome quads were incorrectly assumed to be degenerate.\n\nChange-Id: I9155699edc3424afe9d5a131886bb9966d46b109\n"
    },
    {
      "commit": "a5ef39a21683189e5906c9f252b997f0508e350d",
      "tree": "f87616c7a443f8e8d19d40654036653252bf65e4",
      "parents": [
        "d8591020ec5940aa9ac738593a460a8df8cd560a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Dec 03 16:48:20 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Fri Dec 03 16:48:20 2010 -0800"
      },
      "message": "Don\u0027t render degenerate triangles in 9patches.\nBug #3251983\n\nChange-Id: Ib0b38a7b8111542372f4c4c106b6321c26fe4ad4\n"
    },
    {
      "commit": "bd41a11078e94b755c8b6f78e1e4242c715fccd4",
      "tree": "d8649ba2cba31ba1a0e651b25a21a8203eb94927",
      "parents": [
        "5e3af5fcba360916f38753bd505e47040fc87729"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Dec 02 17:16:26 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Dec 02 17:16:26 2010 -0800"
      },
      "message": "Correctly index transparent quads when generating 9patch meshes.\nBug #3250026\n\nChange-Id: Id7e051e9ed81f6b4e7748756503d8055ac7d531a\n"
    },
    {
      "commit": "6f72bebe92a4db7b5dc83f4ac5b5fd02e3b4e2cd",
      "tree": "50c8b82bd203c9c71821a4cf8b649f73d258eeae",
      "parents": [
        "730666858692ea396f5ad779654b5d86ff90b6ca"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Nov 30 12:04:14 2010 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Nov 30 12:06:39 2010 -0800"
      },
      "message": "Update 9patch structure when rendering with different divs/colors.\nBug #3221488\n\nChange-Id: Ifc9e42a991d630feadc9e8032322f37504d09d6d\n"
    },
    {
      "commit": "5b3b35296e8b2c8d3f07d32bb645d5414db41a1d",
      "tree": "bad2ebdbfeb8a3a0be1591d5a357a8280df7d1d2",
      "parents": [
        "2444ddb3d9b59ec45ba50858fcbff639e59b93b1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Oct 27 18:57:51 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Nov 02 16:17:23 2010 -0700"
      },
      "message": "Optimize FBO drawing with regions.\nThis optimization is currently disabled until Launcher is\nmodified to take advantage of it. The optimization can be\nenabled by turning on RENDER_LAYERS_AS_REGIONS in the\nOpenGLRenderer.h file.\n\nChange-Id: I2fdf59d0f4dc690a3d7f712173ab8db3848b27b1\n"
    },
    {
      "commit": "9bca4793a33d2714b306d69ceb870925a588fe71",
      "tree": "03d6bc554b1a61de818c32330039af59cad4b70d",
      "parents": [
        "3e3ba155fc0ef7a7f40f06762240d9ba22f62b19"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 25 18:42:25 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 25 18:42:25 2010 -0700"
      },
      "message": "Small cleanup.\n\nRemoves unnecessary forward class declaration, make Caches::currentBuffer\nprivate instead of public.\n\nChange-Id: Idba6325c8c602d89239e667cb8ec87e7943f8e75\n"
    },
    {
      "commit": "2665b85b2bd08faabf7c520a622a0e4d3465245f",
      "tree": "b64b59b93eb532763f6323e4e90b33d6186faab8",
      "parents": [
        "03750a067e818ca7fbd0f590e2ff6a8fded21e6c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 18 15:11:50 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 18 15:11:50 2010 -0700"
      },
      "message": "Small cleanup.\n\nChange-Id: I0e5b9154a2d93af793d62f462d68cb7c6c3f6d75\n"
    },
    {
      "commit": "03750a067e818ca7fbd0f590e2ff6a8fded21e6c",
      "tree": "e41ffdc1b72f66c13284df27877703111f048170",
      "parents": [
        "65202242defad10eb33a3b3277af49eb238a3f33"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 18 14:06:08 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Oct 18 14:49:19 2010 -0700"
      },
      "message": "Use VBOs to render most geometries.\n\nChange-Id: I4360dc4fe5693ab425450c107282b2c22db4dca7\n"
    },
    {
      "commit": "4bb942083a0d4db746adf95349108dd8ef842e32",
      "tree": "7707bc9551f3db4ad0561c30c73293e4a0edfbf2",
      "parents": [
        "5a3b8e698e276839e502dcf41894b56ad59695c3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 12 15:59:26 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Oct 12 15:59:26 2010 -0700"
      },
      "message": "Optimize 9patch rendering.\n\nThis change detects empty quads in 9patches and removes them from\nthe mesh to avoid unnecessary blending.\n\nChange-Id: I4500566fb4cb6845d64dcb59b522c0be7a0ec704\n"
    },
    {
      "commit": "31529ff7918ce891fba9a660d0a861eb313ea554",
      "tree": "8be25943daf28a7e39af5d87d389abf1e986dd5a",
      "parents": [
        "a977120681904ee6309f3e90f51c6cc43615c007"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 17 10:26:31 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Sep 17 10:26:31 2010 -0700"
      },
      "message": "Correctly free memory.\n\nChange-Id: I08fcbfa7d27ae413e0a8e8ca6ea305c8530a72c1\n"
    },
    {
      "commit": "759ea80dca64ad652110a129e0d8bf93fea79f61",
      "tree": "910900df67d9f9fed51398de2a03f40e2abefec5",
      "parents": [
        "bf434114cbf55b216fdc76fc8d65a75e84c9dab5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 16 20:49:46 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 16 20:49:46 2010 -0700"
      },
      "message": "Add support for drawLines(), with anti-aliasing\n\nChange-Id: I16c0593c5671490909dec13a85df601e1428a1a6\n"
    },
    {
      "commit": "6820ac8b14b4558f5d8b833dde80895306a3e137",
      "tree": "b90f253c05f20ae8a36c7bdc49147d447b75e7d5",
      "parents": [
        "9322775014432ed6c87c864e98fe482f879ff233"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 15 18:11:50 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Sep 15 18:11:50 2010 -0700"
      },
      "message": "Fix 9patch rendering.\n\nChange-Id: Ic4c18ff483cca95fbabcb10843f7714efe488adb\n"
    },
    {
      "commit": "fb5e23c327cd5f8f93d1eaa7c10f34d6fd3efb6c",
      "tree": "8637af6593869b9e3f31a8b35c4388016eb690ac",
      "parents": [
        "3465d5f532b65b0e50d21f5b23bc3badc73248ba"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 09 13:52:56 2010 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 09 13:52:56 2010 -0700"
      },
      "message": "Refactoring to move vertex computing to the Patch class.\n\nThis change is mostly cleanup to keep less code in OpenGLRenderer.\n\nChange-Id: I954375143b2943829457ab470423729b60b844f5\n"
    }
  ]
}
