)]}'
{
  "log": [
    {
      "commit": "00755fed35e4a91291c42a8a47bed8b957e9f8e1",
      "tree": "0e680f4f9791bc8eef13ea7c0cce60ceeb86f8f6",
      "parents": [
        "0cb48705ad6e4be93c57d528be2230d0504340b3",
        "416a847633680d94efb926837efdc18726d54918"
      ],
      "author": {
        "name": "Raph Levien",
        "email": "raph@google.com",
        "time": "Fri Jul 20 14:24:19 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 20 14:24:20 2012 -0700"
      },
      "message": "Merge \"Add drop shadow for drawPosText in hwui renderer.\""
    },
    {
      "commit": "416a847633680d94efb926837efdc18726d54918",
      "tree": "0a5d914259e9ae5fa040e179ba5630d7102a49ad",
      "parents": [
        "592b29f4ad3d46b483b2d6ed2c5cfac8d139afe8"
      ],
      "author": {
        "name": "Raph Levien",
        "email": "raph@google.com",
        "time": "Thu Jul 19 22:48:17 2012 -0700"
      },
      "committer": {
        "name": "Raph Levien",
        "email": "raph@google.com",
        "time": "Fri Jul 20 12:55:30 2012 -0700"
      },
      "message": "Add drop shadow for drawPosText in hwui renderer.\n\nThis patch adds support for drop shadows (setShadowLayer) for\ndrawPosText in the hwui renderer. In and of itself, it\u0027s not very\nimportant, but it\u0027s on the critical path for correct mark positioning,\ntracked as bug 5443796.\n\nThe change itself is fairly straightforward - it basically just adds an\nextra \"positions\" argument to all draw and measure methods on the code\npath for drawing drop shadowed text, as well as to the cache key for\ncached shadow textures.\n\nChange-Id: Ic1cb63299ba61ccbef31779459ecb82aa4a5e672\n"
    },
    {
      "commit": "8dcfd5e836341b4a803b04d104a930bb312182d3",
      "tree": "cd2b75a4431f7ecfd869e007c5c15031e74298ed",
      "parents": [
        "0aa87bbfc41e8b5f52de701ac17b4e66a7a7b609"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 20 11:36:03 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 20 11:47:57 2012 -0700"
      },
      "message": "Clamp gradient textures to max GL texture size\n\nChange-Id: I8ce4e50988f5194fe5ce4bde7945ec01673af3cd\n"
    },
    {
      "commit": "0aa87bbfc41e8b5f52de701ac17b4e66a7a7b609",
      "tree": "f50322171f390068559517c3fc12d3c2909a67c1",
      "parents": [
        "3a136fc0e8eefc4fbff679414cbe003368a4f298"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 20 11:14:32 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 20 11:14:32 2012 -0700"
      },
      "message": "Fix crash with new LookupGammaFontRenderer\nBug #6853934\n\nChange-Id: I15e6ca73bfe00eff1a37c4b9d2f7f709ee018eb6\n"
    },
    {
      "commit": "eb61cd8296ed7e3f3aef5bd430d846aa54d5d7e2",
      "tree": "baf241a0b6912a8304843a542dfadf4b869474c1",
      "parents": [
        "63553478130f78d44c8fbeaebc610e19925544a5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 20:26:02 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 20:39:45 2012 -0700"
      },
      "message": "Optimize gradient textures\n\nCompute the size of the backing textures based on the maximum possible\nnumber of shades in the gradient.\n\nChange-Id: I2d7f20477d31b81e9735f2c1d83ebdd0dbcbe340\n"
    },
    {
      "commit": "63553478130f78d44c8fbeaebc610e19925544a5",
      "tree": "b73f59284d74901222a6b11095f9bd0dd0c2d370",
      "parents": [
        "8e025de5fb3ab1c099541e3a387123170bf9d1a9"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 20:04:14 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 20:04:14 2012 -0700"
      },
      "message": "Remove vendor specific precision qualifier\n\nChange-Id: I0a56ca7a5a399ec94993d3cea0c4aff6c0f86e39\n"
    },
    {
      "commit": "8e025de5fb3ab1c099541e3a387123170bf9d1a9",
      "tree": "f3d2ec5c2856535302a886108c878b207ace8bfd",
      "parents": [
        "04299385c681140239b0dc31d9780d087d2b4d7c"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 17:44:07 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 19:12:11 2012 -0700"
      },
      "message": "Note to self\n\nChange-Id: Ic5699bdbf880ad68748c827bb5b4976b12d4d413\n"
    },
    {
      "commit": "04299385c681140239b0dc31d9780d087d2b4d7c",
      "tree": "99e4ac5e64f2f02f525433853c5bb2d5395d2403",
      "parents": [
        "dfab50d8b97a90dca279b119ebe439f595616ffa"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 17:15:41 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 17:15:41 2012 -0700"
      },
      "message": "Clip lines, AA rects and points correctly\n\nChange-Id: I900dd986f397b66f133e6021aa4c2539e7abc2b9\n"
    },
    {
      "commit": "dfab50d8b97a90dca279b119ebe439f595616ffa",
      "tree": "378565e2719064de008f9e249630abd023fca1b8",
      "parents": [
        "2e6f5ca77bc65e3fcc1857088ef6d16201b928ad"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 17:06:37 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 17:06:37 2012 -0700"
      },
      "message": "Tweak text gamma correction\n\nChange-Id: Icd3326e6a054d6020c3ed61c8459394bc87401dd\n"
    },
    {
      "commit": "6e25e38e43f9e7f71397dfab7ed32c81c7bf7d46",
      "tree": "0bca4ce1b09dee6f3bfeb941ca324b4ca91a1eff",
      "parents": [
        "accf721ebdf4d3da53e8ae09572650775bfe10f8"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 15:50:29 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 18 16:28:44 2012 -0700"
      },
      "message": "Add a new method for text gamma correction\n\nTo select the gamma correction method, adb shell setprop hwui.text_gamma_correction\nwith one of the following values:\n\nlookup3\nlookup\nshader3\nshader\n\nSee Properties.h for more information about these different methods.\nYou can also control gamma correction using the following properties:\n\nhwui.text_gamma\nhwui.text_gamma.black_threshold\nhwui.text_gamma.white_threshold\n\nChange-Id: I47970b804d2c590c37d3da5008db094241579e25\n"
    },
    {
      "commit": "95c21d0546e36ade3e0601394f5b625541836545",
      "tree": "87d736063e8b6e9a3b175a243154e9ce200df72f",
      "parents": [
        "8a4ac610e1aaf04931ac1af54b146a7fc8e66114"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 17 17:46:03 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 17 17:48:04 2012 -0700"
      },
      "message": "Correctly pre-clip paths when recording display lists\n\nExternal bug: http://code.google.com/p/android/issues/detail?id\u003d34946\n\nDisplayListRenderer::drawPath was not invoking quickReject() properly,\npassing x,y,width,height instead of left,top,right,bottom. A path\ncould thus get rejected when it should be drawn instead.\n\nWhile working on this change I found a similar issue with another\ndrawing command, drawBitmapData().\n\nChange-Id: I56484e8c101768cde6a78625290872f7849dd5ee\n"
    },
    {
      "commit": "8a4ac610e1aaf04931ac1af54b146a7fc8e66114",
      "tree": "72a29e07d41dbf1e85966ec70acba688a93ec90c",
      "parents": [
        "41a48e4a9984eff92705a0c52104b0abd365521a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 17 17:32:48 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 17 17:32:48 2012 -0700"
      },
      "message": "Don\u0027t clear the dirty clip flag if it\u0027s not applied\nBug #6833979\n\nChange-Id: I0ea78b7f31a557a335de10d910d03b0520029080\n"
    },
    {
      "commit": "4121063313ac0d6f69f6253cac821d0c1c122086",
      "tree": "b076706786610f6c87c275355b8853289cbfd0f7",
      "parents": [
        "157bd5749f40b0330fccf3ef159d922742103ef2"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 16 17:04:24 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 16 17:04:24 2012 -0700"
      },
      "message": "Add shader-based text gamma correction\n\nTo enable it, the system property ro.hwui.text_gamma_shader must be\nset to true. For testing, DEBUG_FONT_RENDERER_FORCE_SHADER_GAMMA\ncan be set to 1 in libhwui/Debug.h.\n\nChange-Id: If345c6b71b67ecf1ef2e8847b71f30f3ef251a27\n"
    },
    {
      "commit": "157bd5749f40b0330fccf3ef159d922742103ef2",
      "tree": "9876c3d6bb52cc90ae06e40651b928b83147b322",
      "parents": [
        "be6f9dc1e71b425b7ac1c40c0a2c72d03eb9fbee"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 16 15:17:38 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 16 15:17:38 2012 -0700"
      },
      "message": "Add makefile flags for perf\n\nChange-Id: Ibcb6e1c883551273c3392cdaa40cd0b71a3bfa70\n"
    },
    {
      "commit": "be6f9dc1e71b425b7ac1c40c0a2c72d03eb9fbee",
      "tree": "f921cb8f62118e8943d3e49ff34deb3334bf4fcf",
      "parents": [
        "ef863701ae20f985439abacd84dceac130804cbc"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 16 12:41:17 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 16 12:41:17 2012 -0700"
      },
      "message": "Don\u0027t copy paints for 9patches\n\nChange-Id: I863100a0dc53fec1a3a1b2acbdeb76e6049ffe58\n"
    },
    {
      "commit": "b1d0a4ed21168fefcb82232c8f22cb95d60acb85",
      "tree": "bb7cf461df68f47b83f1e302610504b534284a38",
      "parents": [
        "dd0d0ba654cea3051e44ba9ae20ac4b269e123c0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 13 18:25:35 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 13 18:25:35 2012 -0700"
      },
      "message": "Refactor GammaFontRenderer\n\nThis change is the first step to a shader-based text antialias\ngamma correction.\n\nChange-Id: I9eb02d4c56cb95d05219f712290c865b46141954\n"
    },
    {
      "commit": "c9cf9e5459c05f05b29ec81b0e83e154816f7595",
      "tree": "54e271e1a95109f9e6ce7c88f1edd63b3248dff9",
      "parents": [
        "bb033ea3620a2c30f85a91986aa09a37960c8366",
        "586cae3ac69c0c667fbf8a954edbd399f620a717"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 13 15:31:30 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 13 15:31:30 2012 -0700"
      },
      "message": "Merge \"Improve rendering speed by disabling scissor tests\""
    },
    {
      "commit": "586cae3ac69c0c667fbf8a954edbd399f620a717",
      "tree": "400d845a02c1ff3e36db59835072bf23efa789e7",
      "parents": [
        "9c0b188e4231bcb967234f3646c178d22d8a9f50"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 13 15:28:31 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 13 15:28:31 2012 -0700"
      },
      "message": "Improve rendering speed by disabling scissor tests\n\nThis change improves execution of display lists, particularly on\ntiled renderers. The goal is to disable the scissor test as\noften as possible. Drawing commands are rarely clipped by View\nbounds so most of them can be drawn without doing a scissor test.\n\nThe speed improvements scale with the number of views and drawing\ncommands.\n\nChange-Id: Ibd9b5e051a3e4300562463805acc4fd744ba6266\n"
    },
    {
      "commit": "489041dd4192e594f2180ea7bff705894ab4031d",
      "tree": "a049cbbf0db529aff9476ce5073f6a69793d83cc",
      "parents": [
        "899274ca3921df41796fecd7674cadceef783593",
        "9c0b188e4231bcb967234f3646c178d22d8a9f50"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 13 12:21:32 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 13 12:21:32 2012 -0700"
      },
      "message": "Merge \"Text shadow alpha handling incorrect\""
    },
    {
      "commit": "9c0b188e4231bcb967234f3646c178d22d8a9f50",
      "tree": "97da5988fb8cbcdda4242e2a900d7cd8d4a2abe0",
      "parents": [
        "f877308f77f7c6f3edd91618a092207dd3be9077"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 13 12:13:07 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jul 13 12:13:07 2012 -0700"
      },
      "message": "Text shadow alpha handling incorrect\n\nExternal bug: http://code.google.com/p/android/issues/detail?id\u003d34879\n\nThis CL also fixes a bug where a View\u0027s alpha would be applied twice.\n\nChange-Id: I13a1546228f44d4c169259414b6fa103a6e4a0fa\n"
    },
    {
      "commit": "401b1f85746ab7005907747a59534def967d825b",
      "tree": "50998a8004375af416e259cc221d1d5c59140160",
      "parents": [
        "b8405c78fc609d8fb63d9bc7544b23918489ed47",
        "f877308f77f7c6f3edd91618a092207dd3be9077"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 12 18:02:37 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 12 18:02:37 2012 -0700"
      },
      "message": "Merge \"Remove obsolete optimization\""
    },
    {
      "commit": "f877308f77f7c6f3edd91618a092207dd3be9077",
      "tree": "57954a9b36692a12d0c881664c3774d378828a5b",
      "parents": [
        "7d3082a3f09e32e7c42b2896e90902157039b10e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 12 18:01:00 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jul 12 18:01:00 2012 -0700"
      },
      "message": "Remove obsolete optimization\n\nChange-Id: I2d43c009c62a7f4a4a2e0a6303bdfa692c4b8c8c\n"
    },
    {
      "commit": "f0af1d5cb255f136d2fff773be7518ffd7ae3b93",
      "tree": "3759f544ac8bb80b5eb8cd8c40265cf536ca7f52",
      "parents": [
        "7d3082a3f09e32e7c42b2896e90902157039b10e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 11 18:31:21 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 11 18:31:21 2012 -0700"
      },
      "message": "Remove unused View.flushLayer() API\n\nChange-Id: I5d4c7388afb5265964ab6b769cc0abfee9745c84\n"
    },
    {
      "commit": "16c88085255c71a1a8fc034129aa2dcc61e1ddd0",
      "tree": "d582a3cff3847c2befee35dccd94d2b1e02b018c",
      "parents": [
        "527ee91b60426b5a344e9905c7f9a14d6d26219e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 11 16:03:47 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 11 16:11:56 2012 -0700"
      },
      "message": "Textured text calls could be invisible\nBug #6597730\n\nText would sometimes not appear when rendered with textured content\n(BitmapShader, LinearGradientShader, etc.) This was due to a misuse\nof OpenGL texture unit in FontRenderer. Textured text normally uses\ntwo texture units:\n- texture unit 0 for the font cache\n- texture unit 1 for the textured content (gradient, etc.)\n\nRecent changes to the font renderer allow it to bind new textures\nwhile processing the text\u0027s geometry (this happens when caches get\nfull or when switching font size for instance.) The bindings were\ndone without ensuring the texture unit was the correct one\n(unit 0), thus replacing the content of another texture unit\n(unit 1).\n\nThis lead to text being drawn using the font cache itself as the\ncontent texture, making the text invisible.\n\nChange-Id: I392b4c884f09223305f6cbc6253e2ef9a98944c9\n"
    },
    {
      "commit": "44b2fe3fc114ee5f7273c6b0fee2cc999bf244a2",
      "tree": "8d54bda8c5b7021be5d923beb641a9efb22dcf30",
      "parents": [
        "43fa4c5261a732decae3bbfaea2a00f8bb9b709c"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Jun 06 19:03:58 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Jun 07 06:25:04 2012 -0700"
      },
      "message": "Track canvas clearing for swap buffers logic.\n\nA previous fix made it necessary for a frame to render something to GL\nin order to cause a call to eglSwapBuffers(). Besides the calls being\ntracked as part of issuing a DisplayList, there is also a potential call\nto clear the canvas (via glClear()) on non-opaque surfaces. This call is also\ngood to track, since a surface that gets cleared without any other drawing operations\nis worth flipping to the screen (to erase old contents on that surface).\n\nThis fix tracks the status of the pre-draw operations to find out whether\nglClear() was called and then sets the drawing status appropriately.\n\nIssue #6606422 QuickContact dismissal is janky again (Tracking)\n\nChange-Id: I5fcaccfdc9293dd46b83f2fc279730a5d2740ebf\n"
    },
    {
      "commit": "932b7f6765968bd526c03512f3805fbc3924dc29",
      "tree": "bc2597383e0c8973b78627690856f883686526a6",
      "parents": [
        "35b691f056159e938a256420f6d3dec1ebf8bfd9"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jun 06 13:59:33 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jun 06 14:02:55 2012 -0700"
      },
      "message": "Revert \"Add more temporary logging for investigating detachFunctor\"\n\nbug:6608646\n\nThis reverts commit 8857b2f76abad1e4ec742dfd85d0c997880be376\n\nChange-Id: I1563b5974c52b84201ae448298f804eb0dcc235d\n"
    },
    {
      "commit": "8857b2f76abad1e4ec742dfd85d0c997880be376",
      "tree": "adb739712e251a296933fb5eeae700f823b0e072",
      "parents": [
        "0c01222ff6507c6e3eaeec7070a510201165d6f3"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jun 05 10:53:20 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jun 05 11:24:46 2012 -0700"
      },
      "message": "Add more temporary logging for investigating detachFunctor\n\nbug:6596807\nChange-Id: Ic9e34e323b12a887f2e8df0773a6155627b6a64f\n"
    },
    {
      "commit": "486590963e2207d68eebd6944fec70d50d41116a",
      "tree": "7a176c6cda01c64980c5c27f9bf495b64d08c84f",
      "parents": [
        "20c15a4271ea3a7fb2210430bfc53f611603cf76"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu May 31 15:21:51 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu May 31 17:22:27 2012 -0700"
      },
      "message": "Skip eglSwapBuffers() call when we do not draw to GL\n\nThe fix is to track when we issue GL drawing commands, and to skip the\ncall to eglSwapBuffers() when a DisplayList does not result in\nany actual rendering calls to GL.\n\nIssue #6364143 QuickMuni list items and buttons flicker instead of fade\n\nChange-Id: I60a02c61a58c32d92481a1e814b4c8a49c6a37a3\n"
    },
    {
      "commit": "3534e13486a0081b1229e698f13bd3a37efa3fb0",
      "tree": "c2efe65a2e556c6559745e41e7379e8d9435e805",
      "parents": [
        "2d243bc62a899f7af77886a2a2a82872d63226bb",
        "9e08012869f77f212186a5d5856831a85fb73d40"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 22 17:20:07 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 22 17:20:07 2012 -0700"
      },
      "message": "Merge \"Avoid crash if onDetachedFromWindow called after destroy\" into jb-dev"
    },
    {
      "commit": "9e08012869f77f212186a5d5856831a85fb73d40",
      "tree": "716edb488c20ac96334f2d4e5f8b85f1f4438784",
      "parents": [
        "f8dafa14e058cdc2f408b59be7911abaceb73c47"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 22 16:00:19 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 22 16:52:00 2012 -0700"
      },
      "message": "Avoid crash if onDetachedFromWindow called after destroy\n\nThis also removes the temporary logging from commit\nf8dafa14e058cdc2f408b59be7911abaceb73c47.\n\nbug:6535911\nChange-Id: Icf1d0438b349a0e92e7d9cefed57a252eed2b9b0\n"
    },
    {
      "commit": "7a9328a3118725389564fe2a9b926837fa3d58a9",
      "tree": "d58f465a269c10e94a4a30f6e2929b8980687c27",
      "parents": [
        "e5a4a3dc1648844f06d29efd42c9306c3cdf177e",
        "f8dafa14e058cdc2f408b59be7911abaceb73c47"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 22 14:39:13 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 22 14:39:13 2012 -0700"
      },
      "message": "Merge \"Add temporary functor lifetime logging\" into jb-dev"
    },
    {
      "commit": "e5a4a3dc1648844f06d29efd42c9306c3cdf177e",
      "tree": "bf396dc3918ac55847b1929599cbd3c632e24b0f",
      "parents": [
        "638e012d2b5c2b075b48f86d08daec9b36319cfc",
        "ddf74373616c89e0880a28a2185fd7ce3db91de6"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue May 22 14:28:58 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 22 14:28:58 2012 -0700"
      },
      "message": "Merge \"Ensure we always set the proper blending mode Bug #6527305\" into jb-dev"
    },
    {
      "commit": "f8dafa14e058cdc2f408b59be7911abaceb73c47",
      "tree": "a3de994c2147cc21885a021199a24d82060527bb",
      "parents": [
        "c8538ade8df2c2f013f8b93094912057ee1cc417"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 22 13:29:40 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 22 14:26:15 2012 -0700"
      },
      "message": "Add temporary functor lifetime logging\n\nbug:6535911\n\nChange-Id: Ida5cc1def7fe1fc314317bbc5df50e1465753deb\n"
    },
    {
      "commit": "ddf74373616c89e0880a28a2185fd7ce3db91de6",
      "tree": "dab9856ef8a857b0b107c2f471b089605a6c73b1",
      "parents": [
        "51f7c6b3620549429cd6c62e38bace43085e04fb"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue May 22 14:07:07 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue May 22 14:08:10 2012 -0700"
      },
      "message": "Ensure we always set the proper blending mode\nBug #6527305\n\nAt the beginning of a frame, always set the blending mode that we\nthink GL is using just in case it was modified by another entity\n(for instance a WebView functor.)\n\nChange-Id: I0e1d0abee8a2abb2b8e7622aed28346e89562c06\n"
    },
    {
      "commit": "c8538ade8df2c2f013f8b93094912057ee1cc417",
      "tree": "f938473c2ecd51d8cfdede8c2ae3404b37b60767",
      "parents": [
        "0eaeb69d1c4849da8ab1df70b84e90837193df67"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 22 11:54:06 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 22 11:54:06 2012 -0700"
      },
      "message": "Don\u0027t clear the functor at every draw\n\ninstead clear functors at invoke time, and let them detach themselves as needed.\n\nbug:6511995\nChange-Id: I9115fcadffb27eb850c1d1773c098d3d2e22788b\n"
    },
    {
      "commit": "f26c8be01bb218619e073a209c9d57fe9d26c517",
      "tree": "6b00b9fb738143b19c3e3ec2496becc0e5309722",
      "parents": [
        "7e22a223afa63c591ef56cb325163e5e82046822"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri May 18 10:58:45 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri May 18 10:58:45 2012 -0700"
      },
      "message": "Sanitize display list properties\n\nThe comparisons used in the various properties setters could fail badly\nin some specific conditions. The scale properties in particular did not\nuse the same comparisons.\n\nThis change also clamps alpha to the 0..1 range which avoids overflow\nissues with lowp registers in GLSL computations.\n\nChange-Id: I3e73b584e907a14e2c33d0865ca0d2d4d5bff31d\n"
    },
    {
      "commit": "49c5fc0b9e850497233e189ff9dcc71a78ebe6e7",
      "tree": "7e67e74c97f750a1f04855071f54c357d0857a5b",
      "parents": [
        "66757217a6d8e6a156d15be55bf77940e2e6194b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue May 15 11:10:01 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue May 15 11:15:24 2012 -0700"
      },
      "message": "Avoid unnecessary copy when invoking drawBitmap(int[])\nBug #6483390\n\nChange-Id: I4d2d725ef50c9401b4bd998b6160128102b40745\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": "99a6ddd4cd8762654a575eb4ac3d0e5431d919b8",
      "tree": "998293d1bb9efd6b3e0fe2dcb6c994a377c98d8b",
      "parents": [
        "9d9758ae30a59dcf594e0d26ba5d4ee153a3e44a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 14 15:32:18 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 14 15:32:18 2012 -0700"
      },
      "message": "Forget the name of a texture after freeing\nBug #6408362\n\nFontRenderer allocates large font textures when more room is needed\nto store all the glyphs used by an application. Thse large textures\nare the first to be freed when memory needs to be reclaimed by the\nsystem. When freeing a texture, the renderer would however not set\nthe texture name to an invalid name, leading future allocations to\nbe performed on the same texture name. That name could have by then\nbe recycled by the driver and returned by a call to glGenTexture\nand used to create an entirely different texture. This would cause\nthe font renderer to point to the wrong texture, thus leading to\nthe \"corruptions.\"\n\nChange-Id: I8a1e80e5b79e8f21d1baf5320c090df4f2066cd4\n"
    },
    {
      "commit": "9d9758ae30a59dcf594e0d26ba5d4ee153a3e44a",
      "tree": "9e9699b094cb5bc74c9cd1b4249d2b35c42114bd",
      "parents": [
        "ae91c4cbc79ea910753be65e2f1d7899abcb4da2"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 14 15:19:58 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 14 15:19:58 2012 -0700"
      },
      "message": "Fix two memory leaks\nBug #6408362\n\nChange-Id: I58543938e7b64d83504e11e97b0dd21ef8ebf3b6\n"
    },
    {
      "commit": "ae91c4cbc79ea910753be65e2f1d7899abcb4da2",
      "tree": "9391544d7731f84a661da570357be4f6c99cbf8d",
      "parents": [
        "2411c3361eb2c15b09a8bfadf5c7c4a3de092ea0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 14 14:00:27 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon May 14 14:06:02 2012 -0700"
      },
      "message": "Properly pre-cache latin glyphs\nBug #6408362\n\nChange-Id: Ie11644c5a9e2d87d3b851b7e619e5f04b60a7e02\n"
    },
    {
      "commit": "dfa1046ecab165eb0daf5caa8475e993350f4a2b",
      "tree": "90cf67b49d82feaad76749749c38c59239bc2b08",
      "parents": [
        "2d97a70ff8bbac5ea807003d65b64e3b255e82bc"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sat May 12 16:18:58 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Sat May 12 16:22:35 2012 -0700"
      },
      "message": "Add call sites for OpenGL\u0027s debug label extension\n\nChange-Id: I9c689127e8166cbef92c935f8aa07217ab806dda\n"
    },
    {
      "commit": "aa9972943cab627db9b10e5c9c4bb80f99f8a4bd",
      "tree": "66e77c9e649a8c1eabb4c907c2178e1106d9f200",
      "parents": [
        "59f3f5853cd05103b5a83f5ddbe584a5270a9c6b",
        "12d434a9be03214e9c673580a6f55128eec9b3f9"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 08 13:35:09 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 08 13:35:09 2012 -0700"
      },
      "message": "Merge \"Revert \"Add temporary functor lifetime logging\"\" into jb-dev"
    },
    {
      "commit": "12d434a9be03214e9c673580a6f55128eec9b3f9",
      "tree": "3020622d2ae2b33fd5c48bf43ae395d471ab8dca",
      "parents": [
        "2fe99801e81bb7c0ff846b536cbb7a12707410ed"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 08 13:07:13 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 08 13:07:13 2012 -0700"
      },
      "message": "Revert \"Add temporary functor lifetime logging\"\n\nbug:6445573\n\nThis reverts commit 2fe99801e81bb7c0ff846b536cbb7a12707410ed"
    },
    {
      "commit": "4bbcae7eb80704d919d8115d523196798e208439",
      "tree": "c6a50af0b94836f8adec0acbe058003e8922c51c",
      "parents": [
        "d8efe42496806b483bbacea28d2456e8b2eac4fb",
        "d3efd6920e64d0207a0655640297d87d4937ee27"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon May 07 13:20:00 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 07 13:20:00 2012 -0700"
      },
      "message": "Merge \"Fix issue where scale-animating text would jump temporarily a few pixels\" into jb-dev"
    },
    {
      "commit": "d3efd6920e64d0207a0655640297d87d4937ee27",
      "tree": "22054ead2157be4ed8db2147a9507e9f94e0e86c",
      "parents": [
        "73b61d67109c9a4267b93c238bb9cbab7b1304c4"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon May 07 12:18:19 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon May 07 12:18:19 2012 -0700"
      },
      "message": "Fix issue where scale-animating text would jump temporarily a few pixels\n\nSome logic in the native matrix code would determine that a matrix was\n\u0027pureTranslate\u0027 based on the scale values of a matrix being close-enough to 1,\nwhich was within a very small epsilon. This works in general, because screen space\ncoordinates make that epsilon value irrelevant, so close-enough really is close-enough.\n\nHowever, TextView, when centering text, works in a coordinate system that is quite\nhuge, with left/right values about 500,000. These numbers multiplied times that small\nepsilon value would give a result that was significant, and would cause a miscalculation\nof up to 4-5 pixels, causing the snap that we\u0027d see for a couple of frames as the\nscale got \"close enough\" to 1.\n\nThe fix is to remove the optimization of \"close enough\". What we really need the matrix to\ndo is to identify itself as being translate-only when no scale as been set (which is the\ndefault). For the purposes of that check, it is good enough to simply check the values against\n1 directly. Similarly, the bounds-check logic needs to check against 0 and 1 directly.\n\nIssue #6452687: Glitch when changing scale of a view containing text\n\nChange-Id: I167fb45d02201fb879deea0e5a7ca95e38128e17\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": "2fe99801e81bb7c0ff846b536cbb7a12707410ed",
      "tree": "3cdd741a9ce1897bbd08ee8f4a81e57cd5271cd0",
      "parents": [
        "e849230f444653e692024b4321044cb9f6188919"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed May 02 13:34:22 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed May 02 16:37:24 2012 -0700"
      },
      "message": "Add temporary functor lifetime logging\n\nbug:6405861\n\nNote: revert once the above bug is verified fixed\n\nChange-Id: Iae04ec6ffa73a2711f96e128d60011bcb5864b5c\n"
    },
    {
      "commit": "6f9ad204cc529babeb3aa7c9a57cf00ed7188471",
      "tree": "ebd4cc3f8f598ec8da1d778103fedf05dc3036d3",
      "parents": [
        "427db9b3d10d5c203d0351e683c3cddfd270250c"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue May 01 10:05:13 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue May 01 10:05:13 2012 -0700"
      },
      "message": "Fix launcher invisibility bug\n\nThere was a bug in the DisplayList code for layers where we would\nset the alpha value for a layer only if the alpha were non-1. This works\nmost of the time (since the value is usually 1 and doesn\u0027t need to\nbe set at all, and if the value is non-1, it is set correctly). But when\nthe value has been set to a non-1 value, setting alpha back to 1 cannot happen\ndue to this logic. This caused launcher to have some invisible pages when\nreturning to Home because those pages previously had an alpha value of 0, and\nsetting the alpha to 1 had no effect due to this DisplayList code.\n\nThe fix is to simply remove the check for non-1 values; we should\nalways set the alpha value of layers to handle all cases.\n\nIssue #6413892 alpha value is messed up after AlphaAnimation\n\nChange-Id: Ia51acb2eaaf0609ea7189998ed449bdd9ea7e05f\n"
    },
    {
      "commit": "665a376d245d7bbfc43e3cfa651afc7448604afa",
      "tree": "a838497443ccd7ea52d429f55a9305debdb57a1e",
      "parents": [
        "d51f90ff7e9c5afa3feb4e2c2a3956861c2fd95e",
        "fdd6fc1beb5076a630c7066b8b1731995636c09f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Apr 27 15:20:04 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 27 15:20:04 2012 -0700"
      },
      "message": "Merge \"Work-around for a Skia rasterization bug Bug #6411457\" into jb-dev"
    },
    {
      "commit": "fdd6fc1beb5076a630c7066b8b1731995636c09f",
      "tree": "8df0ddc48fda9ffb9015e3fb190e68ca806646d4",
      "parents": [
        "a44a63ac5c29b2cc57df95ec495def8cdddd9c6f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Apr 27 11:47:13 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Apr 27 11:47:13 2012 -0700"
      },
      "message": "Work-around for a Skia rasterization bug\nBug #6411457\n\nSkia does not generates the bottom right pixel of a rect when\ndrawing a rect as an SkPath into an alpha8 bitmap.\n\nChange-Id: Ifb5286ae67745c9e44ee387b6d6ad607a9a2e6ce\n"
    },
    {
      "commit": "8bd12ea8001f72f4450e318e43c50dbc46b4869c",
      "tree": "9b4edec9a02b98392cad6871b579139bb62cc92a",
      "parents": [
        "87b16c803932e8d54889cdb60117034fdc2ef75c",
        "a44a63ac5c29b2cc57df95ec495def8cdddd9c6f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Apr 26 14:06:41 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 26 14:06:41 2012 -0700"
      },
      "message": "Merge \"Decode common GL error codes when logging frame error status\" into jb-dev"
    },
    {
      "commit": "a44a63ac5c29b2cc57df95ec495def8cdddd9c6f",
      "tree": "476fde78dde6caa2ab5053d2ba2e2c6b344404eb",
      "parents": [
        "8f8d9fb52c65e50a32babf67ef764e173d2a5473"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Apr 26 14:05:02 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Apr 26 14:05:02 2012 -0700"
      },
      "message": "Decode common GL error codes when logging frame error status\n\nChange-Id: I38b333eea53aef20340ce48dfcb0dd30a223f7a8\n"
    },
    {
      "commit": "a75fbc3c76dfe6a1c678b66f83cef878e3f3cdf4",
      "tree": "adb91464ca79fb962644d559a48f482c5ee2d87d",
      "parents": [
        "85973212e9a63590118c2ad8937798bc1aa62687",
        "c2c9543c135ffc4e18c7db0e817112ac03e3e97a"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Apr 26 12:27:56 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 26 12:27:56 2012 -0700"
      },
      "message": "Merge \"On new content, attach functor directly\" into jb-dev"
    },
    {
      "commit": "c189ef53220059acf2adedc92ac4ac7e6a993e6b",
      "tree": "faf8d04864c0276bf4d5166cc72eb0b5fe77e68b",
      "parents": [
        "1b8f499a14a4340d3422d95c7f6fdc8c0c72b3a4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Apr 25 20:02:53 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Apr 25 20:02:53 2012 -0700"
      },
      "message": "Ensure we start every frame in the proper GL state\nBug #6345013, #6314960\n\nChange-Id: I6985f7f233eb6a5f9223e9f4be3f323154b5dbf0\n"
    },
    {
      "commit": "c2c9543c135ffc4e18c7db0e817112ac03e3e97a",
      "tree": "59bab91aaec14c1682d7f8500d552c21f1326fe9",
      "parents": [
        "7725180c646d1976a2a2097735862a75ec47c544"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Apr 25 15:13:52 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Apr 25 15:42:59 2012 -0700"
      },
      "message": "On new content, attach functor directly\n\nbug:6323847\n\ndepends on external/webkit change: https://android-git.corp.google.com/g/#/c/184314/\n\nChange-Id: Ibdf997f3ee4f5c5c1ea5a320556813f175fea93f\n"
    },
    {
      "commit": "3d745c03ace18ee59c539e1b7f1df13f22beb57d",
      "tree": "33caa47aa08df523b6f34ec38a25845418c20f10",
      "parents": [
        "ba6be8a62dcdb3ffd210cd36b9af4e3a658eac47"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Apr 23 20:36:17 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Apr 23 20:36:17 2012 -0700"
      },
      "message": "Fix the build before the bot yells at me.\n\nChange-Id: Ice7fe02b684ad662262aae3cac7a48a835ebcad5\n"
    },
    {
      "commit": "ba6be8a62dcdb3ffd210cd36b9af4e3a658eac47",
      "tree": "04f9b4d5589333970c91e51af6280a5859b78460",
      "parents": [
        "88fffb7a34313d5e94b3974d444d07bd6a4879a4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Apr 23 18:22:09 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Apr 23 20:29:31 2012 -0700"
      },
      "message": "Prevent WebView from crashing when detached from the window\nBug #6365056\n\nWebView enqueues a functor in the hardware renderer to handle\nanimations and this functor is called at a later time by the\nhardware renderer. However, the functor was not removed from\nthe queue when WebView was removed from the window. This could\ncause the hardware renderer to attempt to execute an invalid\nfunctor and lead to a crash.\n\nChange-Id: I9d38e80f3fdc5e29d4d0cdfa1e893c251a954508\n"
    },
    {
      "commit": "1271e2cc80b01d577e9db339459ef0222bb9320d",
      "tree": "d308bb451af2ecf76715ec0389de3e95b60e6d5a",
      "parents": [
        "003952ba33f711963ad26588b2aca293deb8d50a"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Apr 20 09:54:27 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Apr 23 11:13:17 2012 -0700"
      },
      "message": "Remove USE_DISPLAY_LIST_PROPERTIES flag\n\nThis flag was still hanging around pending any need to disable\nDisplayList properties. But things seem stable, so it\u0027s time to clean up\nand simplify the code.\n\nAt the same time, I reduced redundance in DisplayList dimensions. We\nused to call drawDisplayList() with width/height parameters that were\nused to do a clip reject. This is redundant with the DisplayList properties\nthat set the bounds of the DisplayList; the left/right and top/bottom properties\nrepresent the same width/height properties formerly used in drawDisplayList().\nThe new approach is to not pass dimensions to drawDisplayList(), but to\ninstead pull those dimensions directly from the DisplayList when needed.\n\nChange-Id: I8871beff03b1d4be95f7c6e079c31a71d31e0c56\n"
    },
    {
      "commit": "a23eed808a1ae4ec0d818c0a9238385e797fd056",
      "tree": "5255c66fa7fe89763e19e0c2b0476c6b3a52a2fe",
      "parents": [
        "b187d52f8adaad068997595118f32cb02d7a9013"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Apr 12 15:19:04 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Apr 12 15:20:16 2012 -0700"
      },
      "message": "Fix layer blending bug\n\nCached layers were sometimes retaining an obsolete blending\nvalue, causing artifacts where translucent objects were disappearing\ncompletely. Also, added extra tracing info for DisplayLists.\n\nIssue #6303668 Flickering views during SwipeHelper drag\n\nChange-Id: I66ce158652c4a3ed316040585b40b1744e1fad0c\n"
    },
    {
      "commit": "7b6a75872bd2df96a23453d31c2e2e7fcc373554",
      "tree": "4ef0ab122aa11dc7b039693cfce420b8be063996",
      "parents": [
        "d1f3de40ba50f0a3c4545139ea57242612f52971"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Apr 11 14:32:02 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Wed Apr 11 14:32:02 2012 -0700"
      },
      "message": "Pass width/height parameters to webview\n\nWhen webview draws into an fbo layer, it needs to know the\nsize of that surface to create the rendering transform appropriately.\nThis change copies in the current viewport size to the structure that\nis passed to the webview.\n\nChange-Id: I7160b0836d00834134c799c95a439cdc045e2035\n"
    },
    {
      "commit": "65924a3e56c2e7ac863f8e25e9f9a58b9db7d513",
      "tree": "b7e3da17b6ebfb31eb9bb7e13adb8345e6f793bb",
      "parents": [
        "7c8fd157da36b68529b08b820051ce775f84a9bf"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Apr 05 17:52:11 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Apr 05 17:52:11 2012 -0700"
      },
      "message": "fix functor flag parsing, tweak process delay\n\nChange-Id: I0a679cc33f92ff6fd2e33db9ad58b52622def012\n"
    },
    {
      "commit": "fda531c9e4e49cfd962d3784b3501f6a1e64dc22",
      "tree": "87adda86eddc128b9b4ec4ea917cd37323a94c07",
      "parents": [
        "30bd284cca7540be3eba2e7874a2c69e051771ce",
        "7b63142d2f4bc32beacedcc761453b8aea1f3a86"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Apr 04 11:53:28 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 04 11:53:28 2012 -0700"
      },
      "message": "Merge \"Disable AA lines vertex attrib arrays after rendering\""
    },
    {
      "commit": "7b63142d2f4bc32beacedcc761453b8aea1f3a86",
      "tree": "97efda39b916945683bb98f954438cb86c8a01e5",
      "parents": [
        "2946445b560fde5e63df17f5a2db60c8349fe532"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Apr 04 11:38:54 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Apr 04 11:38:54 2012 -0700"
      },
      "message": "Disable AA lines vertex attrib arrays after rendering\n\nChange-Id: I2f035e9d87f4f97bc1e37355c84570fd58df0374\n"
    },
    {
      "commit": "8c8c2400923bd5b0ab1f52adc4f2232dbf690d91",
      "tree": "5c45fa37ab5c4a3666bf5fb15d9b3c108009ca05",
      "parents": [
        "af92c532e7e0fc076aa8fb55c43f8964dba16fcb",
        "e0aa84b7dc087e999e20055dcc04cb6a48d5bd62"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Apr 03 19:33:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 03 19:33:06 2012 -0700"
      },
      "message": "Merge \"Optimize FBOs composition\""
    },
    {
      "commit": "e0aa84b7dc087e999e20055dcc04cb6a48d5bd62",
      "tree": "1aebdbebe17e17239231c890710b5b1c9c0ac4ae",
      "parents": [
        "5c88fc744db977ef26887df9605beaa409394806"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Apr 03 19:30:26 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Apr 03 19:30:26 2012 -0700"
      },
      "message": "Optimize FBOs composition\n\nChange-Id: Ifc8eada8922509373c0e4c3b2ed75b6f08d098de\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": "e2eaf6997d429249904f842092b075f3da92c5be",
      "tree": "2187a2a450cdf80d9b1ea10eb53d7d15b09753e6",
      "parents": [
        "7eae9cb4e732934741c66f3c76a1c1f7d556af43",
        "5c88fc744db977ef26887df9605beaa409394806"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Apr 02 17:49:20 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 02 17:49:20 2012 -0700"
      },
      "message": "Merge \"Prevent crash when flushing the layers cache Bug #6258973\""
    },
    {
      "commit": "5c88fc744db977ef26887df9605beaa409394806",
      "tree": "3c782510909ace46a555514d9b08044289107406",
      "parents": [
        "6db53c34a7fe8fdc2a8775dc5a400776e2716d38"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Apr 02 17:43:05 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Apr 02 17:45:25 2012 -0700"
      },
      "message": "Prevent crash when flushing the layers cache\nBug #6258973\n\nWhen flushing the layer caches we would attempt to delete the FBOs\nassociate with layers in the cache. The FBO property was however not\nalways properly cleared when recycling layers.\n\nChange-Id: I7dedfe391d659a0849f1e1d84df17313b2c6e2b2\n"
    },
    {
      "commit": "b6a80077dca5a17f33350075485a534d7ed8fa2b",
      "tree": "2028588973227614603bb68a124fc58609001561",
      "parents": [
        "191310b7d367b491496de85dce5e286ebfdc4c73",
        "8f3b8e32993d190a26c70c839a63d8ce4c3b16d9"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Apr 02 17:07:21 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 02 17:07:21 2012 -0700"
      },
      "message": "Merge \"Allow fine-grained control over functors execution\""
    },
    {
      "commit": "8d56b0e1d24f7392314df4be6503af395a843696",
      "tree": "35778539d3be9284697f45d1b4962a46c0c57532",
      "parents": [
        "78e2c336de8984dd86410351efedab86ad617ee8"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Apr 02 16:34:48 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Apr 02 16:34:48 2012 -0700"
      },
      "message": "Enabling DisplayList properties\n\nAn earlier commit fixed problems with enabling DisplayList properties.\nThis CL actually enables the properties.\n\nChange-Id: I5c41d0c64e9241822af53eb367de0fed7d9608e0\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": "8f3b8e32993d190a26c70c839a63d8ce4c3b16d9",
      "tree": "8e49ffa8f5405f22b8bb12be9e5607ec6a0fc00a",
      "parents": [
        "e6c966caa3aff3099e6fb00caefa10387f57b9c3"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 27 16:33:45 2012 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Apr 02 15:15:07 2012 -0700"
      },
      "message": "Allow fine-grained control over functors execution\n\nAdds non-drawing execution mode\n\nChange-Id: I82f92cf1b9a3b9ff2ca6d7427c4e02b73e04e6bf\n"
    },
    {
      "commit": "76240dafe8654cc3b858241e76618e5b2db5451c",
      "tree": "940bdac8b8de930b1cd811ff96c590b894af6c6c",
      "parents": [
        "ee9da04edc5adb8fdcce489ecd09eb67fc2c295e"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Mar 29 09:42:34 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Mar 29 09:42:34 2012 -0700"
      },
      "message": "Disable DisplayList properties pending fixes for AlphaAnimation\n\nThe new DisplayList properties design has ordering conflicts with the\nway that alpha works with old animations (AlphaAnimation). This CL\ndisables DiksplayList properties while I\u0027m working on a fix and some\nmore thorough tests for old animations-vs-DL properties in general.\n\nChange-Id: I8f6893138f939171491c2ec3c889214ee55d17b7\n"
    },
    {
      "commit": "b85967b9af76e1e60f7a96603e2567a6449d2e04",
      "tree": "e1df4cdf8baa0315ee6296feb238d1722dcf7370",
      "parents": [
        "b3cbd0b4d827577b3b8ad34106779c67a48701dd"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Mar 26 14:37:51 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Mar 27 08:17:54 2012 -0700"
      },
      "message": "Re-enabling DisplayList properties\n\nSeveral issues came up after DisplayList properties were enabled,\nso they were disabled pending fixes. Those issues have been fixed, so\nDisplayList properties are once again being enabled by default. This\nCL both re-enables these properties (in View.java and DisplayListRenderer.h)\nand fixes the various issues that enabling them caused the first time around.\n\nRelated issues (all currently marked as Fixed, though that was simply because\nDL properties were disabled - this CL provides the real fixes now that\nDL properties are enabled by default):\nIssue #6198276 Text input broken\nIssue #6198472 Native crash at pc 00076428 in many different apps in JRM80\nIssue #6204173 Date/time picker isn\u0027t rendering all parts of UI\nIssue #6203941 All Apps overscroll effect is rendered weirdly/has flickering\nIssue #6200058 CAB rendering issue - not drawing items?\nIssue #6198578 Front camera shows black screen after taking picture.\nIssue #6232010 Layers not recreated when children change (DisplayList properties)\n\nChange-Id: I8b5f9ec342208ecb20d3e6a60d26cf7c6112ec8b\n"
    },
    {
      "commit": "6554943a1dd6854c0f4976900956e556767b49e1",
      "tree": "82d43bbb28af4feeb6c358077ac1083ca3598e7b",
      "parents": [
        "a9dd820184ee4d083bd9b2af735dcf50b78fc6cd"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 26 16:45:05 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 26 16:45:05 2012 -0700"
      },
      "message": "Use a status_t return type for GL functors\n\nWebView needs more fine-grained control over the behavior of the\nframework upon execution of the display lists. The new status_t\nallows WebView to requests its functor to be re-executed directly\nwithout causing a redraw of the entire hierarchy.\n\nChange-Id: I97a8141dc5c6eeb6805b6024cc1e76fce07d24cc\n"
    },
    {
      "commit": "a9dd820184ee4d083bd9b2af735dcf50b78fc6cd",
      "tree": "7ac017a6e046d16bd148a225b283532a3592c69e",
      "parents": [
        "d4577c0c29f8e38a34d1aeac59803b37769af790"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 26 14:52:00 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 26 14:52:00 2012 -0700"
      },
      "message": "Prevent random crashes on SGX architecture\nBug #6219894\n\nChange-Id: If77f29da03e557a50e53bae505e1c638a1dbe2cc\n"
    },
    {
      "commit": "ad13c81371cb0b7e49b4c33159a346ce08ac5d69",
      "tree": "8d47082b929d42c016acaf4ea2f86355dc52c13e",
      "parents": [
        "222dfc784e5c5b4eb6a4770b9f46fe96eecbd65d"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Mar 22 08:33:09 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Thu Mar 22 08:33:09 2012 -0700"
      },
      "message": "Disable DisplayList properties\n\nDisplayList properties are (again) disabled by default, via flags in\nView.java and DisplayListRenderer.h. There are various artifacts to\nchase down before enabling by default.\n\nIssue #6198472 Native crash at pc 00076428 in many different apps in JRM80\nIssue #6204173 Date/time picker isn\u0027t rendering all parts of UI\nIssue #6203941 All Apps overscroll effect is rendered weirdly/has flickering\nIssue #6200058 CAB rendering issue - not drawing items?\nIssue #6198578 Front camera shows black screen after taking picture.\n\nChange-Id: I045dc82ce1d85fedbae3bb88eb2a2dfb6891d41f\n"
    },
    {
      "commit": "b0317984d34da99b614597ad0a8b39268eacb783",
      "tree": "0f3fceea85382bd70af903866f8e2750ac168f31",
      "parents": [
        "e72cf7341a608402309ce894fc12d050cc7c0e14"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 21 11:52:52 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Mar 21 11:52:52 2012 -0700"
      },
      "message": "Plug memory leak.\nBug #6196903\n\nWhenever a memory flush happens, the GL renderer discards some or all of its\nfont caches. Each font cache holds an array of vertex indices that was\ninitially designed to have the same life cycle as the process. This changed\nwhen memory flushes were introduced but this array was never taken care of\nin the destructor.\n\nChange-Id: Ief124f609ea55b671c0a9b43637d9e013629ebaa\n"
    },
    {
      "commit": "bdd896c26453ffc56831b0cd167e8780068cee53",
      "tree": "2dae769a3c4628ebf814ccc103d553839182292b",
      "parents": [
        "80a6b33be276eb6c808fce13debb4bb7a489cdad"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Mar 19 13:40:49 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Mar 19 13:40:49 2012 -0700"
      },
      "message": "Enable DisplayList properties\n\nThis CL simply enables DisplayList property functionality. The code for\nthis feature is already there, but it\u0027s been disabled by default pending further\ntesting and analysis. This change sets these build-type flags to true\nso that all hw-accelerated apps will now use DisplayList properties by default.\n\nIn particular, this feature enables a fast-path for changes that affect the\nhandful of View properties involved in animations (alpha, translationX, etc.).\nSetting these properties now gets propagated to the native DisplayList associated\nwith the View, avoiding costly recreation of the SDK-level DisplayList and\nalso enabling faster invalidation of the view hierarchy.\n\nChange-Id: Ic99c8f28fa9183f2e54e9e4860b333eb9c540f7c\n"
    },
    {
      "commit": "4bf8b209955e8a35ec2e4101ed3612e03ecc5dbb",
      "tree": "247ee3a66ce5bc03974bbb42cea668169bc9085c",
      "parents": [
        "ddc421d19c797096de77c24f68a37ad23216e2a7",
        "9d1992deaeb3d60d5928f05b649a2cc654ba98a3"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Mar 16 09:21:14 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 16 09:21:14 2012 -0700"
      },
      "message": "Merge \"Optimizing DisplayList properties\""
    },
    {
      "commit": "9d1992deaeb3d60d5928f05b649a2cc654ba98a3",
      "tree": "f6f5b527f3c4e2e43546ad65b24397734ac83e86",
      "parents": [
        "f63c52ac87c07ca37b9681a949b1bb5febce3e43"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Mar 13 11:03:25 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Fri Mar 16 09:14:52 2012 -0700"
      },
      "message": "Optimizing DisplayList properties\n\nDisplayList properties are still disabled default (flags in View.java\nand DisplayListRenderer.h). When they are enabled, and when a View has\na DisplayList, invalidations due to property changes are now optimized\nto avoid causing DisplayList recreation. This eliminates the drawing step\nof invalidation (due to changes in these properties), only requiring\nissuing the previously-created DisplayList to the GL renderer. Invalidation\nis slightly faster (less overhead as we walk up the hierarchy), getDisplayList()\nis potentially much faster (going down to ~0ms), depending on the complexity\nof the View being redrawn and the size of the invalidated hierarchy.\n\nChange-Id: I57587d5b810c3595bdd72a6c52349c2a3d1bdf25\n"
    },
    {
      "commit": "acdd4b9c4b03bc6660274ab878731383adb5bca5",
      "tree": "41c9bbd804c64e2a29baac82f0a2168e2decb08a",
      "parents": [
        "a8bfeaf4f49fa33e96f37302f9c9b99c94aa1581"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 15 14:36:52 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 15 14:36:52 2012 -0700"
      },
      "message": "Set the default text length to -1, not 1\n\nChange-Id: Iccf6f8366c0b659ba7c90df99ae05ebc5d81fcbb\n"
    },
    {
      "commit": "390f882f8905e8d1ac0d4b7f2e01aa04dccc3c16",
      "tree": "e3959d0a87585b60b8c4e1bc0d16ca874cda9c23",
      "parents": [
        "6810a2442b7c38a3f5d04aa91cef9c0cc5f92cb9"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 13 18:00:10 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 13 18:00:10 2012 -0700"
      },
      "message": "Correctly compute the number of bytes written by each op.\nBug #6157792\n\nPreviously, DisplayListRenderer would compute the number of bytes\nwritten after a drawing op by looking at the difference between\nthe start pointer of the command stream and the end pointer of\nthe command stream. The SkWriter class used to record the commands\nstream allocates blocks of storage which would cause a crash when\na command spanned two blocks.\n\nChange-Id: I4d79d3feeb6d72d9d4e6ab05ecebd72d004be56c\n"
    },
    {
      "commit": "491189f6bb81827a0c8e343f89420a9bcd2e62ae",
      "tree": "d7b43525815c2a8bf13bbc00b8363f8c6d83ddda",
      "parents": [
        "3c9d9c18b41d052c76bad10a448d3acce024649b"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Mar 13 11:42:34 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Mar 13 11:42:34 2012 -0700"
      },
      "message": "Fix garbage deref with DisplayList property structures\n\nThis is the real fix to issue 6158892. We currently delete\ntransform/camera structures at DisplayList destructor time, if these\nstructures are not NULL. We set the fields to NULL in an init() method\ncalled (eventually) by the constructor. But it is possible for the object\nto be destroyed before that init code is called, resulting in the deref\nbug reported. The fi is to set these structures to NULL directly in the\nconstructor.\n\nIssue 6158892i: Device runtime restarts frequently\n\nChange-Id: Ibfa0f9314767eed6fd51f4ec7edc0d0edd5fdd0f\n"
    },
    {
      "commit": "3c9d9c18b41d052c76bad10a448d3acce024649b",
      "tree": "b48bafb887d1ed6cfe57cdfc3ecf13b377fc40ad",
      "parents": [
        "e5359373e039c2a30a655d4d5ad82ab08a4715cd",
        "d5a85fb63d91a9297e8d9a11016f3b3ed60dfbab"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 13 11:19:26 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 13 11:19:26 2012 -0700"
      },
      "message": "Merge \"Follow the include style used elsewhere in the library\""
    },
    {
      "commit": "d5a85fb63d91a9297e8d9a11016f3b3ed60dfbab",
      "tree": "e33b5e49f32a1c9d75f3bccc7662487110afc69f",
      "parents": [
        "065781397099719805a0a42023581b2622984dd4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 13 11:18:20 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Mar 13 11:18:20 2012 -0700"
      },
      "message": "Follow the include style used elsewhere in the library\n\nChange-Id: I14aebdaeb04b6f4c611153ece4ac1f6ad9bfc15f\n"
    },
    {
      "commit": "866ed817d0adf5b874eff277b4a4d2bcc6f61830",
      "tree": "0fd2e788bbbb7d8a65654e327344234af4c8e119",
      "parents": [
        "81a0647c302edb4ed74d6d80d8f85c85a6c3fec4"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Mar 13 11:13:13 2012 -0700"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Mar 13 11:13:36 2012 -0700"
      },
      "message": "Fix garbage deref in DisplayList structures\n\nIssue #6158892: Device runtime restarts frequently\n\nChange-Id: I4e6afaaf9ac66d6846caf0ed82ea67163d8b15c2\n"
    },
    {
      "commit": "a1cff5043d0fbd78fcf9c48e7658e56a5b0c2de3",
      "tree": "01a809b1ae5a50b8721f05c540a76570794d828c",
      "parents": [
        "bdc5afeee57a943adac3896297fab74b96b307c1"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Tue Feb 21 13:43:44 2012 -0800"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Mar 12 15:41:48 2012 -0700"
      },
      "message": "Handle view properties at the native level\n\nBasic functionality of handling View properties (transforms,\nleft/right/top/bottom, and alpha) at the native DisplayList level.\nThis logic is disabled for now (via compile-time flags in View.java and\nDisplayListRenderer.h) as we continue work on it (there is no advantage\nto the new approach until we optimize invalidation and rendering paths\nto use the new code path).\n\nChange-Id: I370c8d21fbd291be415f55515ab8dced6f6d51a3\n"
    },
    {
      "commit": "3fe4eb9c60d39acaadd9f807b1a21c239d1270ef",
      "tree": "29b0f6182fea31c047da7fd03acfbd21b06caa7e",
      "parents": [
        "772a73963d22163deff3fd3c7f65013ccb941f34"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 12 12:49:41 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 12 12:49:41 2012 -0700"
      },
      "message": "Turn down the number of glGetError() calls.\n\nglGetError() was invoked every time a display list was updated. This\nwas unnecessary since display list updates do not execute OpenGL code.\n\nChange-Id: Ia0a75a65ccf2a4701fb3a828848cd0c42f256c6c\n"
    },
    {
      "commit": "55fd2c9b2e87986b03cb58676bdf46bc6d5f1c36",
      "tree": "d992f9e11ac37f021fba69d0de76575864e4902d",
      "parents": [
        "887c2eea31a9ef2bc27186773e173e083eee7314"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 09 17:36:01 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 09 17:37:29 2012 -0800"
      },
      "message": "Don\u0027t bind data to missing uniforms\n\nChange-Id: Ib9d1f14eb0bef04e0910baa4eaf3e49cce81c0ce\n"
    },
    {
      "commit": "6d159451bbb5f568c4c3ae3a9e010a9512a106d5",
      "tree": "c0bc66b7d23431ea8e49aae789fa7949ba96bad0",
      "parents": [
        "6768c11d60d089ef577959a0ddb6119850cb5181",
        "029f64303b8fe506ef34c12777da86b830d3bf7a"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Tue Mar 06 05:27:31 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 06 05:27:31 2012 -0800"
      },
      "message": "Merge \"Add missing includes for Mutex.h\""
    },
    {
      "commit": "029f64303b8fe506ef34c12777da86b830d3bf7a",
      "tree": "13a3a36467e1b982a0ae6d46f6c6309f1246b76b",
      "parents": [
        "eb00769e8983a02397db26a5413147a975b47c1f"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Mon Mar 05 16:48:32 2012 -0500"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Mon Mar 05 16:48:32 2012 -0500"
      },
      "message": "Add missing includes for Mutex.h\n\nThe missing header was being transitively included through a\nSkia header which is being removed.\n\nChange-Id: I5a65bae076027951fe07d1e7eecd4732124fb0e4\n"
    },
    {
      "commit": "bb0acdf9e1d862a7cf0e2533321fc1105c29b5e3",
      "tree": "fbf7facb0b3e3c704ded07219bd7829cded40142",
      "parents": [
        "fb9c41c2060497a459d16c30122e1d082895e5d1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 05 13:44:35 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 05 13:44:35 2012 -0800"
      },
      "message": "Delete display list objects and resources on the UI thread\nBug #6073717\nBug #6065504\nBug #6026515\nBug #5971725\n\nPrior to this patch, the destructor of DisplayList would always run\non the finalizer thread. This could cause a race condition if the UI\nthread was busy rendering display lists at the same time leading to\nvarious random native crashes.\n\nChange-Id: Ie11108e3b1538d4b358a1a8b4cce1b2d33152d0c\n"
    },
    {
      "commit": "fb9c41c2060497a459d16c30122e1d082895e5d1",
      "tree": "4140c0757c7f91367a7956bb76604e02c04ecef4",
      "parents": [
        "e78d7670ca6d0f7cd66edeef791978234dd8d857",
        "2bf68f063b0077ddef6ebfe54f2ae5e063c2c229"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Mar 05 13:20:46 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 05 13:20:46 2012 -0800"
      },
      "message": "Merge \"Deferred layer updates\""
    },
    {
      "commit": "2bf68f063b0077ddef6ebfe54f2ae5e063c2c229",
      "tree": "da02b6113cb29371fb1e7321ffaf567bdf0fca8a",
      "parents": [
        "d8f45c16a896d76d06550a91d78e8c5a3a57275a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 02 13:37:47 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Mar 02 13:37:47 2012 -0800"
      },
      "message": "Deferred layer updates\n\nChange-Id: I83d9e564fe274db658dcee9e0cc5bbf9223ebb49\n"
    },
    {
      "commit": "ad1daaa87b793af30f3dd67a0f3cd5c0fd6ac0c1",
      "tree": "7320a0d45bc021b447302c1d3feabd425daeaf0a",
      "parents": [
        "d8f45c16a896d76d06550a91d78e8c5a3a57275a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 01 17:33:42 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 01 17:33:42 2012 -0800"
      },
      "message": "Remove stray log\n\nChange-Id: I0c1979aab395098651c8a63d0bae0198ebc3746b\n"
    },
    {
      "commit": "dd7c8e4c68205d39109d4317dd0c9b05ed43e8e5",
      "tree": "918bc3b0d69d8be0cf2d978a2b3a6291f6884f2b",
      "parents": [
        "9777173eb6c9eb97c7921c8288ebc65e3ab3ce6f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 01 12:08:38 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Mar 01 12:08:38 2012 -0800"
      },
      "message": "Small tweak to Canvas.drawPath() GL implementation\n\nChange-Id: I1d668a912996e1267bcf2127058888e489a2d9b3\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"
    }
  ],
  "next": "325740fb444af8fc7fb0119b2e30ce322c2ae134"
}
