)]}'
{
  "log": [
    {
      "commit": "fca52b7583d1e5f5ff8ed06554875d2a30ef56fa",
      "tree": "e383a2db169421a722fa9c559dd01904e83fa504",
      "parents": [
        "aa1cd25db72297f13539928e8aa45ba992f2f230"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Apr 28 11:45:59 2015 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 26 17:53:16 2015 -0700"
      },
      "message": "Use path intersection instead of saveLayer+mesh to mask projected ripples\n\nbug:14297149\n\nSaveLayer\u0027s performance cost is high, and proportional to the surface\nbeing projected onto. Since ripples (even unbounded ones) are now\nalways projected to the arbitrary background content behind them, this\ncost is especially important to avoid.\n\nThis removes the last semi-secret, saveLayer from the projected\nripple implementation.\n\nAlso fixes the HW test app to correctly demonstrate this projection\nmasking behavior.\n\nAdditionaly, alters PathTessellator to gracefully handle\ncounter-clockwise paths, and simplifies the work done by\nShadowTessellator to ensure all of its paths are counterclockwise.\n\nChange-Id: Ibe9e12812bd10a774e20b1d444a140c368cbba8c\n"
    },
    {
      "commit": "b0772a6cc5ab09eb40cbb1fd6c7e0293ae3d2efe",
      "tree": "c54f01c945d768c13edcd5e6bccd5b435489f237",
      "parents": [
        "592f8808951a292848a815a8b84df7e1b425d11f"
      ],
      "author": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Mon Mar 16 14:35:55 2015 -0400"
      },
      "committer": {
        "name": "Derek Sollenberger",
        "email": "djsollen@google.com",
        "time": "Mon Mar 16 15:28:16 2015 -0400"
      },
      "message": "Add conic support to HWUI path tessellator.\n\nbug: 19732872\nChange-Id: Ic3ae46f746325468ab972c9daf829099165eb596\n"
    },
    {
      "commit": "117bdbcfa3e8306dad21e7e01fa71b00cdfa7265",
      "tree": "aa54e4a5538818cd946bbd6e7eb771b83d0cfebd",
      "parents": [
        "34725687748cc2b4ace2bdb49becfdcd569e9a5d"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Feb 05 10:12:38 2015 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Feb 06 13:42:25 2015 -0800"
      },
      "message": "Glop ColorFilter \u0026 VertexBuffer support, initial enable\n\nEnables Glop rendering for supported Rects and VertexBuffers\nAlso removes unused Query object\n\nChange-Id: Ibe227bc362685a153159f75077664f0947764e06\n"
    },
    {
      "commit": "51d6a3db97bdd5315f1a17a4b447d10a92217b98",
      "tree": "80803f8d2a5507e2d29bd58c7243a23fca343454",
      "parents": [
        "e84a208317e0ed388fcdad1e6743c7849acb51b0"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Dec 22 17:16:56 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Dec 23 16:53:56 2014 -0800"
      },
      "message": "Cleanup various clang warnings, use unique_ptrs in several places\n\nChange-Id: I347904b25e51fcc7de14b1e72f1acd0f6ba26f3f\n"
    },
    {
      "commit": "b28ff487fb6db4a44e4d18aa17d8253f00a63bb6",
      "tree": "3e86f055fb0dd069bc41ba7c1270780fa34e9aaf",
      "parents": [
        "56dd295b69a78017baf44491cb27fcaaf8101f1c",
        "5e6cf24213c5eacc9d3e3c8da5826be4a23f22af"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Nov 12 13:24:42 2014 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Nov 12 13:24:42 2014 -0800"
      },
      "message": "resolved conflicts for merge of 5e6cf242 to lmp-mr1-dev-plus-aosp\n\nChange-Id: If21bd328a5c8ea3474abfe624e910d4830c72dc9\n"
    },
    {
      "commit": "ff1d8a6635fb6441615778a47e2881129574a5b1",
      "tree": "d2f490ec6a546461eda288e4383a50796d68059c",
      "parents": [
        "34acb4c8d4abe1c4f580b85ddc84b18b7e38e417"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Nov 11 19:31:26 2014 -0800"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Nov 12 11:22:20 2014 -0800"
      },
      "message": "Move frameworks/base over to libc++.\n\nBug: 15193147\nChange-Id: I96109d2d383f0c8a4aaa611f29fcf887afb3c69e\n"
    },
    {
      "commit": "1272887050a269d6d506b42099c2857847ad100b",
      "tree": "6770318c0302a4e486224bb87b46dcb1f9a68047",
      "parents": [
        "cba06c2272c8bce7d10b2a7ee762d12043f3252a",
        "1d03b816fea1b964cc5db4d11ddcba9b25f45d99"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 10 20:54:07 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 10 20:54:07 2014 -0800"
      },
      "message": "resolved conflicts for merge of 1d03b816 to lmp-mr1-dev-plus-aosp\n\nChange-Id: Ib673768fe5fc03615626ef4b10590e5317f22172\n"
    },
    {
      "commit": "1e19674107e1aa2224c2b8c7d12bfa057efe80ea",
      "tree": "512f1a8a715497c2cde26d6ca070d923fd9c3a45",
      "parents": [
        "487ae9b8dc3e08c1a830d519a801a07cd59c8f2b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 10 15:23:43 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 10 15:58:04 2014 -0800"
      },
      "message": "Frameworks/base: Wall Werror in libs/hwui\n\nTurn on -Wall -Werror in libs/hwui. Fix errors.\n\nChange-Id: I74962d08c889712dacbd0d86d6760fc10802b6bd\n"
    },
    {
      "commit": "b7c26562d08bf72882eeca268a1bb51ea579653d",
      "tree": "887cda6be9347c0edc36ac9f78ffc3a6925ff58e",
      "parents": [
        "9acb9598b7bd18003ee3abe656818972dad03a29"
      ],
      "author": {
        "name": "Rob Tsuk",
        "email": "robtsuk@google.com",
        "time": "Mon Nov 03 16:29:03 2014 -0800"
      },
      "committer": {
        "name": "Rob Tsuk",
        "email": "robtsuk@google.com",
        "time": "Tue Nov 04 00:31:45 2014 +0000"
      },
      "message": "Make points drawn with default paint visible\n\nWhen no stroke width is set, use 0.5 instead of 0.25 to make\nsure the resulting rectangle spans at least one pixel.\n\nBug: 15455111\nChange-Id: Id0a4b6d014c542ffc98b13a032f88ae0ce69b3a1"
    },
    {
      "commit": "21bcfc4ff8642771bf42b264e1524ef47b00ae22",
      "tree": "72087e4f69f99e45a8706d70c9abc40dbbc891a0",
      "parents": [
        "95e71085e2d6f9482679a2a5c34d3d7fbc7d39c6"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Sep 08 18:43:30 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Sep 08 18:43:30 2014 -0700"
      },
      "message": "Fix tessellation bounds computation\n\nbug:17401066\n\nNow correctly accounts for scale, both in hairline case (where scale\nneeds to be accounted for), and in standard case (where scale\nshouldn\u0027t be applied, since bounds are in local space)\n\nChange-Id: I597a20834dce42ddb741b46e4c1a4f3169a48ccc\n"
    },
    {
      "commit": "74cf7e6a25c6d7b331c231b7bc2512044f9d2950",
      "tree": "18e658508fa40721ce7c9ceb4308d875c8d718f3",
      "parents": [
        "d224a9dfd2d2f1977e7a40ba3bbfb42a4165aedc"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Aug 07 14:34:46 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Aug 07 22:26:55 2014 +0000"
      },
      "message": "Cap scales used for tessellation with minimum and maximum\n\nbug:15615144\nChange-Id: I3e833864af3a7b34e444bd13db34b6c90496a8b6\n"
    },
    {
      "commit": "1aa5d2d7068147ff781cfe911a93f01593a68c79",
      "tree": "63d8676a5a062deb3a95caee0c5a39ce19471df2",
      "parents": [
        "71d34ec5bed6fe723cf5f85c1ffb64e0d9380967"
      ],
      "author": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Jul 24 13:38:28 2014 -0700"
      },
      "committer": {
        "name": "John Reck",
        "email": "jreck@google.com",
        "time": "Thu Jul 24 14:28:08 2014 -0700"
      },
      "message": "Fix ALL compile warnings\n\n All warnings/errors fixed for GCC \u0026 Clang\n\nChange-Id: I2ece3a136a5ae97a9acc3069537ed986238b5fd3\n"
    },
    {
      "commit": "c93e45cf045f41aea95f856173e4043d988a5a5c",
      "tree": "d1a400594fda90adf629e9f781d340ddc81a4cf0",
      "parents": [
        "94ca6cd7c932689b8018d1b118ddcd6b7a9eab27"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jul 16 10:15:56 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jul 23 11:04:53 2014 -0700"
      },
      "message": "Build layer damage bounds for shadows\n\nbug:15538815\n\nChange-Id: I703afeb7e31c28002bd1aff9ce448ec8cdc4e70d\n"
    },
    {
      "commit": "fe02b4b344c37200486d8afc972560fb550cb17e",
      "tree": "315e56026a2e940e38a52b562695a392b909ce51",
      "parents": [
        "6b2df21ecacfa6826a85cabdf8d6fe0e81fe11d9"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 16 16:34:29 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jun 17 12:23:29 2014 -0700"
      },
      "message": "Add abort logging for huge scales and tessellation recursion depth\n\nbug:15615144\nChange-Id: I275732eb97f9d5179beed23eecd2ee3cc7112e10\n"
    },
    {
      "commit": "9c3dd62d0fbec40ea15b0a56a01bcfefa3ceabdd",
      "tree": "931cde3fd3a6ee56fb54da6c8c97fa51b19f3fcf",
      "parents": [
        "ffdd37ff142ade5de6cc97f77087194892fd9714"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jun 11 17:24:51 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jun 11 17:24:51 2014 -0700"
      },
      "message": "Limit path approximation recursion depth\n\nbug:15369119\nChange-Id: I6f009f5e8790129e1aa8a51e1fc6cdd1415dd617\n"
    },
    {
      "commit": "05f3d6e5111fd08df5cd9aae2c3d28399dc0e7f5",
      "tree": "14df3cad82b02a886b8e3a04fd4ec249e1d403e4",
      "parents": [
        "faecafce62ca39a7693669f7c9eabf2d71c633cf"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Jun 02 16:27:04 2014 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Jun 10 01:53:17 2014 +0000"
      },
      "message": "Tessellate on worker threads\n\nTessellate and cache (where possible) shadow and round rect\ntessellation tasks.\n\nChange-Id: I2cfda8e11d83d51ea74af871235cf26e8f831d40"
    },
    {
      "commit": "87f9df880e4a5bfba65d2ed413b3ead649595129",
      "tree": "10a87a3bc0133d77b36397ca0fd8455693a3399b",
      "parents": [
        "16340670aff0ec980fff4354d785a38b11c33d3b"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 07 14:34:42 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Mar 07 14:34:55 2014 -0800"
      },
      "message": "Update tessellation tracing\n\nChange-Id: I6c73f2467817412d9936dde217df9938a6884003\n"
    },
    {
      "commit": "15a07a21eb33e8ca1c7444944fe0541a53380c0c",
      "tree": "fa5dd5158982a1ef11d105ac463fb34b07087147",
      "parents": [
        "bb615a6ffbc8a051007163916f1ed085d10b5327"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Sun Jan 26 13:43:53 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Sun Jan 26 13:43:53 2014 -0800"
      },
      "message": "Use path outlines to define shadow shapes\n\nFixes the simplifying assumption that shadow casters were always\nrectangular.\n\nJava side APIs + plumbing to pass down correct shapes still need to be added.\n\nChange-Id: Ic4fee90af15679951a44bb5cc6ae454b98c4c194\n"
    },
    {
      "commit": "d218a92c0afb8c0d98135b20b52ac87236e1c935",
      "tree": "3eef804e9948ca463e720ac636db46b2637fdabb",
      "parents": [
        "8523706236b0b2536ed4359d92ec6ccdca060d78"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 02 17:13:34 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Jan 03 13:55:08 2014 -0800"
      },
      "message": "Use const where possible for drawing parameters\n\nThey should never be modified by a Renderer, only read and copied.\n\nChange-Id: I9d8d55dca19115ee9dfeb2bb3f092ba2fb327cd4\n"
    },
    {
      "commit": "564acf7c9bff822f608cda0d5df0a64a9f9aaefd",
      "tree": "93a3203fc99098dedd4df5660c96d6800c97ae93",
      "parents": [
        "e459367a3a49cbe94dfe38c50369431614dddc9c"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 02 16:46:18 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 02 16:52:32 2014 -0800"
      },
      "message": "Fix Clang warnings/errors\n\nFix several build warnings (struct !\u003d class, int !\u003d size_t) and errors\n(variable leng non-POD arrays).\n\nChange-Id: I70b4e784365514303d8954bfcb1f39d7c22c1321\n"
    },
    {
      "commit": "d6b65f67717025b1162f86f04e2caa5723566cac",
      "tree": "4905e0300916badc0fadf76018bf4d53fbe56669",
      "parents": [
        "14e513058ed4168c94e015638d16f5f87fd8063a"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Jan 01 14:45:21 2014 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Thu Jan 02 12:57:41 2014 -0800"
      },
      "message": "Use const access to snapshot from OpenGLRenderer\n\nAdditionally, move clipping methods to StatefulBaseRenderer\n\nChange-Id: Iff232bf16fc1ad3b7d89493da6d8915db7bc5e4f\n"
    },
    {
      "commit": "11a7567d6f0e797d7053c338b55c499bee3d1e42",
      "tree": "09b846d7576d1e797374bce5eb7836b25a088ef9",
      "parents": [
        "d83adf00ae6cb073fa0e4fbb837c2b87d824ec4f"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Dec 16 17:08:15 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Dec 16 17:08:15 2013 -0800"
      },
      "message": "Use vertex assignment instead of manual copy\n\nChange-Id: I36c806e3370abca61e5bf5064f0f1a776a9ce487\n"
    },
    {
      "commit": "f0a590781b2c3e34132b2011d3956135add73ae0",
      "tree": "336c6ca241497181743671e2f6e1af4405ab0237",
      "parents": [
        "e6a408ed31a7d1fb8ace6b80487d179b2f085fd3"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue Nov 19 18:00:46 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Fri Nov 22 11:36:12 2013 -0800"
      },
      "message": "Clean up quick rejection, especially surrounding points + lines.\n\nbug:4351353\n\nquickReject and quickRejectNoScissor have been renamed and refactored:\n- to make the scissor side effect clear and explicit\n- dangerous methods no longer public\n- to make the simple quick reject check logic const\n- simple quick reject is now conservative\n\nThis CL also fixes several issues with line and point quickRejection -\nsub-pixel and hairline lines are much less likely to be incorrectly\nrejected, especially at small canvas scale.\n\nAdditionally, alpha modulation for AA points \u003c 1px in size is now\ncorrect, dumplicating SW behavior (similar to lines and stroked\nshapes work).\n\nChange-Id: Ibb0710c721b9fb415d05acf54dd3d2b4d602156a\n"
    },
    {
      "commit": "3380cfdc77100e87aa8390386ccf390834dea171",
      "tree": "cc6b223258e05a062b1b075f414bcf49ad71a051",
      "parents": [
        "9a9880856af321d0db45e047f21154a0f2010511"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 15 16:57:57 2013 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Aug 15 17:00:10 2013 -0700"
      },
      "message": "Replace float arrays with readable names\n\nChange-Id: I32a8be560b60a4ac5cbee2fec4574b2c5df9f825\n"
    },
    {
      "commit": "6d29c8d5218cac0fb35f3b7c253f2bdebd44f15a",
      "tree": "e7b76c068ff3e8485fdc164118914ee3b53a2368",
      "parents": [
        "0ace0aa7d643b5b9952d32827575f041ba563c58"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed May 08 18:35:44 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Tue May 14 14:12:55 2013 -0700"
      },
      "message": "Add tessellation path for points\n\nbug:4351353\nbug:8185479\n\nPoint tessellation is similar to line special case, except that we\nonly tessellate one point (as a circle or rect) and duplicate it\nacross other instances.\n\nAdditionally:\n\nFixes square caps for AA\u003dfalse lines\n\nCleanup in CanvasCompare, disabling interpolation on zoomed-in\ncomparison view\n\nChange-Id: I0756fcc4b20f77878fed0d8057297c80e82ed9dc\n"
    },
    {
      "commit": "e7c69c6fe3eac1fb01126ede550e5dc32979804a",
      "tree": "4d471a579f89582c6b67b3016aaf8c0b9cf971e4",
      "parents": [
        "0102443c4f52f2e15fd731c452f0c4745312d448"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Apr 03 09:55:48 2013 -0700"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Apr 03 09:55:48 2013 -0700"
      },
      "message": "Account for hairlines in quick rejection logic\n\nbug:8531373\nChange-Id: I35444014f23fc61da687694fccc0d13bce718793\n"
    },
    {
      "commit": "19a390bff348cd379caba1265faec77fcff29200",
      "tree": "5b07f005526656b38e39f9c3b277985bb020fae5",
      "parents": [
        "be1a8cda3e8113d1fd3a6e56d8bc6c4f2d350423"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 27 15:43:26 2013 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 27 15:43:26 2013 -0800"
      },
      "message": "Correct sub-hairline tessellation threshold\n\nChange-Id: Id868d41a36db5b4daa762d84b6329f9c31916bce\n"
    },
    {
      "commit": "65cd612face362d054a85d0f7e5881c59cd523be",
      "tree": "8d71fb22d3a6dd515456a44b0d1010c906abb774",
      "parents": [
        "c93c6aa5553203f05df871804517885fcc071cfd"
      ],
      "author": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Mon Dec 10 17:56:27 2012 -0800"
      },
      "committer": {
        "name": "Chris Craik",
        "email": "ccraik@google.com",
        "time": "Wed Feb 06 15:35:12 2013 -0800"
      },
      "message": "Add cap tessellation support\n\nbug:7117155\nbug:8114304\n\nCurrently used for lines (with and without AA) and arcs with useCenter\u003dfalse\n\nAlso removes 0.375, 0.375 offset for AA lines\n\nChange-Id: Ic8ace418739344db1e2814edf65253fe7448b0b0\n"
    }
  ]
}
