)]}'
{
  "log": [
    {
      "commit": "d8a84a8609951826135a2e41a1cdd6b7cf680e27",
      "tree": "ff834471858d179000e18c12dcd5cd1c38966058",
      "parents": [
        "7c1b10872f3d57b3afdb0f070fcf602e4d72df37",
        "996fe656340ede058a6f0e6b18f9ec525ddb4e27"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Sat Sep 21 00:33:36 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Sep 21 00:33:36 2013 +0000"
      },
      "message": "Merge \"Correct bitmap merging logic\" into klp-dev"
    },
    {
      "commit": "996fe656340ede058a6f0e6b18f9ec525ddb4e27",
      "tree": "7efca330f6633eb665b611469f1149dabb1383a5",
      "parents": [
        "564c45b976b56bc33f18271e1c813a0bd91b2eb4"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Sep 20 17:13:18 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Sep 20 17:25:31 2013 -0700"
      },
      "message": "Correct bitmap merging logic\n\nbug:10863163\n\nThis fixes two issues\n\nThe check for pure translation was incorrect. It was fixed and renamed\nfor clarity.\n\nCertain matrix paths weren\u0027t setting kTypePositiveScale. For\nsimplicity (and because positive scale is simple to check) removed\nflag in favor of dynamic checking.\n\nChange-Id: Ic5ce235653ef49a68b8b242bd89fc2e95874ecc9\n"
    },
    {
      "commit": "16c84069a4cc0c0d3c35e798dc5e4b0130d4a26f",
      "tree": "82565c1ba045ee11d0810e86996a279f98cfb124",
      "parents": [
        "a2d65108dd32a0836fe08f0c72efdd5c727dad44"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Thu Sep 19 15:38:21 2013 -0700"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Thu Sep 19 15:38:21 2013 -0700"
      },
      "message": "fix emoji clipping in hw draw path\n\nI guess we don\u0027t want to overwrite the last line in every RGBA glyph\nwith our one-line texture atlas spacer?\n\nBug: 10841207\nChange-Id: Ief85ca58650c731e9d21dbf90942b7b44670abcc\n"
    },
    {
      "commit": "ce9ee16d654a42f31d211c60708d7b23f17c1d8e",
      "tree": "4044921a68cc010ac40c343ddd8692c71d209e1b",
      "parents": [
        "a42ceb03cf6a1cbcd9f526afb02d806b2c200ee3",
        "32f05e343c5ffb17f3235942bcda651bd3b9f1d6"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Sep 18 01:50:02 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 18 01:50:02 2013 +0000"
      },
      "message": "Merge \"Conservatively estimate geometry bounds\" into klp-dev"
    },
    {
      "commit": "a42ceb03cf6a1cbcd9f526afb02d806b2c200ee3",
      "tree": "78925e53817b579c4a7952b74900be75fa5492c1",
      "parents": [
        "9b6459841e52b9d44ec8ec57af5eb8007841f93d",
        "d965bc5823d878a3fd056b8a95fb4eb578ed3fe4"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Sep 18 01:49:32 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 18 01:49:32 2013 +0000"
      },
      "message": "Merge \"Disallow negative scale matrices in merged Bitmap drawing\" into klp-dev"
    },
    {
      "commit": "32f05e343c5ffb17f3235942bcda651bd3b9f1d6",
      "tree": "f3c0ed7a1a252728c21bd5b178ff69d625bf74d5",
      "parents": [
        "0f3e1487b26a822697f70747290809081c2072cc"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Sep 17 16:20:29 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Sep 17 17:48:14 2013 -0700"
      },
      "message": "Conservatively estimate geometry bounds\n\nbug:10761696\n\nAvoids a case where a rect with top coordinate of (e.g.) 0.51f is\nassumed to not draw in the first row of pixels, which leads to it not\nbeing clipped. Since rounding can cause it to render in this first\npixel anyway, we very slightly expand geometry bounds.\n\nNow, in ambiguous cases, the geometry bounds are expanded so clipping\nis more likely to happen.\n\nChange-Id: I119b7c7720de07bac1634549724ffb63935567fc\n"
    },
    {
      "commit": "d965bc5823d878a3fd056b8a95fb4eb578ed3fe4",
      "tree": "708968d03c9260b2cc3f3bcd5eea4355c3146f63",
      "parents": [
        "0f3e1487b26a822697f70747290809081c2072cc"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Sep 16 14:47:13 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Sep 16 18:19:55 2013 -0700"
      },
      "message": "Disallow negative scale matrices in merged Bitmap drawing\n\nbug:10622962\n\nChange-Id: I55ac18ad56b53dc9e6e6ea14cd3ec4bdafa98ac3\n"
    },
    {
      "commit": "5af5fc50c2f43fc0e0813e02cb6a950901a9c0b8",
      "tree": "221c3597a772b71ffc68a3cc6b8f0076f2e4ed9e",
      "parents": [
        "9210bc85545f31973c957b5179e6a82d05f473c6"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Sep 13 14:41:31 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Sep 13 14:44:08 2013 -0700"
      },
      "message": "Fix merged operation clipping\n\nbug:10745870\n\nMissing \u0027const\u0027 meant MergingDrawBatch would never clip anything.\n\nChange-Id: Ia6367eff94cf5f437efafbc3ba7f0da102ffd956\n"
    },
    {
      "commit": "1de466fc91511de8428affcf1eb71dc6af946145",
      "tree": "f3f175819331a48534b19a68331abd189fb76708",
      "parents": [
        "25f17f295b4da464a2758c11a02cabb51bf4722f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 12 16:09:19 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Sep 12 23:13:38 2013 +0000"
      },
      "message": "Always disable the clip for layers\nBug #8149344\n\nChange-Id: Ifd413cadb171232eb846b3d91b05b2d2457b9f35"
    },
    {
      "commit": "88ee0dac81dec12aefdeee23072df9b3864a06a4",
      "tree": "f47c05f6943a52d3a4ee8f9b7ad9210337ceebbd",
      "parents": [
        "26267660957a4428a66d8f142e2bdfa6ce6fe12f",
        "c1c5f0870282b56dafe5a4d756e4b9e6884655a7"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Sep 12 22:08:54 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 12 22:08:54 2013 +0000"
      },
      "message": "Merge \"Move DeferredDisplayState out of ops\" into klp-dev"
    },
    {
      "commit": "c1c5f0870282b56dafe5a4d756e4b9e6884655a7",
      "tree": "b8fb332db36986d9548a862d5dfa218c0e637e58",
      "parents": [
        "b8b017cb6879352aee015ba24e9bfd05cc094e74"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Sep 11 16:23:37 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Sep 12 13:33:01 2013 -0700"
      },
      "message": "Move DeferredDisplayState out of ops\n\nbug:9969358\n\nInstead of storing DeferredDisplayState within an op (thus forcing ops\nto be tied to a single state instance), associate each op with a new\nstate at DeferredDisplayList insertion time.\n\nNow, DisplayLists (and the ops within) can be reused in a single\nDeferredDisplayList draw call, as ops will use different state\ninstances at different points in the frame.\n\nChange-Id: I525ab2abe0c3883679f2fa00b219b293e9ec53d9\n"
    },
    {
      "commit": "1c7cf90af4d81e609dcb6b0f9afa5787e2a8a344",
      "tree": "c596c9eb53eaa85eedad9eaf284f21d1da66991f",
      "parents": [
        "d292f790be5074998c1adc5feb4fea031d0d3d09"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Sep 11 15:28:39 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Sep 11 15:28:39 2013 -0700"
      },
      "message": "Fix another off-by-one error in ZipFileRO\n\nBug: 10424836\nChange-Id: I491458bd31ef39e87127d061427b32a3d59ac807\n"
    },
    {
      "commit": "0d6c2d7b9db209d740992045dd3b842e52306598",
      "tree": "28177f4589207d53e7249c8b83a8fe3c4e6e60f1",
      "parents": [
        "c1cf491d160f8feb74b24d4ebb4e39324850cf61"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 21 10:40:16 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Sep 11 11:44:40 2013 -0700"
      },
      "message": "Reconcile differences between zip implementations\n\nReconcile the difference between ZipFileRO and java.util.ZipFile to have\nthe same behavior.\n\nBug: 10424836\nChange-Id: I6bde1bad7e20065ee650945fd43a913c05ce5ac7\n"
    },
    {
      "commit": "0c4b3646b0feb1bed89bf374ff03af797834d8c3",
      "tree": "874a3a61fe15c54de266336360a5b9d93b52cbe0",
      "parents": [
        "9ffddc7eb50653cf60ce6b27a0e1945eed5b5ce1"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Sep 11 18:10:09 2013 +0000"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Sep 11 18:10:09 2013 +0000"
      },
      "message": "Revert \"Reconcile differences between zip implementations\"\n\nThis reverts commit 9ffddc7eb50653cf60ce6b27a0e1945eed5b5ce1.\n\nChange-Id: Ifeba63511211bfc2b375f2205e319e91403b7d06\n"
    },
    {
      "commit": "9ffddc7eb50653cf60ce6b27a0e1945eed5b5ce1",
      "tree": "546d6c5fc20a353b514f8b4130954492dda44b2d",
      "parents": [
        "042bd400547dda7dce4a526fb3b68303fa934229"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 21 10:40:16 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Sep 11 00:29:18 2013 +0000"
      },
      "message": "Reconcile differences between zip implementations\n\nReconcile the difference between ZipFileRO and java.util.ZipFile to have\nthe same behavior.\n\nBug: 10424836\nChange-Id: Iff159c9e1a91b59f6c5346dc0278cb9e4bbc1a39"
    },
    {
      "commit": "874ae2adf8c24c4b9d68f781239a95ad047e212a",
      "tree": "b29d2b31bd84c38d9c643e67bc0327d01d820ab1",
      "parents": [
        "895a43751fcf4f33e5437963d75d05c2cd754520",
        "25d2f7bc1ff9b475eff75bfff647466e91dbacb2"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Sep 10 21:03:48 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 10 21:03:48 2013 +0000"
      },
      "message": "Merge \"Fix scissor for functor invocation\" into klp-dev"
    },
    {
      "commit": "7a454ba5fee0bbb9f2e1292f8eede655516c0f2c",
      "tree": "00db8bbd8200c42aeee02e3285bef0fbb3b040e9",
      "parents": [
        "9578e642403c0fa4fdcb32828f27c2417cabe88d"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Tue Sep 10 13:46:49 2013 -0700"
      },
      "committer": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Tue Sep 10 13:46:49 2013 -0700"
      },
      "message": "Fix FontRenderer bug.\n\nbug 10691313\n\nChange-Id: Icd5341a3c2066e337911f040ddc935c48c8d7cd1\n"
    },
    {
      "commit": "25d2f7bc1ff9b475eff75bfff647466e91dbacb2",
      "tree": "2a4dc136adae063c2018ce35bd3e8f9944a15d92",
      "parents": [
        "b776122a8aa9fd082fa8aaa216c8a589d709c4c9"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Sep 10 13:12:09 2013 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Tue Sep 10 20:45:29 2013 +0000"
      },
      "message": "Fix scissor for functor invocation\n\n Bug: 10677765\n enableScissor() must precede setScissorFromClip() as\n otherwise setScissorFromClip() doesn\u0027t do anything.\n Also make sure to call setScissorFromClip() if\n enableScissor() returns true as enableScissor() calls\n resetScissor() if the scissor state has changed.\n\nChange-Id: I9226b20bb256c92066aae344e4e6407540b6eae9\n"
    },
    {
      "commit": "9578e642403c0fa4fdcb32828f27c2417cabe88d",
      "tree": "34e95855ef8c2e7b080106bb83d7fccfbc9fb17a",
      "parents": [
        "16c3220734f3cbf32c0148d82815d93e2f28af65"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Mon Sep 09 16:15:56 2013 -0700"
      },
      "committer": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Mon Sep 09 16:23:27 2013 -0700"
      },
      "message": "Add flags word to initialization.\n\nbug 10427951\n\nChange-Id: I1356b9b96315ead44aa3898de5604d75f9bb8be5\n"
    },
    {
      "commit": "66063ae2d6ff523bbf200cccdb9223d824c240a4",
      "tree": "ba09faecc2c98a10482c97b0640143fd8ec42737",
      "parents": [
        "0cdc24a2fb5268241cf16c6b28a4a3b58965a2c8"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Sep 05 16:11:18 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Sep 05 16:11:18 2013 -0700"
      },
      "message": "Dump the right matrix when logging display lists\n\nbug:10631274\nChange-Id: I6b32bfcb3e207321da60807091d7ac0ecf6112ab\n"
    },
    {
      "commit": "54f574acf4dd5483170b8f79e2f7c70b58763ce7",
      "tree": "8d97e104903d19019cb538fef06fac6597d384ba",
      "parents": [
        "5bc1ea4e4ae0133d4d5eaa4ac98cf4719effd032"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Aug 26 11:23:46 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Aug 26 11:23:46 2013 -0700"
      },
      "message": "Move functor GL setup to just before functor\n\nbug:10399469\n\nBecause the stencil setup can issue draws, it *must* come before the\nGL state setup.\n\nChange-Id: I52a36213549fc60b091a90cbb923a1f0d35f9a65\n"
    },
    {
      "commit": "5d923200846ed59e813373bde789d97d4ccc40b5",
      "tree": "db2f874cf61f812c4aa359f07d49525d8da82de8",
      "parents": [
        "0a8c51b1d0d66d6060afcec1eab33091d49332ae"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 18:40:24 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 18:42:46 2013 -0700"
      },
      "message": "Second attempt at avoiding infinite loop in PathCache::trim()\nBug #10347089\n\nChange-Id: I70f5a3933e848632473acc6636c88be5dc6ac430\n"
    },
    {
      "commit": "0a8c51b1d0d66d6060afcec1eab33091d49332ae",
      "tree": "28e92fa12d2a53e6521469cc8ef6c5024b7cc5b2",
      "parents": [
        "627c6fd91377ead85f74a365438e25610ef1e2ee"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 17:35:38 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 17:35:38 2013 -0700"
      },
      "message": "Properly account for created paths in the cache\n\nChange-Id: I47b89b3085cefab6daac9194e7bfd3c140b37fa2\n"
    },
    {
      "commit": "627c6fd91377ead85f74a365438e25610ef1e2ee",
      "tree": "3fad6c0a8a6fb3e4c88702b6a407a0fdd75be065",
      "parents": [
        "906da6bfe4092fda1daff63e00e9f2ce1daac00b"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 11:53:18 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 21 11:53:18 2013 -0700"
      },
      "message": "Add overdraw debugging that accounts for Deuteranomaly\n\nChange-Id: I31f68a07aa7cf0490d2572e24e4c5ac2066a1151\n"
    },
    {
      "commit": "d8c8aaa82ef90f30df647ca42453e953ee52af0f",
      "tree": "bceb079beb618fd8122b18b7da7218442e7080f7",
      "parents": [
        "7e7f8d48a62a972ad18af2d222a011a1dd0c8928"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Mon Aug 19 12:04:38 2013 -0700"
      },
      "committer": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Mon Aug 19 12:07:52 2013 -0700"
      },
      "message": "Handle updates to C++ API.\n\nChange-Id: I8ab17cbae3a9a4cc3c3202b8277d49f27bdf1fec\n"
    },
    {
      "commit": "46bfc4811094e5b1e3196246e457d4c6b58332ec",
      "tree": "10644c6a2e5dc6714be21a974fb86ce977d5bdf5",
      "parents": [
        "b0a41ed3dcc34a2b4026f6cc8336796f3523aa21"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 16 18:38:29 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 16 18:38:29 2013 -0700"
      },
      "message": "Fix hardware layers lifecycle\nBug #10075732\n\nHardware layers could survive across EGL terminate events.\n\nChange-Id: Ie8565d55cb29fe6625fa1584d695edfecd37ab5e\n"
    },
    {
      "commit": "b0a41ed3dcc34a2b4026f6cc8336796f3523aa21",
      "tree": "f3be3328e2c2ca0d70c95dd26d605a638c4a6cc4",
      "parents": [
        "b746371de7f21ae36a14953d9b253df06838efb1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 16 14:44:38 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 16 14:44:38 2013 -0700"
      },
      "message": "Prevent ANR in apps using drawPath()\nBug #10347089\n\nIf an app clears its path cache before stopping background tasks, it could\nget into an infinite loop in PathCache::trim().\n\nChange-Id: Ieb865b762e7b00aebaba0c023769c2db286a94f5\n"
    },
    {
      "commit": "b746371de7f21ae36a14953d9b253df06838efb1",
      "tree": "e53554662b63a290d109437cf5533ad61f2f5c68",
      "parents": [
        "0a94b9ce277ef2ec79902e3c576a50ab438dca97"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 16 13:55:29 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 16 13:55:29 2013 -0700"
      },
      "message": "Clear FBO cache on full memory flush\n\nChange-Id: I44e06d5d15cd899a0522c62d7c0d042170665abb\n"
    },
    {
      "commit": "723b2feb929b96b1dde40a865c49ea18bc42f055",
      "tree": "31415cd1bef736d7da007944999064ffad63b822",
      "parents": [
        "9a68f82f3730432399618bf2e4f73208f84dc87f"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Mon Aug 12 14:38:44 2013 -0700"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Mon Aug 12 15:12:49 2013 -0700"
      },
      "message": "fix kBW_Format glyphs\n\nOops! kBW_Format was omitted from a couple of switch statements,\nresulting in glyphs in that format being invisible.\n\nBug: 10206452\nChange-Id: Ib2aa52250aeeecc0de1b1b78e3d0f568f368c73e\n"
    },
    {
      "commit": "9b5a1a28c327e6113d68302b1f0eed1d1c6f6183",
      "tree": "6b6bb3bc658bf948b5211e7bbde72a19140dba6e",
      "parents": [
        "d81a15c6b77c94109d0a08bc7355f62301fe9234"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 09 14:06:29 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 09 14:06:29 2013 -0700"
      },
      "message": "Take shadow bounds into account for quick rejects\nBug #8634346\n\nChange-Id: I995c5205c2959d8e4da638ae47fedcda92eb1b36\n"
    },
    {
      "commit": "003123004f7b23b3dc472d5c40b8c1a16df37a54",
      "tree": "974c2608d0f3f2477acb6da24b9a935f44952033",
      "parents": [
        "37ee68fc091f64e17c0ef29b123b782b6daecf16"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 08 19:11:20 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Aug 09 03:52:29 2013 +0000"
      },
      "message": "Remove an unnecessary allocation\n\nAlso remove dead code from OpenGLRenderer.cpp\n\nChange-Id: I7eb54ca19e77ee3c32f1fe9513a031e6b2e115cf\n(cherry picked from commit 5c7d5ab878b26f855175a3305a14ac12fcacf25e)"
    },
    {
      "commit": "7f6d6b0370df4b5a9e0f45bffc31ea6caeeb509d",
      "tree": "00e4cbd5c4b2f7e27d4c4f42ea05bdee576a0766",
      "parents": [
        "605ca203782781aa023b5b2963edbf2966379c45"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 06 13:49:28 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Aug 06 18:35:01 2013 -0700"
      },
      "message": "Split assets atlas batches\nBug #10185769\n\nThe assets atlas contains assets that need to be blended and assets\nthat do not need to be blended. With a single merge id, currently\nset to be the pointer to the atlas itself, draw ops merging could\ngenerate batches of commands containing both opaque and translucent\nassets. The blend state was chosen from only one of the assets in\nthe batch, leading either to inefficiencies (blending large opaque\nassets) or incorrect behaviors (not blending translucent assets.)\n\nThis change introduces two new merge ids in the atlas: an opaque\nkey and a blend key. These keys are simple booleans set to false\nand true respectively (the values do not matter really.) Their\nmemory addresses are used as the merge ids when createing draw ops\nbatches, allowing all opaque ops to be batched together and all\ntranslucent ops to be batched together.\n\nChange-Id: I114dba0533c44987e53864b471ccb28c811f2025\n"
    },
    {
      "commit": "83ad4e393ae8223745924ac9b37949c8efbce3f2",
      "tree": "469ca23b4b673f98a9c5e17983778b3b41201443",
      "parents": [
        "0281b406365080bce90d8562950cfcfd83b48303"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 05 13:27:39 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 05 14:12:50 2013 -0700"
      },
      "message": "Remove an unused C zip API.\n\nChange-Id: I10ae849bdedf3e3bb97547c4f9e5a20742e9d6b1\n"
    },
    {
      "commit": "250b1cfc831fd2a271c09cab547efcc5e3d5f828",
      "tree": "bf502f12f2488e26c1fd3e4978cf2eced0ea7e0e",
      "parents": [
        "bb9b30078739dba99ffa094b35fde0118c245097"
      ],
      "author": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Thu Aug 01 14:49:22 2013 -0700"
      },
      "committer": {
        "name": "Tim Murray",
        "email": "timmurray@google.com",
        "time": "Fri Aug 02 15:31:29 2013 -0700"
      },
      "message": "Handle updates to RS C++ API.\n\nChange-Id: I73127fc7369643b94d4a49f31a516b50c74b54ac\n"
    },
    {
      "commit": "b213cec0ce659c1e35c3e7f60a61bae38d94482a",
      "tree": "3fc40dd88060676ff462c836a548615ddef05ffe",
      "parents": [
        "03ed0127dae141d99b003ede9ba3ea937128e471",
        "5e49b307eb99269db2db257760508b8efd7bb97d"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Aug 02 20:34:38 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 02 20:34:38 2013 +0000"
      },
      "message": "Merge \"Fix quickReject\u0027s handling of AA ramp geometry\""
    },
    {
      "commit": "5e49b307eb99269db2db257760508b8efd7bb97d",
      "tree": "18c9f02b947e99fe8aa5b27074725b11fc6df2ba",
      "parents": [
        "cb9accefb19ba6ae6fd449dc9ab62e972b51335c"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 30 19:05:20 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Aug 02 11:29:22 2013 -0700"
      },
      "message": "Fix quickReject\u0027s handling of AA ramp geometry\n\nBy having quickReject round out the window-space geometry bounds, we\nprevent the AA perimeter (which falls outside the local bounds passed\nin) from drawing outside the clip.\n\nChange-Id: I8ee36be9039a9c47906815ee2f0dbaa5eb910b82\n"
    },
    {
      "commit": "b7b93e00893f5c690a96bd3e0e10583bc5721f83",
      "tree": "89c975e81ab527630ab4c10478b80bca12593d24",
      "parents": [
        "5d3dff1d66f99fbd5bef9178e62d789119c02ad1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 01 15:29:25 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 01 15:35:24 2013 -0700"
      },
      "message": "Fix region clipping bugs\nSee external bug #58344\n\nChange-Id: Iecd6c41fc8076cd76add2335d3442a6dd8878f12\n"
    },
    {
      "commit": "f296e317fb44ac33fe5294fcfe0cc1218ca5b86c",
      "tree": "92d228d6e902f5f34ed05599db843216a689d9ea",
      "parents": [
        "2f3efcf1078b051205c2b6708a79f176fa943d17",
        "1e546815bbb736c50679a8aefc25f48561026fc5"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Thu Aug 01 14:40:53 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 01 14:40:54 2013 +0000"
      },
      "message": "Merge \"Support RGBA fonts and bitmap fonts (and RGBA bitmap fonts)\""
    },
    {
      "commit": "d45c68dd24fe3dd510af5a9591b5e2f509b56772",
      "tree": "f9a3d18ecce9509eddcc2b4c5899e2b7c90765a2",
      "parents": [
        "af728bd201195799c8e993ece145d607b9ca67df"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 31 12:14:24 2013 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 31 15:57:49 2013 -0700"
      },
      "message": "Resource memory optimization.\n\nDon\u0027t ever need the cached UTF-16 string conversions on the\ndevice.  Don\u0027t need to create those strings, and don\u0027t need\nto create the lookup array for them at all.  This requires\nfixing all of the remaining places in the platform where we\ninteracted with the resources with the blind assumption that\nthe strings are UTF-16.\n\nChange-Id: Ia0e5a150499837471e494e85b23b05fa06e0cf1d\n"
    },
    {
      "commit": "1e546815bbb736c50679a8aefc25f48561026fc5",
      "tree": "11a3b7106638c123d052d50ce3e2a1757e004cb4",
      "parents": [
        "3a6f25512c0a682b10961a5a7428e3393ffb0b75"
      ],
      "author": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Tue Jun 25 14:25:17 2013 -0700"
      },
      "committer": {
        "name": "Victoria Lease",
        "email": "violets@google.com",
        "time": "Wed Jul 31 15:50:47 2013 -0700"
      },
      "message": "Support RGBA fonts and bitmap fonts (and RGBA bitmap fonts)\n\nQuite a few things going on in this commit:\n\n- Enable bitmap strikes by default in Paint objects.\n\nThe SkPaint parameter that enables bitmap strikes was not previously\nincluded in DEFAULT_PAINT_FLAGS. This effectively disabled bitmap\nfonts. Oops! It\u0027s for the best, though, as additional work was needed\nin Skia to make bitmap fonts work anyway.\n\n- Complain if TEXTURE_BORDER_SIZE is not 1.\n\nOur glyph cache code does not currently handle any value other than 1\nhere, including zero. I\u0027ve added a little C preprocessor check to\nprevent future engineers (including especially future-me) from\nthinking that they can change this value without updating the related\ncode.\n\n- Add GL_RGBA support to hwui\u0027s FontRenderer and friends\n\nThis also happened to involve some refactoring for convenience and\ncleanliness.\n\nBug: 9577689\nChange-Id: I0abd1e5a0d6623106247fb6421787e2c2f2ea19c\n"
    },
    {
      "commit": "fb6c743c6e01aa2d4c457d85389a698a193c60b8",
      "tree": "1ef3aed292e3ab91ecd8da467c64b7675e60e710",
      "parents": [
        "87c79a18fe03de3b141b95336199b7504ac95c6c",
        "6cad75744ed3b81cf2c96f545368067b62c726ec"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jul 24 18:54:11 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 24 18:54:11 2013 +0000"
      },
      "message": "Merge \"Fix 9patches\u0027 limitation of 32 empty quads\""
    },
    {
      "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": "0d6e7315eb302b5402535dca87ac2c4dad4709b8",
      "tree": "5cfe7ff4c350d85d457e1d2bfc054a018d7893fb",
      "parents": [
        "e58bb044701d0b092fb09103f14d9406a497c65b"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jul 23 17:31:18 2013 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jul 23 18:04:24 2013 -0700"
      },
      "message": "add static dependency on liblog\n\nChange-Id: I8056aa744b37ef0c31229329a0de79c58c5955ea\n"
    },
    {
      "commit": "98427708a81eefcc24ae29e2f22e55f1ae44c927",
      "tree": "b541f690c964d8bce9562a93203dd7aeb5ad909b",
      "parents": [
        "fd23eca5ba30a1624233c9597f8c4b9db790994b",
        "9ab2d1847552aa4169b4325aae1b1368d6947a9f"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jul 22 23:31:18 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 22 23:31:20 2013 +0000"
      },
      "message": "Merge \"Ensure glActiveTexture is cleaned up correctly on functor resume\""
    },
    {
      "commit": "9ab2d1847552aa4169b4325aae1b1368d6947a9f",
      "tree": "52955e896e6f021961bbfc9dd52003c918fdbb50",
      "parents": [
        "7bfddb5434736a26fa9b32d7cd1741067169ae74"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jul 22 16:16:06 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jul 22 16:21:55 2013 -0700"
      },
      "message": "Ensure glActiveTexture is cleaned up correctly on functor resume\n\nChange-Id: I103d7d63b17289d599c2c08dcc442cfba9b8e51d\n"
    },
    {
      "commit": "448455fe783b0a711340322dca272b8cc0ebe473",
      "tree": "e67a3894b8d1fc2cdfd08e7f45ff54c37070d279",
      "parents": [
        "e4d4e20e8f84d53b4b7198300baaf3e21ff9be58"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 22 13:57:50 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jul 22 14:37:21 2013 -0700"
      },
      "message": "Use global indices array to draw layers\n\nAn array of indices local to a layer would only be necessary if\nwe changed the way we resolve T-junctions. Since we only ever\ndraw quads, let\u0027s just use the indices we use everywhere else.\n\nThis change also uses the global indices array to render list\nof colored rectangles to save on the number of vertices generated\nCPU-side.\n\nChange-Id: Ia6d1970b0e9247805af5a114ca2a84b5d0b7c282\n"
    },
    {
      "commit": "b3d83888229d9a9d40c3ada037fcf6f96e80e125",
      "tree": "f4e5d9c893f107e7dec327b5840694590532bf45",
      "parents": [
        "07c09ce248db379c7c4f515c2c84611c9f258dd3",
        "ecca6da4eab601f05a9d977c8d2651068b6e16b2"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 16 22:43:01 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 16 22:43:02 2013 +0000"
      },
      "message": "Merge \"Support stencil-based clipping for functors\""
    },
    {
      "commit": "4e7b772b733593fbe25c733e95b8dcea293234b6",
      "tree": "26acbca3bc0a543bf90655412f04d3b4ae86fb0b",
      "parents": [
        "d91f8af40b8f9eb8752c432315c619e90d095b6a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 16 13:47:01 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jul 16 14:52:55 2013 -0700"
      },
      "message": "Fix crashes in setMatrix() and concat()\n\nsetMatrix() was crashing in native code, only with hw acceleration on.\nconcat() would throw a NullPointerException. It now ignores null matrices.\n\nChange-Id: Iebd8b410a957d2ba501570c6fbb3f680ff4a1a23\n"
    },
    {
      "commit": "ecca6da4eab601f05a9d977c8d2651068b6e16b2",
      "tree": "d7b3d39eb65155174cafe6c3033be0917bde15ed",
      "parents": [
        "e77d6dd94371b97a8fac21a60b804b4f99559eab"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 16 13:27:18 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 16 13:27:18 2013 -0700"
      },
      "message": "Support stencil-based clipping for functors\n\nbug:9070351\nChange-Id: I1c54e1bea1b84b1619cce27b14f189b42cab7062\n"
    },
    {
      "commit": "0c20c3898a533b7b76f60827cb6ea02e17c5953d",
      "tree": "15a488db02872005937082b918bfe108eeae1282",
      "parents": [
        "e969964c80a20b2d968b4ee54495176c9049d3e3"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jul 02 10:48:54 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jul 08 11:08:02 2013 -0700"
      },
      "message": "Use global references for Bitmap AndroidPixelRefs\n\nbug:9621717\n\nBecause we\u0027re no longer holding onto Bitmaps Java side during\nDisplayList lifetime, use global refs to keep the backing byte arrays\naround.\n\nAdds back bitmap buffer passing + native ref management removed by\n3b748a44c6bd2ea05fe16839caf73dbe50bd7ae9\n\nAdds back globalRef-ing removed by\nf890fab5a6715548e520a6f010a3bfe7607ce56e\n\nChange-Id: Ia59ba42f05bea6165aec2b800619221a8083d580\n"
    },
    {
      "commit": "9d3b1a424c5c61e24e9659d15fb353026a00d925",
      "tree": "0e543391e3ac7b6ac0bff377e08cd2e233ef7363",
      "parents": [
        "8f5e3d13e166e4873e130a5ef7c987333dbac917"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 01 19:07:15 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 01 20:11:42 2013 -0700"
      },
      "message": "Move input library code to frameworks/native.\n\nNo longer compile libandroidfw as a static library on the device\nsince it already exists as a shared library.  Keeping the static\nlibrary would force us to provide a static library version of\nlibinput for the device as well which doesn\u0027t make sense.\n\nChange-Id: I3517881b87b47dcc209d80dbd0ac6b5cf29a766f\n"
    },
    {
      "commit": "c36fe2fc5354fadc140c898f59d47859cbdeac67",
      "tree": "a238c4eb527573da5ecbc3ac4c31a240a4a1eb3c",
      "parents": [
        "1e09cfaa689cff21d3d00883d38af5c296859fdb",
        "55e789dbc782be0dcaf1d4bae5f32e9e2f674152"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 28 11:15:02 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 28 11:15:02 2013 -0700"
      },
      "message": "am 55e789db: am ed96349a: am 3d1b158e: Merge \"Fix out of range glCopyTexImage2D Bug #9425270\" into jb-mr2-dev\n\n* commit \u002755e789dbc782be0dcaf1d4bae5f32e9e2f674152\u0027:\n  Fix out of range glCopyTexImage2D Bug #9425270\n"
    },
    {
      "commit": "b254c242d98f4a9d98055726446351e52bece2c6",
      "tree": "69df91645e499216cadb4e9ba11e57bc32b2d681",
      "parents": [
        "e6cb43a1ea50681d2da30ce5e8cb5ac97e80e88a"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 27 17:15:24 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 27 17:15:24 2013 -0700"
      },
      "message": "Fix out of range glCopyTexImage2D\nBug #9425270\n\nA better solution would be to use glCopyTexImage2D whenever possible but\nthis change would be a little more dangerous.\n\nChange-Id: Ib1aaceda39d838716285ef97f356721416822dbb\n"
    },
    {
      "commit": "55b6f95ee4ace96c97508bcd14483fb4e9dbeaa0",
      "tree": "f66490c89db4ac96004144731a89d1956108f1a0",
      "parents": [
        "9feab843ac8139f4e971d93fd767470d0d727e41"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 27 15:27:09 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 27 15:40:46 2013 -0700"
      },
      "message": "Track the atlas\u0027 generation ID\nBug #9589379\n\nIf the atlas is terminated/reinitialized and a view does not invalidate\nin between it might end up using a stale AssetAtlas::Entry. This change\nis similar to how 9patch meshes are cached in DrawPatchOp: we simply\ntrack the generation ID of the cache to make sure we always use the\nlatest data.\n\nChange-Id: Ib5abb3769d2ce0eabe9adc04e320ca27c422019e\n"
    },
    {
      "commit": "e3b0a0117a2ab4118f868a731b238fe8f2430276",
      "tree": "a4a6ac3783ace541cd35a0f9d3868af6d2bf97b7",
      "parents": [
        "89dc02a9bed818cc6f5296c97eb504ccb010db42"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 26 15:45:41 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 26 17:15:08 2013 -0700"
      },
      "message": "Refcount 9-patches and properly handle GC events\n\nThis change adds refcounting of Res_png_9patch instances, the native\ndata structure used to represent 9-patches. The Dalvik NinePatch class\nnow holds a native pointer instead of a Dalvik byte[]. This pointer\nis used whenever we need to draw the 9-patch (software or hardware.)\n\nSince we are now tracking garbage collection of NinePatch objects\nlibhwui\u0027s PatchCache must keep a list of free blocks in the VBO\nused to store the meshes.\n\nThis change also removes unnecessary instances tracking from\nGLES20DisplayList. Bitmaps and 9-patches are refcounted at the\nnative level and do not need to be tracked by the Dalvik layer.\n\nChange-Id: Ib8682d573a538aaf1945f8ec5a9bd5da5d16f74b\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": "4f20f8ae50ecc3b6c04afd2e62716ca87620962b",
      "tree": "e3cb9ca5ce19b83bc351323111b9be7082fb883e",
      "parents": [
        "b06accf34f53956a5ccd44cecc3604cc2d166cd7",
        "0e87f00f8cb79635aa70b9a2dfa02bf19dc7473d"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 21 20:51:54 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 21 20:51:54 2013 +0000"
      },
      "message": "Merge \"Initialize MergingDrawBatch clip with viewport bounds\""
    },
    {
      "commit": "0e87f00f8cb79635aa70b9a2dfa02bf19dc7473d",
      "tree": "f109c7a20dc65947e8d69cd274a10b512a46d940",
      "parents": [
        "2c290392c9a934f9ac48364af01c848b01ba8e80"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jun 19 16:54:59 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 21 13:16:31 2013 -0700"
      },
      "message": "Initialize MergingDrawBatch clip with viewport bounds\n\nThis allows merged, clipped operations to behave correctly within a\nsavelayer, even if the base viewport has a large offset.\n\nAdditionally, disregard opaqueness when within a\ncomplexclip/savelayer, as the coverage can\u0027t be trusted.\n\nChange-Id: Ic908b82a4bb410bc7fac1b4295f4874ed166efc5\n"
    },
    {
      "commit": "64d592129e4f5231f61ac2b6055e1b37f8c0ebb6",
      "tree": "8e56629d2d87b17c93e170d5059da540552ff099",
      "parents": [
        "b38d53dacb4289bd96e1dbfa6211ffa734281c57",
        "16ea8d373b03b1e115dd505af70dbee4e3a3a182"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 21 18:37:56 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 21 18:37:56 2013 +0000"
      },
      "message": "Merge \"Refcount the paint used by Canvas.drawPatch()\""
    },
    {
      "commit": "16ea8d373b03b1e115dd505af70dbee4e3a3a182",
      "tree": "8f1f6bc7c67d520fce80fa7d87d9f8e7d8c82fe0",
      "parents": [
        "03c00b5a135e68d22ca5bb829b899ebda6ed7e9d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 21 11:35:52 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 21 11:35:52 2013 -0700"
      },
      "message": "Refcount the paint used by Canvas.drawPatch()\n\nPrevents crashes :)\n\nChange-Id: I62103ce97490613142321f080b82c2edaed67a95\n"
    },
    {
      "commit": "2c290392c9a934f9ac48364af01c848b01ba8e80",
      "tree": "6450396c938fb0216b5f958f24d49e5bd0d34af2",
      "parents": [
        "ede7eb7749e08b6343955cf52304a17f21c54e6f",
        "03c00b5a135e68d22ca5bb829b899ebda6ed7e9d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 21 17:42:23 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 21 17:42:23 2013 +0000"
      },
      "message": "Merge \"Batch 9-patches in a single mesh whenever possible\""
    },
    {
      "commit": "ede7eb7749e08b6343955cf52304a17f21c54e6f",
      "tree": "603d4fe4c4c512e5213c8588b19e8ed09496f2bd",
      "parents": [
        "3b8b276644c5ee1ebcd73b5b1981d7e54a29561b",
        "c5493fb7fa1f6995955c667d4377f2337f2cf465"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 21 17:39:14 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 21 17:39:14 2013 +0000"
      },
      "message": "Merge \"Make op outputting const, for more general logging\""
    },
    {
      "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": "d485ef27c795648c4a05c4c089e8c5a15712fd36",
      "tree": "7608ca3814d7aa0dca699fbe48bb8c5e71970543",
      "parents": [
        "fb5dbfea1abc75603c8132e9fb23b79b15f378fa",
        "f6bed4f12a2c975678fc0bdea15054ab169aafb5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 21 01:31:54 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 21 01:31:55 2013 +0000"
      },
      "message": "Merge \"An identity matrix should be considered a pure translate matrix\""
    },
    {
      "commit": "f6bed4f12a2c975678fc0bdea15054ab169aafb5",
      "tree": "fbfc0e2154782601063f6b4a9e1dcd7e033b8fc5",
      "parents": [
        "9e6f3ac109b5cd7736122d1bdf83ed38b9d739c6"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 20 17:52:07 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 20 17:52:07 2013 -0700"
      },
      "message": "An identity matrix should be considered a pure translate matrix\n\nChange-Id: I75e91797e8270f902f67bdd7bb526cccc23adc6b\n"
    },
    {
      "commit": "d4fed90d246a8decf962cd3a63507a3637354fb1",
      "tree": "59385af344e401438b4dcac0e7db95d59b404551",
      "parents": [
        "6ebe3de331efd00ba23bc4191d4a82cfa4c39160",
        "9e6f3ac109b5cd7736122d1bdf83ed38b9d739c6"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 20 23:32:39 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 20 23:32:40 2013 +0000"
      },
      "message": "Merge \"Add debugging logs for GPU pixel buffers\""
    },
    {
      "commit": "9e6f3ac109b5cd7736122d1bdf83ed38b9d739c6",
      "tree": "00fa539e34214d163d694adbd316e39785b3e6d4",
      "parents": [
        "2458939b5f926176a485a3196f59688eed78e858"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 20 16:31:35 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 20 16:31:35 2013 -0700"
      },
      "message": "Add debugging logs for GPU pixel buffers\n\nChange-Id: I7edb04dd30ee6fd823099e72788169cc185e70f2\n"
    },
    {
      "commit": "8e1af51787983808b5181de9d17739810e943e1a",
      "tree": "b0014eb5631108e8ece9c5a4508f7c4c2cb2dcf5",
      "parents": [
        "0db9f4ddd7a339e4ba1cf16d7a9b49234635ff09",
        "0618148f9031129540631b6d5aa823377e993415"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jun 20 00:46:24 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 20 00:46:24 2013 +0000"
      },
      "message": "Merge \"input: Handle a few extra error conditions.\""
    },
    {
      "commit": "c5493fb7fa1f6995955c667d4377f2337f2cf465",
      "tree": "8ccfc0798c68abf6fa5107452d57879967bcffd3",
      "parents": [
        "cadc5bf4116945a1800061f984d95175e20caba6"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jun 19 16:58:58 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jun 19 16:58:58 2013 -0700"
      },
      "message": "Make op outputting const, for more general logging\n\nChange-Id: Iaf78985ee5558e0b5d32d7bc1cd039eaffc820e5\n"
    },
    {
      "commit": "fb5a41a371e540f402e3dd987b0fbf92d1267902",
      "tree": "4ac7697c19cef2444e9d48fbe32e4de602cecd34",
      "parents": [
        "ff4ea7987714dad4f4d9065902f0ac5fd61833fd",
        "2458939b5f926176a485a3196f59688eed78e858"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 19 23:40:57 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 19 23:40:57 2013 +0000"
      },
      "message": "Merge \"Fix regression: TextureView.setAlpha() was ignored\""
    },
    {
      "commit": "2458939b5f926176a485a3196f59688eed78e858",
      "tree": "fc608a8ae818144c69f679e059adb1fa198e01aa",
      "parents": [
        "31e08e953fe7bdb1b1cbc247156cb6a19917a2f1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 19 12:17:01 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 19 12:17:01 2013 -0700"
      },
      "message": "Fix regression: TextureView.setAlpha() was ignored\n\nChange-Id: I9f43eec0fe23a65dcc1cf9cd0ac1f5e8907786a7\n"
    },
    {
      "commit": "cadc5bf4116945a1800061f984d95175e20caba6",
      "tree": "e56682c2d1325a06ef7a5b4c66444d9876d932b0",
      "parents": [
        "1f54f9246e500042a42fde627ce5c438c8da895d",
        "31e08e953fe7bdb1b1cbc247156cb6a19917a2f1"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 19 19:16:21 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 19 19:16:21 2013 +0000"
      },
      "message": "Merge \"Share Caches\u0027 index buffer with FontRenderer\""
    },
    {
      "commit": "0618148f9031129540631b6d5aa823377e993415",
      "tree": "17acc57cfc16d9e95c0757e15b38f53f2e2fce02",
      "parents": [
        "736d4ddcdcd74165ad292b136468207644b28f9d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 18 16:05:54 2013 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 18 16:10:49 2013 -0700"
      },
      "message": "input: Handle a few extra error conditions.\n\nIt turns out that SOCK_SEQPACKET sockets may sometimes return\nECONNREFUSED or ECONNRESET errors when the peer dies instead of\nthe usual EPIPE.\n\nBug: 9479906\nChange-Id: Ia7e572b08bf63e43ba5aeda58281508beb5f8c73\n"
    },
    {
      "commit": "31e08e953fe7bdb1b1cbc247156cb6a19917a2f1",
      "tree": "a9b1d4f934c40a6c1a6e3c32e10451fc323ebaea",
      "parents": [
        "2d5945e88731787babce1061f44cd54f02eeefc5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 18 15:53:53 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 18 15:53:53 2013 -0700"
      },
      "message": "Share Caches\u0027 index buffer with FontRenderer\n\nThis reduces state changes when we draw 9patches and text together,\nwhich happens *a lot*. Also disable the NV profiling extension by\ndefault since it doesn\u0027t play nice with display lists deferrals.\nTo enable it set debug.hwui.nv_profiling to true.\n\nChange-Id: I518b44b7d294e5def10c78911ceb9f01ae401609\n"
    },
    {
      "commit": "77d55c7e5c7ace27dfe56665a59edc17102418a8",
      "tree": "36023ceec5ffdf3ce19f62a9c983767ea459d91f",
      "parents": [
        "ae2db13e820b68f0bf5a1c7fe933839d1723305c",
        "2d5945e88731787babce1061f44cd54f02eeefc5"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 18 20:08:38 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 18 20:08:39 2013 +0000"
      },
      "message": "Merge \"Take hinting into account when caching fonts Bug #9464403\""
    },
    {
      "commit": "2d5945e88731787babce1061f44cd54f02eeefc5",
      "tree": "ea2e4a98ea66e2caa6b585306017e3ca30c7f032",
      "parents": [
        "e93482f5eac3df581d57e64c2a771a96aa868585"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 18 12:59:25 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 18 13:02:03 2013 -0700"
      },
      "message": "Take hinting into account when caching fonts\nBug #9464403\n\nChange-Id: I26a5f0c17eb27d096717b444d3e18ad1d2b5a43c\n"
    },
    {
      "commit": "49cc5d71192cbd776e237488218aea18a3ed14b1",
      "tree": "d2594687291550519aa6088b55e73400060ff377",
      "parents": [
        "3e0a4633c34aaffffbf0cc63257dd40eb19a80d3",
        "f09b746acb266a849f3421df1604ebec161bb93d"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 22:50:39 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 17 22:50:39 2013 +0000"
      },
      "message": "Merge \"Handle all text bounds as post-translated\""
    },
    {
      "commit": "f09b746acb266a849f3421df1604ebec161bb93d",
      "tree": "bcb905a7d24ff00765c39a0f24dc63e800d2cf39",
      "parents": [
        "4aaf8b3d4b160aea5ceb5ccf799e44c1d5a3f14b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 15:17:11 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 15:17:11 2013 -0700"
      },
      "message": "Handle all text bounds as post-translated\n\nWe were treating immediate mode bounds as pre translate, which is\ninconsistent with using them for quickRejection.\n\nThis fixes the overdraw counter not drawing correctly (since it uses\nimmediate mode drawing.\n\nChange-Id: I1c734d367a00942bd7d9b041822c0a9f284e70a8\n"
    },
    {
      "commit": "36d38cb904556025b76c6d98f9fe2ccfa1c8a304",
      "tree": "ce339566cfe52d099f529241460fcac508fdcda6",
      "parents": [
        "f0542ee466372a29ebaa3c1ea1f362c353a28f4a",
        "d72b73cea49f29c41661e55eb6bfdbc04f09d809"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 21:02:56 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 17 21:02:56 2013 +0000"
      },
      "message": "Merge \"Better handle op size edge cases\""
    },
    {
      "commit": "d72b73cea49f29c41661e55eb6bfdbc04f09d809",
      "tree": "e6782e49ac767cd62e22ca8e44f18eb3977bb1e6",
      "parents": [
        "4aaf8b3d4b160aea5ceb5ccf799e44c1d5a3f14b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 13:52:06 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 13:52:06 2013 -0700"
      },
      "message": "Better handle op size edge cases\n\nbug:9464358\n\nPreviously, empty and unknown sized ops are assumed to fully cover\ntheir clip. This is now corrected such that empty sized ops are\npre-rejected before defer. Additionally, unknown sized ops disable\noverdraw avoidance.\n\nChange-Id: Icf2ce24f98be5ea6299e24ffcf826790373564a1\n"
    },
    {
      "commit": "fb5c9050978afad2c1df570a13a6747f438c27f7",
      "tree": "5ad303b8842436dccb104e46d19aea14d5617cfb",
      "parents": [
        "61e1ca68fa82e5228b5bfcdad8deecd9383fb183",
        "e93482f5eac3df581d57e64c2a771a96aa868585"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 17 20:39:45 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 17 20:39:45 2013 +0000"
      },
      "message": "Merge \"Cancel layer update when a layer is about to be destroyed Bug #9310706\""
    },
    {
      "commit": "e93482f5eac3df581d57e64c2a771a96aa868585",
      "tree": "009afbdf49655b35ee29f857aa554a42c4e96048",
      "parents": [
        "6410c0aaf13c9aec606b90ee942f2ac2d98b1609"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 17 13:14:51 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Jun 17 13:35:03 2013 -0700"
      },
      "message": "Cancel layer update when a layer is about to be destroyed\nBug #9310706\n\nChange-Id: I73eea6314c326f15a979617e3a05b525935f0d3f\n"
    },
    {
      "commit": "61e1ca68fa82e5228b5bfcdad8deecd9383fb183",
      "tree": "8720959ea3bf316d06cd65bba871b79f17aa4c70",
      "parents": [
        "0a1e9611e9d26310642d36b573368affbd1167af",
        "8c6e17c2a9b0ad7864a261cc9a30b9623e20bdcb"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 20:16:37 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 17 20:16:37 2013 +0000"
      },
      "message": "Merge \"Check for layer renderer in flush\""
    },
    {
      "commit": "8c6e17c2a9b0ad7864a261cc9a30b9623e20bdcb",
      "tree": "4072dc4f15f545c8a8cad311ef6e412e6c2a6829",
      "parents": [
        "4aaf8b3d4b160aea5ceb5ccf799e44c1d5a3f14b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 13:02:12 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 13:04:45 2013 -0700"
      },
      "message": "Check for layer renderer in flush\n\nbug:9310706\n\nIn some cases flush will occur after a layer is destroyed. Avoid\ntrying to draw after putting the layer in the layer cache.\n\nChange-Id: I55d66f420e7354fe552c82eb3145a7d91b4441e3\n"
    },
    {
      "commit": "2a0451e54a3c3b397861736c42e42125bd938d43",
      "tree": "c8713e9605f2c2a796f2ed0c1d1a01acf5f09bdd",
      "parents": [
        "4aaf8b3d4b160aea5ceb5ccf799e44c1d5a3f14b",
        "a02c4ed885d97e516f844ddb0a96083f1b45b4cb"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 17 18:11:34 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 17 18:11:34 2013 +0000"
      },
      "message": "Merge \"Fix clip merging behavior\""
    },
    {
      "commit": "5216c3b05fc6c7bacd74be67b932fe3aba89cc8e",
      "tree": "30cbaba31df888eb0ecd10561cf0e8c707c4c34a",
      "parents": [
        "756a53f4e4dc8671287d7a192c619e0e1c627ebd"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 14 16:31:37 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Jun 14 16:31:37 2013 -0700"
      },
      "message": "Merge more 9patches\n\nChange-Id: If8b16af84f0ee42afc406922d15897e51d833e68\n"
    },
    {
      "commit": "a02c4ed885d97e516f844ddb0a96083f1b45b4cb",
      "tree": "74a79cf96d32b37ee36c9308170aa3643093dce5",
      "parents": [
        "5f73a7df6dccd61ee2596ece7e9e3c66a7a58339"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 14 13:43:58 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 14 13:43:58 2013 -0700"
      },
      "message": "Fix clip merging behavior\n\nPreviously, a new op with a clipped side could be added to a\nMergingDrawBatch without considering the batch\u0027s current bounds.\n\nChange-Id: I1b873ecf821bad7cda6630c3f311edd90ac5cc8c\n"
    },
    {
      "commit": "d1f9aaa5d776a94907f9e5b632125648043c47b3",
      "tree": "c008d354fecef5753ea1044dfcdc3a4eb30025a8",
      "parents": [
        "e08d54b92e32244a44283a84d7fae9ca37ff51b5",
        "39a908c1df89e1073627b0dcbce922d826b67055"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jun 14 01:06:29 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 14 01:06:30 2013 +0000"
      },
      "message": "Merge \"Fix various draw ops that may incorrectly not scissor\""
    },
    {
      "commit": "39a908c1df89e1073627b0dcbce922d826b67055",
      "tree": "ff2549616c210443c773bef7c1c35391d8ee6d99",
      "parents": [
        "6db1054692495be7413d0fcc49a0f26c179d6fed"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jun 13 14:39:01 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jun 13 16:16:13 2013 -0700"
      },
      "message": "Fix various draw ops that may incorrectly not scissor\n\nbug:8965976\n\nAlso consolidates quickReject scissor-ing and scissor-less paths.\nRenamed plain \u0027quickReject\u0027 method, as it has sideEffects beyond what\nthe java and skia canvases do.\n\nChange-Id: I4bdf874d3c8f469d283eae1e71c5e7ea53d47016\n"
    },
    {
      "commit": "735760e3c28c18a86ba503031497cb2d5fa81903",
      "tree": "7ab817da533d7a24b2bc743dde4e138ce5e6e9ed",
      "parents": [
        "539d270516819278e74804c29caf66320968648f",
        "7f4307668b10467ee39d41c7ea29cf1ff238a835"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 13 22:10:21 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 13 22:10:22 2013 +0000"
      },
      "message": "Merge \"Add new Query class for debugging\""
    },
    {
      "commit": "7f4307668b10467ee39d41c7ea29cf1ff238a835",
      "tree": "83fdf6fec84c510d33d62c6348e86b821cd996ea",
      "parents": [
        "405436021da156fbe3c5d4de48bdefa564cf7fc0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 13 14:29:40 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 13 14:58:32 2013 -0700"
      },
      "message": "Add new Query class for debugging\n\nThis class can be used to perform occlusion queries. An occlusion query\ncan be used to test whether an object is entirely hidden or not.\n\nChange-Id: Ida456df81dbe008a64d3ff4cb7879340785c6abf\n"
    },
    {
      "commit": "f70119cd776f871a82c94be8522dce02e04c73a8",
      "tree": "44663acd78d347dac3712baf69e3f617eb5b52e5",
      "parents": [
        "6db1054692495be7413d0fcc49a0f26c179d6fed"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jun 13 11:21:22 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jun 13 11:28:45 2013 -0700"
      },
      "message": "Reset batching state when overlap batch deletion occurs\n\nChange-Id: Ifdbee9baaa734e27d15d2b54aa3b3abfffbce1e9\n"
    },
    {
      "commit": "7112fddbe26acb12f478f4e77ff9607b523180b4",
      "tree": "1ecc0d7566dbb88ed71bc36811f7fddb412a6ae6",
      "parents": [
        "512d8fbe51186967d4a3db9f4b3a3b0f335557fe",
        "405436021da156fbe3c5d4de48bdefa564cf7fc0"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Jun 13 01:19:46 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 13 01:19:46 2013 +0000"
      },
      "message": "Merge \"Restore buildLayer()\u0027s old behavior; it\u0027s synchronous again Bug #9193833\""
    },
    {
      "commit": "149b015db9a478c6345cf0528fe4df3c7c2b5110",
      "tree": "249c56eec7775891208a1c3ed0dc23ada71146c7",
      "parents": [
        "af0fa4fd739aae14733615b6ee9a6b9ca025c628",
        "28ce94a4ffc7576f40776d212f1ada79fafaa061"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jun 13 00:37:02 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 13 00:37:02 2013 +0000"
      },
      "message": "Merge \"Overdraw avoidance and merging of clipped ops\""
    },
    {
      "commit": "9846de68f1b4f2720da421e5242017c28cfc93ed",
      "tree": "e2321a0dc6a3e5b4f5024d470755fda3e3df0d54",
      "parents": [
        "97f41383eb2bb098767ca153e470009fea810540"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jun 12 16:23:00 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jun 12 16:26:34 2013 -0700"
      },
      "message": "Remove crash workarounds, add logging\n\nbug:9321162\nChange-Id: I748c27f979af1a303be01db29aedcbad6d608c38\n"
    },
    {
      "commit": "405436021da156fbe3c5d4de48bdefa564cf7fc0",
      "tree": "339d70e2c2e90f87a5c303e7167fe9db0508ed64",
      "parents": [
        "97f41383eb2bb098767ca153e470009fea810540"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 12 15:31:28 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 12 15:31:28 2013 -0700"
      },
      "message": "Restore buildLayer()\u0027s old behavior; it\u0027s synchronous again\nBug #9193833\n\nChange-Id: I4ee07e65c0a8967f0b55da030ecaad6dfc46136f\n"
    },
    {
      "commit": "28ce94a4ffc7576f40776d212f1ada79fafaa061",
      "tree": "644d590fb3ccb5db34ecf68bb3360923f3d65c29",
      "parents": [
        "97f41383eb2bb098767ca153e470009fea810540"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri May 31 11:38:03 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jun 12 14:46:52 2013 -0700"
      },
      "message": "Overdraw avoidance and merging of clipped ops\n\nbug:8951267\n\nIf an opaque op, or group of opaque ops covers the invalidate region,\nskip draw operations that precede it.\n\nClipped operations may now be merged, but only if they share a\nclipRect - this is a very case for e.g. ListView, where all background\nelements may now be a part of the same MergingDrawBatch.\n\nIt is this more aggressive merging that groups together clipped\nbackground elements in the ListView case, enabling the overdraw\navoidance skipping the window background.\n\nChange-Id: Ib0961977e272c5ac37f59e4c67d828467422d259\n"
    },
    {
      "commit": "1e4795ab64755bdae48fe7b8cd78f204c9022791",
      "tree": "d5a5dc28396667854f0bfc5719844a9c18b716af",
      "parents": [
        "fc74f85f2e54ee561888dfef57cd70cb6ab6f2d1",
        "4c2547fa9244e78115cde0a259291053108c3dc7"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Jun 12 00:23:27 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 12 00:23:27 2013 +0000"
      },
      "message": "Merge \"Avoid 9patch cache lookups when possible\""
    },
    {
      "commit": "4c2547fa9244e78115cde0a259291053108c3dc7",
      "tree": "4337937e216918e4febe861daa7ef093b99aff03",
      "parents": [
        "fadd2081443dd2f59f8e8143256a34b7485fe72e"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 11 16:19:24 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Tue Jun 11 17:14:59 2013 -0700"
      },
      "message": "Avoid 9patch cache lookups when possible\n\nThis optimization saves up to 0.3ms per frame on the Play Store\u0027s\nfront page, on a Nexus 4 device.\n\nChange-Id: Iaa4ef33c6e3b37e175efd5b9eea9ef59b43f14f3\n"
    },
    {
      "commit": "e13fb01d25b22f46206115faff2c7787d330f0d1",
      "tree": "72eaa11693bb1e5fdc1c53e8d944b1e423c673d6",
      "parents": [
        "ffcec1d4bd0f88a41b57493cf342b28f130d38e2",
        "8cb26c099dc6357340141c9d81a1131ee404ae41"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jun 11 14:13:32 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 11 14:13:32 2013 -0700"
      },
      "message": "am 8cb26c09: am cb5d644f: Merge \"Workaround possible use after delete\" into jb-mr2-dev\n\n* commit \u00278cb26c099dc6357340141c9d81a1131ee404ae41\u0027:\n  Workaround possible use after delete\n"
    }
  ],
  "next": "9abddd54d4177d1a9790889046407da13aa7077b"
}
