)]}'
{
  "log": [
    {
      "commit": "9b18b515909354d7b48c8ebc33ec38e2c6bbdf37",
      "tree": "deba4a28ee5731ba310b795c4f93db1d66017f52",
      "parents": [
        "f16336790bca9d3e946553f2e5a16e14bb9dbc3e"
      ],
      "author": {
        "name": "Thomas Tafertshofer",
        "email": "tafertth@google.com",
        "time": "Thu Jul 12 15:58:07 2012 -0700"
      },
      "committer": {
        "name": "Thomas Tafertshofer",
        "email": "tafertth@google.com",
        "time": "Fri Jul 13 17:44:00 2012 -0700"
      },
      "message": "EGL 1.4 API without @hide\n\nChange-Id: If03d23082b011aaba41594712601495dcbd70f6a\n"
    },
    {
      "commit": "6b1e838fc16d397359f82c3a4f5700f1ed7dd910",
      "tree": "318d0b9e0476cc6fb8a9dc997539f7a06957bf11",
      "parents": [
        "7c67fcb2f983c08d9ab1ab65b0b877472d98dc06"
      ],
      "author": {
        "name": "Thomas Tafertshofer",
        "email": "tafertth@google.com",
        "time": "Tue Jul 03 13:37:35 2012 -0700"
      },
      "committer": {
        "name": "Thomas Tafertshofer",
        "email": "tafertth@google.com",
        "time": "Tue Jul 10 15:48:30 2012 -0700"
      },
      "message": "EGL 1.4 bindings generated by glgen\n\nChange-Id: I1c3da57101f4ea089a12f1796f25b72d6852141e\n"
    },
    {
      "commit": "cee059dc764a57860da6b1574952089680b5ddc6",
      "tree": "3ab06ffe788422219fbe225af7c70c66a3692d63",
      "parents": [
        "6e0ac89f3896369363698801e75671b3478e8d4f"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Apr 16 12:25:36 2012 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Apr 16 12:25:36 2012 -0700"
      },
      "message": "Improve GLSurfaceView Pausing.\n\nWhen pausing we want to do three separate things, in order:\n\n + release the EGL surface\n + optionally release the EGL context\n + optionally terminate Egl\n\nPreviously we would only do these things if we had an EGL surface. But\nit is possible that we don\u0027t have an EGL Surface, but still have an EGL\ncontext. And in that situation we still want to release the EGL context.\n\nNow we check the preconditions for the three cases separately.\n\nBug: 6338235\nChange-Id: I804683b3d5c136cc98ea3f5051067eea18152ddf\n"
    },
    {
      "commit": "7dee7a38baafcbdd26ff116eeec862ec661dedec",
      "tree": "d224d4d6becaeea454f8a38af58a5afd7e3031ce",
      "parents": [
        "c38cf4c7dbe7d96255d42dabf8ca801830813f5e"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Apr 10 05:56:19 2012 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Apr 10 06:05:42 2012 -0700"
      },
      "message": "Notify monitor waiters when changing mSurfaceIsBad value.\n\nOtherwise the waiters might not wake up, leading to ANRs.\n\nBug: 6307843\nChange-Id: I0646b4e8368f80dbff46342f75709992796973fd\n"
    },
    {
      "commit": "7d73df83f9a28950f404e957eb2e4ea1e8525c55",
      "tree": "6f46441836e2d5bf35556888a30d5a41c0b9d701",
      "parents": [
        "b0721d4b09c7a3553bd1e4f42402b669a097eab9"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Mar 29 16:24:58 2012 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Mar 29 16:24:58 2012 -0700"
      },
      "message": "Try to survive a failure return from eglMakeCurrent.\n\nAssume a failure in eglMakeCurrent occurs because the SurfaceView\nsurface has been destroyed.\n\nSee b/6257956 for an example of this failure happening during rotation\nstress testing.\n\nChange-Id: I4618703b5291aba3a3f0c6bd83c3435a67b97d33\n"
    },
    {
      "commit": "db6c78b5bdf264abe8f6de97f67ca5e90fb6a05a",
      "tree": "cf23eb1f3affd7590cc1ac34d8f53bd66d4814e7",
      "parents": [
        "db2026000a1d832b60d73e0a046bc8137fbb1960"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Mar 29 12:23:57 2012 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Mar 29 12:23:57 2012 -0700"
      },
      "message": "Make GLSurfaceView handle eglSwapBuffers errors more robustly.\n\nA careful reading of the EGL spec, as well as experience with many\ndifferent EGL drivers, has shown that it is error prone to attempt to\ndiscriminate between different error conditions.\n\nWe now treat any error besides EGL_CONTEXT_LOST as an indication that the\nEGL context is in a bad state, most likely due to the window manager\nhaving removed the underlying surface flinger surface.\n\nIn addition, we changed the way we deal with this kind of error:\nPreviously we would ignore the error and keep rendering. But if the\nEGL context and surface has become invalid, it would be better to\nstop drawing. We now stop drawing until the surface view surface is\nrecreated.\n\nSee b/6032663 for an example of this problem affecting the GMM app,\nbut note that GMM is using their own version of GLSurfaceView, so this\nchange won\u0027t help them directly. They\u0027ll have to make a similar change\nto their version of GLSurfaceView.\n\nChange-Id: Iffe3e1e3a3c7a91d03140fd34391eadeaecf777e\nSigned-off-by: Jack Palevich \u003cjackpal@google.com\u003e\n"
    },
    {
      "commit": "f7f4c20605badb95f99e3f1f609458a9e4fe0c1a",
      "tree": "099c7ac8f5777c3ee7d00849804bdcd70dd92c58",
      "parents": [
        "2ffead9cf2cb57d21929c354e547a428b8be54d2",
        "8b854cd74bd29b6bb0b4c681490a3a97b1739289"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Mar 22 11:47:30 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 22 11:47:30 2012 -0700"
      },
      "message": "Merge \"Remove EGL context limit for Adreno GPUs.\""
    },
    {
      "commit": "8b854cd74bd29b6bb0b4c681490a3a97b1739289",
      "tree": "50be755ac4b7a61215892eea9ef0289fdbfb1180",
      "parents": [
        "6c25ffb77069a9f39884b8e91e1810254c3e2f03"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Mar 19 11:17:40 2012 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Mar 19 11:17:40 2012 -0700"
      },
      "message": "Remove EGL context limit for Adreno GPUs.\n\nThis change allows Adreno GPUs to have multiple EGL contexts. We had\nto limit this in earlier versions of Android due to limitations in\nthe Adreno GPU driver (only 8 EGL contexts allowed system wide.)\nThat brand of GPU has improved its EGL drivers to support multiple\nEGL contexts in more recent versions of their drivers used on more\nrecent versions of Android.\n\nBug: 6142005\nChange-Id: Id3030466be9a3d9fbe728f1785378c1f05da98fe\n"
    },
    {
      "commit": "48a59c3d852867f13da4138ed2de94044febb99e",
      "tree": "ca10c17f3ea1c968deb43703dac57b003a3c0d7e",
      "parents": [
        "6c25ffb77069a9f39884b8e91e1810254c3e2f03"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Mar 15 11:50:45 2012 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Mar 15 11:50:45 2012 -0700"
      },
      "message": "Ignore EGL_BAD_CURRENT_SURFACE errors from eglSwapBuffers\n\nCertain EGL device drivers are generating this error, so we need to\nsurvive it. (It\u0027s not clear from the EGL spec whether this is a\nlegitimate error code, but since it\u0027s being generated we need to\nhandle it.)\n\nRemove logging of expected errors from elSwapBuffers. We expect these\nerrors to happen, and are handeling them by ignoring them.\nNo need to clutter the logs.\n\nBug: 6083241\n\nChange-Id: If17dcfbb68d3009b92cf95a448728ccb47023b51\n"
    },
    {
      "commit": "64d10a1da0a702ffeb086ad9c4a632f2712f1dad",
      "tree": "ad00d68fc373d8bdeab43b2fc83f81a983c2e659",
      "parents": [
        "df0d3ab4d03d8738a606b35bf9673950844aef4a"
      ],
      "author": {
        "name": "Siva Velusamy",
        "email": "vsiva@google.com",
        "time": "Fri Mar 09 14:21:28 2012 -0800"
      },
      "committer": {
        "name": "Siva Velusamy",
        "email": "vsiva@google.com",
        "time": "Fri Mar 09 15:25:29 2012 -0800"
      },
      "message": "Expose a function to set OpenGL Trace level.\n\nThis patch adds a function setGlDebugLevel() to libEGL, and\nexposes it to the Java layer at android.opengl.GLUtils.enableTracing().\n\nChange-Id: Ia5abb130bc32fcfe3ab25b0a0a5283a54c54f357\n"
    },
    {
      "commit": "97eda365fcf7209b56e0a52e01f7fb3352e4fa63",
      "tree": "3de2b0218e47eb7aad4b45eddc186405ac6ffa74",
      "parents": [
        "91ec0b722f659bb5e4bcc64339f2fbbe30a31287"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Feb 17 13:08:35 2012 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Fri Feb 17 13:08:35 2012 -0800"
      },
      "message": "Remove unused private APIs\n\nChange-Id: Ib22005c7ed9923120089a1f1c806bca55bb90967\n"
    },
    {
      "commit": "0219af277e5e1ae483c9690cffce33f185b02246",
      "tree": "60dc92432f4b262fafda8648e18850b25a58e9ef",
      "parents": [
        "4e2ecdd8a78f25f4c234877d5321ebd4e4c0e8f7",
        "ea54d0dc0dfeef5560fea04667804413d522025f"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Nov 21 21:23:49 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 21 21:23:49 2011 -0800"
      },
      "message": "am ea54d0dc: am 723218b4: Merge \"Hide ManagedEGLContext until we are sure this is the correct API.\" into ics-mr1\n\n* commit \u0027ea54d0dc0dfeef5560fea04667804413d522025f\u0027:\n  Hide ManagedEGLContext until we are sure this is the correct API.\n"
    },
    {
      "commit": "3526b00a53a2582a51ff8b98ac1400a48f351107",
      "tree": "57b86400dcced49117b636cbf6598247adfa1739",
      "parents": [
        "79de26ea20ddd65e7c361e138a6f992fd3802c22",
        "c26e4d18a20ab0b3e769fb3e547994f1c27d6713"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Nov 21 21:08:42 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 21 21:08:42 2011 -0800"
      },
      "message": "am c26e4d18: am 8cd39e3a: Merge \"Notify views when EGL resources are about to be destroyed Bug #5639899\" into ics-mr1\n\n* commit \u0027c26e4d18a20ab0b3e769fb3e547994f1c27d6713\u0027:\n  Notify views when EGL resources are about to be destroyed Bug #5639899\n"
    },
    {
      "commit": "dccf73a50cb2a219182e141bac1d9da82fdaf4d7",
      "tree": "9b49d3a96584d84bc8453eec54ebd4dce6f1313e",
      "parents": [
        "e7005ec9582f11744fa74d9c5c9562f9e4be04dc"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Nov 21 18:24:23 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Nov 21 18:27:21 2011 -0800"
      },
      "message": "Hide ManagedEGLContext until we are sure this is the correct API.\n\nChange-Id: If54942d342ca8ea348e10231b2aed3e5d3bd701b\n"
    },
    {
      "commit": "31f2c2e94656530fbf6282803e62edb47e9a894d",
      "tree": "fddc1ff144eccb20909107456ebd37325c86d8be",
      "parents": [
        "7859c1842c1f2e3c43415dfb5337a0b005bdb1c4"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Nov 21 10:55:41 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Mon Nov 21 10:55:41 2011 -0800"
      },
      "message": "Notify views when EGL resources are about to be destroyed\nBug #5639899\n\nChange-Id: I7c5d8bebf02294426f5b3ab1358a31c38a4fd064\n"
    },
    {
      "commit": "fa1a6eb584dde49d424fa53a995a6d0dbd45155c",
      "tree": "dd338b7c9df14f53b01e8d58209c1366eda3ceb3",
      "parents": [
        "e761f1e58f3946b01f9715e145b402db16f81367",
        "0272e60060162d2c32aec02d9cd1414dbbe14782"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Nov 18 02:37:22 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 18 02:37:22 2011 -0800"
      },
      "message": "am 0272e600: am a37a78e2: Merge \"GLES: add image external enums\" into ics-mr1\n\n* commit \u00270272e60060162d2c32aec02d9cd1414dbbe14782\u0027:\n  GLES: add image external enums\n"
    },
    {
      "commit": "a37a78e2efe54892a744adfc6330c2d2179dee21",
      "tree": "ac24599f75ff1e7d0ed4436cc60994f68f4498e6",
      "parents": [
        "31b0c6872dcec0759ff0dbbcfc6bf1e51d3e0f12",
        "9726b1b54b45f9a165a12bc4738f22c5070a6657"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Nov 17 15:47:28 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 17 15:47:28 2011 -0800"
      },
      "message": "Merge \"GLES: add image external enums\" into ics-mr1"
    },
    {
      "commit": "22da9a8beb4af362fbe9a108234d40b341c8d9fb",
      "tree": "b096415a33715ac09b18f9d2efecfbcd8cc13c00",
      "parents": [
        "9ab5fa0aaadcfdc27e993caceececebb8141e01f",
        "80b3cd6bc608c5929096e3407de2b157be925d3e"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Nov 17 11:05:30 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Nov 17 11:05:30 2011 -0800"
      },
      "message": "Merge \"Fix potential GLThread / GLSurfaceView memory leak.\""
    },
    {
      "commit": "77c5f4def49357a89abd9849b0bab950179d71f4",
      "tree": "0048a35fc889732713233de3723464f86b6128e0",
      "parents": [
        "7cd2b19a926224dee2b2e12f37c1d71ce658bf97",
        "9aa6bd1c34fe3583fe31f283a6415e84fec12567"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Nov 17 05:46:34 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 17 05:46:34 2011 -0800"
      },
      "message": "am 9aa6bd1c: am 717a25dc: Add new ManagedEGLContext class to help apps participate in memory trimming.\n\n* commit \u00279aa6bd1c34fe3583fe31f283a6415e84fec12567\u0027:\n  Add new ManagedEGLContext class to help apps participate in memory trimming.\n"
    },
    {
      "commit": "717a25dc2a411edb548859cd6870363346c71b01",
      "tree": "69bbc13b92fbef8dd34df6473897d812cea0b4eb",
      "parents": [
        "4c6a65bc319feab120d40553d93b160908db2f6d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Nov 15 18:59:59 2011 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Nov 16 14:04:53 2011 -0800"
      },
      "message": "Add new ManagedEGLContext class to help apps participate in memory trimming.\n\nThis class provides an API for an application to know when it is time to\ndestroy its EGL context when memory is being trimmed.  By having this in\nthe framework, we can still detect whether it will be useful to destroy\nany EGL contexts (because we know if doing so will destroy all of them).\n\nChange-Id: I1eac8d640052778052926b875c7928008f752182\n"
    },
    {
      "commit": "80b3cd6bc608c5929096e3407de2b157be925d3e",
      "tree": "a56cf5d63a9e83b2375c9dd8fd7727f8ed5b4322",
      "parents": [
        "78137d77991f129b349b258474ef8b5133b300d9"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Nov 15 14:51:27 2011 -0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Nov 15 14:51:27 2011 -0800"
      },
      "message": "Fix potential GLThread / GLSurfaceView memory leak.\n\nUntil now a leak was possible under the following scenario:\n\nCreate a GLSurfaceView\nRegister a renderer (this automatically starts a GLThread).\nDiscard the GLSurfaceView without installing it in the view system.\n\nThis scenario can occur when a device is rotated rapidly from\norientation A to orientation B to orientation C. In that scenario,\norientation B\u0027s GLSurfaceView might be discarded without ever being\nattached to a window.\n\nIf this issue had been identified before GLSurfaceView had clients, one\npossible fix would have been to delay the construction of the GLThread\nuntil the GLSurfaceView was attached to a window. Unfortunately, it\u0027s\ntoo late, and so making that change would lead to observable changes in\nbehavior, possibly breaking some clients.\n\nInstead, fixed by making GLThread and EGLHelper static classes that hold\nonto a weak reference to the GLSurfaceView. This allows the GLSurfaceView\nto be garbage collected when it is no longer used, even if the GLThread\nis active. GLSurfaceView\u0027s finalize method will manually stop the GLThread\nif it is still running when the GLSurfaceView exits.\n\nPart of this change was to remove the Renderer reference from GLThread,\nbecause Renderer is a user-supplied class that could contain a reference\nchain that points back to the GLSurfaceView.\n\nFixes b/5606613 \"GLSurfaceView that\u0027s never added to a window will\nleak threads and views, can leak activities\"\n\nChange-Id: Iafdc329eb6e9e40062358e7c119f5547ffe23d5e\n"
    },
    {
      "commit": "9726b1b54b45f9a165a12bc4738f22c5070a6657",
      "tree": "1a58af8a6f63dce1b39ababe2067397300099ede",
      "parents": [
        "6a54a997e3dc71c5b9c5a1c7829bc3eb35404e92"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Nov 15 10:32:53 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Nov 15 11:35:46 2011 -0800"
      },
      "message": "GLES: add image external enums\n\nThis change adds Java definitions for the enums of the\nGL_OES_EGL_image_external OpenGL ES extension.\n\nBug: 3482193\nChange-Id: Ib50326f8be9b9cc9021753855c3846ddcdc5eaa2\n"
    },
    {
      "commit": "1333742bedc9b462024302f302e3a7f27053df66",
      "tree": "f7cf76c82246c9fad4481ad232f17dfa81f57d45",
      "parents": [
        "0ed4c7f8cc8462d434c3a0103790b38fdbb8f392",
        "cb0db0306b5849a35d3d99eea1b34ce019c6f0d8"
      ],
      "author": {
        "name": "Akwasi Boateng",
        "email": "akwasi.boateng@ti.com",
        "time": "Fri Nov 11 15:34:19 2011 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 11 15:34:19 2011 +0000"
      },
      "message": "am cb0db030: Merge branch \\\u0027ics-mr1-plus-aosp\\\u0027 of ssh://android-git:29418/platform/frameworks/base into ics-mr1-plus-aosp\n\n* commit \u0027cb0db0306b5849a35d3d99eea1b34ce019c6f0d8\u0027:\n  Make the overridden ImageView#setVisibility remotable\n  Clamp non-monotonic stats instead of dropping.\n  DO NOT MERGE. Fix leak in LayoutTransition\n  Fix lastVisible/global rects\n  Fix Wimax-less build.\n  Fix leak in LayoutTransition\n  Deferring wallpaper update to improve workspace scrolling (issue 5506959)\n  Terminate EGL when an app goes in the background\n  boot animation is dithered and scaled\n  Fix NdefRecord byte-stream constructor.\n  PopupWindow dismiss() can get into a recursive loop.\n  Fold WiMAX state into the mobile RSSI.\n  Remove dedicated wimax icon to fix RSSI layout.\n"
    },
    {
      "commit": "8ff6b9ebeeb24a6161ec6098e6bfdf8790ee5695",
      "tree": "b6caef363611d37aa58a1b92d96b0b8e2e9f50c4",
      "parents": [
        "36a7f2a9adfa21ec31f00d496fef82e68931c860"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Nov 09 20:10:18 2011 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Thu Nov 10 16:44:49 2011 -0800"
      },
      "message": "Terminate EGL when an app goes in the background\n\nThis does not happen on high end gfx devices. This happens\nonly if only one EGL context is initialized in the current\nprocess.\n\nChange-Id: Ibd1737efdf84eef8a84108b05795440d1ae9964e\n"
    },
    {
      "commit": "9829cceca11a0fc92ab1318ce32b4d4dae8d347d",
      "tree": "c610620dfbbed5e4a2b7509337374c966cecb29d",
      "parents": [
        "01b35d7b1c70e23b89fe642577ef2e2446bde12a",
        "fc5e224e8dcc878606e47ba3d834be0a79498ac6"
      ],
      "author": {
        "name": "Alex Sakhartchouk",
        "email": "alexst@google.com",
        "time": "Mon Nov 07 09:53:28 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 07 09:53:28 2011 -0800"
      },
      "message": "Merge \"Properly passing an unused variable through.\""
    },
    {
      "commit": "fc5e224e8dcc878606e47ba3d834be0a79498ac6",
      "tree": "e9b9d873a02dd45e15d01102838789d2af651f95",
      "parents": [
        "5b9c79f27ee1bfc1ab70770b55dc10e24988a42a"
      ],
      "author": {
        "name": "Alex Sakhartchouk",
        "email": "alexst@google.com",
        "time": "Thu Nov 03 17:28:33 2011 -0700"
      },
      "committer": {
        "name": "Alex Sakhartchouk",
        "email": "alexst@google.com",
        "time": "Thu Nov 03 17:28:33 2011 -0700"
      },
      "message": "Properly passing an unused variable through.\n\nChange-Id: Ie49b5855bfca4e202ed41b6167a899832e99d728\n"
    },
    {
      "commit": "eba186448ff048f8fc1ba596c9779e8069a93128",
      "tree": "286bec506d8cc6c5e8b6ed4a39543ee4dd63b280",
      "parents": [
        "b0ac8ed48307cf5ee34c38cf56856f15db99c96f",
        "74b2b9547329a0b05e0bd5701057696007b854bb"
      ],
      "author": {
        "name": "Joe Fernandez",
        "email": "joefernandez@google.com",
        "time": "Mon Oct 31 12:26:31 2011 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 31 12:26:31 2011 +0000"
      },
      "message": "am 74b2b954: am 09848bc8: Merge \"docs: add developer guide cross references, Project ACRE, round 3\" into ics-mr0\n\n* commit \u002774b2b9547329a0b05e0bd5701057696007b854bb\u0027:\n  docs: add developer guide cross references, Project ACRE, round 3\n"
    },
    {
      "commit": "74b2b9547329a0b05e0bd5701057696007b854bb",
      "tree": "40eea9e4308a3ff3cb5033ddf51a2f25b1872f62",
      "parents": [
        "76756a42dd68062349158f70d9b0ab95db908acc",
        "09848bc89de999416e2de82a7693b2deec6bf802"
      ],
      "author": {
        "name": "Joe Fernandez",
        "email": "joefernandez@google.com",
        "time": "Sat Oct 29 02:16:10 2011 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Oct 29 02:16:10 2011 +0000"
      },
      "message": "am 09848bc8: Merge \"docs: add developer guide cross references, Project ACRE, round 3\" into ics-mr0\n\n* commit \u002709848bc89de999416e2de82a7693b2deec6bf802\u0027:\n  docs: add developer guide cross references, Project ACRE, round 3\n"
    },
    {
      "commit": "b50e2afd6782e9b877f52844bec106c12ff9a9ef",
      "tree": "18a1b86e6fbb5d5dc9e7fe42f5a9e79c0030a76a",
      "parents": [
        "e707859415f4c8e1c01228dfaa58fb0a690d442e"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Oct 28 13:25:12 2011 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Oct 28 14:38:53 2011 -0700"
      },
      "message": "Destroy and recreate the EGL surface when the surface size changes.\n\nDetails:\n+ Split EGLHelper.createSurface into two methods.\n+ Add a separate flag for specifying when to create the GlInterface.\n+ destroy and recreate the EGL surface when the surface size changes\n+ Remove no-longer-needed work-around for b/2263168.\n\nThis fixes b/2263168\n\nChange-Id: I0d2596527e3c8dabacdd8a8e427531eaefe7d266\n"
    },
    {
      "commit": "61fd1e8d8c3ccf2d6b7d4af1c19e8f0988d5a1ec",
      "tree": "0cc2443b58929c018ac78c1f85047fb9c4b267f2",
      "parents": [
        "a6d2e6b952d535fec4483d67ea52947e6e3bc629"
      ],
      "author": {
        "name": "Joe Fernandez",
        "email": "joefernandez@google.com",
        "time": "Wed Oct 26 13:39:11 2011 -0700"
      },
      "committer": {
        "name": "Joe Fernandez",
        "email": "joefernandez@google.com",
        "time": "Fri Oct 28 14:23:23 2011 -0700"
      },
      "message": "docs: add developer guide cross references, Project ACRE, round 3\n\nChange-Id: I6125315ecdf0f78dd947c514a9944729d723e95d\n"
    },
    {
      "commit": "a35c120d8fafa7dded606a25bc100b13f48ab9e3",
      "tree": "53bde00af464433a99270c6c1b7580608b027fb3",
      "parents": [
        "772158a596bc97694fa82e710b5cfbe8c6f40cdc"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Oct 14 07:34:05 2011 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Oct 14 07:34:05 2011 -0700"
      },
      "message": "Work around race condition when shutting down a surface flinger surface.\n\nWorks around b/4588890\n\nChange-Id: Ie0cf1f212686aec93cda85bf112f4b7ab4197256\n"
    },
    {
      "commit": "cc5471c35327c1511075f5df0d45a2d57610fecb",
      "tree": "09d3a2482bf8bccc22c62e35c40d31a28f8795e1",
      "parents": [
        "3ec8053fb2fc8384d614bfbe39e3e29a21d323ba"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Sep 20 19:59:26 2011 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Sep 20 19:59:26 2011 -0700"
      },
      "message": "Avoid allocating temporary memory for Matrix operations.\n\nAlso fix a bug where Matrix.invertM was not returning false when the\nmatrix could not be inverted.\n\nChange-Id: I68b172032093d9f257e88c802de936633bb4912c\n"
    },
    {
      "commit": "407ec78b828173257b0c5dae221649a4ccd8b058",
      "tree": "3890ba718151c345ce5c87a8d252e0445d790dc3",
      "parents": [
        "631582f7f7a3c879a5fba81f2bc082e4826758aa"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 24 17:06:58 2011 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 24 17:06:58 2011 -0700"
      },
      "message": "Add OpenGL backend to ImageWallpaper\nBug #5204874\n\nCurrently disabled.\n\nChange-Id: I5e7b35dce2981b0691f107e39c6394b260466543\n"
    },
    {
      "commit": "3ab88557947d708cc36d60ce6566509ceff944e4",
      "tree": "9d5b772a77965900b776c1bd1c3d398a67f7e393",
      "parents": [
        "34e1fb1ee229a7e033dcd42f4efd194e1614d5ce"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 01 20:24:02 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 01 20:24:02 2011 -0700"
      },
      "message": "fix an issue where the screen could be stale after a surface size change\n\nsome GLES drivers dequeue buffers before a frame is started\n(which is allowed), which can cause a that frame to be rendered\ninto a buffer of the wrong size. Such buffer will be ignored\nby the compositor. If the application draws only once after a\nsize change, the screen might stay in this stale state.\n\nthis can be avoided by telling the GL driver to purge all its\npending buffers, which is done by making the surface not current\nand then current again.\n\nthis solution is specific to android, but acceptable because\nhandled solely in the framework.\n\nBug: 2263168\nChange-Id: I3d3c9a019979a9186e329d3160fa54adac78d3f7\n"
    },
    {
      "commit": "43dd61e08a726fbc3695b1cbfdef6bdd4ddd34be",
      "tree": "33f580f9ca4110cab54c799aad80e945210aeb67",
      "parents": [
        "e544a1dbc9a3a4277ef26f6c7a066e7b443829ec"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 12 14:11:07 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 12 14:11:07 2011 -0700"
      },
      "message": "fix typo in a comment\n\nChange-Id: If913611a65e8b578021e9f9a9546f05e0ce6ef44\n"
    },
    {
      "commit": "7c80244afb9098c75b127c2d785bb6e5b03d68c5",
      "tree": "4eaf56c31d818142fa75d2c82ee1d4663f67fd08",
      "parents": [
        "b86a6ea41dadae6ee1915cdb9406c51193e97555"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Apr 21 15:46:27 2011 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Apr 21 15:46:27 2011 -0700"
      },
      "message": "Fix typo in Matrix.mPerspective.\n\n(Introduced by a copy-and-paste mistake when factoring out a common\nexpression. D\u0027Oh!)\n\nChange-Id: I5e97dde2d2f4564fc74ba69bfa4a2f9db44c8873\n"
    },
    {
      "commit": "d793299e875a97dc73e04e3beb2a2865563dccdb",
      "tree": "e8cdc375a5debec366cb3a6138226c1ab5ed4fe3",
      "parents": [
        "bf96c356c02c430153c281fb81dc1a00f7ad0b43"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Apr 21 14:52:37 2011 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Apr 21 14:52:37 2011 -0700"
      },
      "message": "Add utility method Matrix.perspectiveM\n\nChange-Id: Ic9d5e5d967bbc08acc524c5092ce61a1cdbfd360\n"
    },
    {
      "commit": "24ce5fb2cc09d0a14406e7b935f8648c5720d27e",
      "tree": "022bd63502ea1a649ecf32bdb3dc2e0205376901",
      "parents": [
        "7797e647fc8fcd5091b9449c0044f5cb70db5b47"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 08 20:01:01 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 11 15:31:20 2011 -0700"
      },
      "message": "Kill the global references in the OpenGL wrappers.\n\nJust use jniThrowException instead. Note that it would be trivial to throw\nseemingly more appropriate exceptions (NullPointerException and\nOutOfMemoryException in particular), but I\u0027m only attempting to preserve\nexisting behavior here.\n\nI also found shadowing bugs in some of the special-case functions, which\nwould previously always have leaked memory.\n\nThis also moves an accidental change to a generated file (ActivityThread -\u003e\nAppGlobals) into the generator, so it won\u0027t be overwritten in future.\n\nChange-Id: Iab570310b568cb406c60dd0e2b8211f8a36ae590\n"
    },
    {
      "commit": "70a1875635cf988b9962fbe2325ea73fd346858c",
      "tree": "e2587fed775427e2a896a3a7a623a51cced7f8b7",
      "parents": [
        "e44e28fa116549608cfde064d8951dbc3f8e1fd3"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Feb 07 11:36:47 2011 -0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Feb 07 11:36:47 2011 -0800"
      },
      "message": "Extend recycled bitmap check to all GLUtils APIs.\n\nChange-Id: I9ea0022b167af2153190b6642aa303232e257379\n"
    },
    {
      "commit": "5f89f510f327228d4ba2261aff7e8faa7d3715aa",
      "tree": "8f94af6ab17533e3c424b6ed1188190a93c17843",
      "parents": [
        "944170f2cf3456a9885e998516120f053e2496d1"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Feb 02 21:16:53 2011 -0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Feb 02 21:16:53 2011 -0800"
      },
      "message": "Throw an exception when trying to upload a recycled bitmap.\n\nPreviously we would upload garbage.\n\nChange-Id: Id785792a16f9d24685687f4e6b64ec893ccad225\n"
    },
    {
      "commit": "29406daf21c2dfa4d893b421d39137eb47fb3aa6",
      "tree": "e76a3d4f66aec93b0f17ecf7ddfcda02552da114",
      "parents": [
        "e8e0ebbfd09214020cfbbaafaeb940a2e52985b3"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Jan 27 14:46:52 2011 -0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Jan 27 14:46:52 2011 -0800"
      },
      "message": "Add GL11ExtensionPack support to GLDebugWrapper\n\nAllows calling GL11ExtensionPack APIs in a GL context that has been\nwrapped for debugging.\n\nChange-Id: Ib0695b51a92f5dcce32db8b0dc7ee948e5059e7f\n"
    },
    {
      "commit": "75f2bc04df11c67d7074186432278f182381b9f2",
      "tree": "58f2f597517fc95e93ea1030987feca5ebf0a0eb",
      "parents": [
        "1418de7eff012c37cf34328eb368a547d70a1441"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Jan 18 15:53:25 2011 -0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Jan 18 15:53:25 2011 -0800"
      },
      "message": "Unhide GLSurfaceView.get/setPreserveEGLContextOnPause\n\nChange-Id: I882b8fa7888e2baae41c81b75af7fc1f639d38d6\n"
    },
    {
      "commit": "8432b3f98a22d5cdfcc0183d134770597e44d412",
      "tree": "cdf97b000439df11704863aa4ffbd7d79473fd8c",
      "parents": [
        "9aba2324ac8d7216732b42346bfcaf0be71eb22e"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Jan 14 11:45:17 2011 -0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Jan 14 11:45:17 2011 -0800"
      },
      "message": "Add support for preserving EGL contexts when pausing / resuming.\n\nHidden for now.\n\nChange-Id: I350576c11960a1aa232da7aebc5c6ec60ff796b5\n"
    },
    {
      "commit": "c086ca1fa7cebc3e9a51abd4be4688346225c2e4",
      "tree": "e9b897e3cb60179cf642262c1d0de9b21bb41e74",
      "parents": [
        "11a8af5ea1e5a760e6d40f025f9cbc356edf1894"
      ],
      "author": {
        "name": "Dan Bornstein",
        "email": "danfuzz@android.com",
        "time": "Tue Dec 07 15:35:20 2010 -0800"
      },
      "committer": {
        "name": "Dan Bornstein",
        "email": "danfuzz@android.com",
        "time": "Tue Dec 07 15:35:20 2010 -0800"
      },
      "message": "These files had an older header.\n\nThis patch replaces the file headers with the approved Android\nheader text.\n\nChange-Id: I63cbd21e9112dab404158fb65f74bc6ca5b07eac\n"
    },
    {
      "commit": "1396afb73047c402db5af98e8f6b442ecbfa98d4",
      "tree": "f4e718f0577f7b1a7f41e6b37100cc8e78401ced",
      "parents": [
        "0424d69d484dfc25c73f6557199cfbb7aaaeb043"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Oct 27 11:37:23 2010 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Oct 27 11:37:23 2010 -0700"
      },
      "message": "Preserve the render mode when recreating the render thread.\n\nChange-Id: I67a12a9598d3ef099bef8727411891614b1bc3f7\n"
    },
    {
      "commit": "2ff6a824619ac6849ba9f36d97590acf74f62518",
      "tree": "c08fc1534f9639cab6f03d786613e14b742d3dc1",
      "parents": [
        "9440083be22ec13e252aa347e654911d33e50086"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Oct 26 18:19:14 2010 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Oct 26 18:19:14 2010 -0700"
      },
      "message": "Allow a GLSurfaceView to be reattached to a window.\n\nThis approach is more backwards-compatible than the previous attempt.\n\nThe onDetachedFromWindow case is unchanged from the \"classic\"\nGLSurfaceView behavior, except that we don\u0027t throw a NPE if the\nrenderer has never been set.\n\nChange-Id: Ia8103a73366ddb13be44f16b789c929e75ddc792\n"
    },
    {
      "commit": "fc5508bc994174bc4d1b1d028cfa25eb70ea8203",
      "tree": "6a43ba3a1e8f2bb887a80d4d24290af83a9fea4a",
      "parents": [
        "fc6d54ea074aa1f6a177b031e6b2814368ac7583"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Oct 25 19:38:13 2010 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Oct 25 19:38:13 2010 -0700"
      },
      "message": "Do not exit the GLSurfaceView thread when detached from a window.\n\nAllows a GLSurfaceView to be removed from a window and later reattached\nto a window.\n\nChange-Id: I2b44f35d0c95404b13912782df8877953609a5d0\n"
    },
    {
      "commit": "f45b674d48ff91972e4b8ffbbe3c4bd16d231bdc",
      "tree": "13e4db70c53c2f220e9d4b8eb53c2568b6948415",
      "parents": [
        "c14f9ca6e5e795b641e7809786b4e51e13493907"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 25 16:42:24 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 25 16:57:02 2010 -0700"
      },
      "message": "reserve android.opengl.GLWallpaperService name for future use\n\nChange-Id: I7a217593a1ca39214dda26ddb3af3ddc30a8a95a\n"
    },
    {
      "commit": "1b4ecc63c4eceb7c125d4e749fd5f747d99d6ec6",
      "tree": "19f69c9eabca7460fb55801da2b106c6d8036f7d",
      "parents": [
        "70c6c9a1e2240e82d8eb442b34efa9629ef2bba4"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Jul 13 19:09:37 2010 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Jul 13 19:09:37 2010 -0700"
      },
      "message": "Fix deadlock when switching between two GLSurfaceViews\n\nSome devices only support a single active EGL context.\n\nOn those devices, when a second activity that uses a GLSurfaceView\nis started in the same process, the second activity can potentially\nhang in GLSurfaceView.onWindowResize waiting for its GLSurfaceView\nrender thread to draw a frame. The second activity\u0027s render thread\nis waiting to acquire an EGL context, but the first activity\u0027s render\nthread doesn\u0027t know it should release the EGL context.\n\nThe fix is to detect the potential hang, and ask the first activity\u0027s\nrender thread to release the EGL context.\n\nChange-Id: Ibb342c68772297744c973bcf5010581cd132db67\n"
    },
    {
      "commit": "224107a421e2611b15d1ec736df54bca9ee3e78d",
      "tree": "7947fa03cc7f65a001a6b899d20f9a848a80e6a6",
      "parents": [
        "07ccf5ad7edfeeebb79208ad3e8a52917fe038a8"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Jun 22 20:08:40 2010 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Jun 22 20:08:40 2010 +0800"
      },
      "message": "Add OpenGL ES 2.0 VBO versions glDrawElements and glVertexAttribPointer.\n\nChange-Id: Id0069535e97fe96eef74e4d0c1d19b010061fe3b\n"
    },
    {
      "commit": "d6ddcb7f00a7af95b452233d965b922632f78f21",
      "tree": "ff19248cbc31678bf855594efb47754dfe25dd6e",
      "parents": [
        "2e948ca1a06470a1c4c581022eabaed593c58e27"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 24 19:00:08 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 24 19:07:08 2010 -0700"
      },
      "message": "fix [2677468] some 3rd party GL ES apps get a 32-bits surface by default and fail\n\nforce all SurfaceView to 565\n\nChange-Id: I8ebfa1239d8e4fa097c2e544677fb92fa20b39bd\n"
    },
    {
      "commit": "0e4aa37872810e46775374596e0beb11f7123727",
      "tree": "2912acd68ef1814444c3d8dbf2d2daef2b016a27",
      "parents": [
        "7171ea8179e09270e4d6ab825a2320816eee39c5"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Apr 19 22:32:15 2010 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Apr 19 22:32:15 2010 +0800"
      },
      "message": "Quietly handle EGL_BAD_NATIVE_WINDOW errors\n\nWe believe these errors happen when the window\nmanager has told surface flinger to close the\nnative window.\n\nIf this error happens while we are creating the\nEGL surface we exit the render loop (and\ntherefore exit the render thread.)\n\nIf the error happens while swapping the surface\nwe ignore it.\n\nIn either situation, we expect that the\napplication is about to be shut down by the\nwindow manager, so it should not be necessary\nto try and recover from the error."
    },
    {
      "commit": "4a65900cd69b79e6e47d275575eaeb5bb2487f9f",
      "tree": "e696fe3e7928376df0a15b465ed464f34ce9179b",
      "parents": [
        "7205b0fcb43e9309e2516420d235a1df0b3cd04a"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Sat Mar 27 15:02:59 2010 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Sat Mar 27 15:02:59 2010 -0700"
      },
      "message": "Turn off logging."
    },
    {
      "commit": "451a224c46c297bd6b25e3570b45f5053b4788be",
      "tree": "a1a96809fd3139fe1fe8726cd5d44bc674a26607",
      "parents": [
        "57c6a46bd0c84c4b349d49f8df12f30a8cfcdaa2"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Mar 25 17:18:39 2010 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Mar 25 17:18:39 2010 -0700"
      },
      "message": "GLSurfaceView pause and resume now synchronize\nwith the GLThread.\n\nWe used to just set the mPaused state and return,\nnow we wait until the rendering thread signals\nthat it has noticed the change in pause state.\n\nThis makes Pause/Resume more consistent with\nother UI-thread-to-GLThread event communication.\n\nThis change was made in the hope of fixing some\nrace conditions observed in monkey testing.\n"
    },
    {
      "commit": "57c6a46bd0c84c4b349d49f8df12f30a8cfcdaa2",
      "tree": "b585320507e09bb348908082c3d670b633dba8c3",
      "parents": [
        "e6c9448eb3228887c49f6ba9c4be2345443286e9"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Mar 25 11:53:27 2010 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Mar 25 11:53:27 2010 -0700"
      },
      "message": "Turn off thread logging (too many messages.)\n\nLeave some other logging on for the monkey test."
    },
    {
      "commit": "e6c9448eb3228887c49f6ba9c4be2345443286e9",
      "tree": "12dd6c8a8ddd021e6ae4b671c1f485e8323deb28",
      "parents": [
        "5202eaaa5f5e898c84f33d8c8023a427ca01d517"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Mar 25 10:50:21 2010 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Mar 25 10:50:21 2010 -0700"
      },
      "message": "Add logging of GLSurfaceView pause/resume calls.\n\nTurn on GLSurfaceView logging, so we can get better\ninformation in the monkey tests.\n\nChange-Id: Ifec0101f8a00ab09037dc9f7a1496fa1a374cc08\n"
    },
    {
      "commit": "b1768998f14e03bd69cf049783d6cbeccf6d5839",
      "tree": "6a627c625a32bd2ef73abe417ee1ef8d35fe8971",
      "parents": [
        "07353a1e8598b1e2993b8b6763f630379ae6e8bb"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Mar 24 13:46:15 2010 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Mar 24 13:48:27 2010 -0700"
      },
      "message": "Improve our EGL management when pausing / resuming.\n\nWe now release the EGL context when pausing. This\nis required to reduce the chance of running out of\ncontexts on devices which support a limited number\nof active EGL contexts.\n\nSomeday we may implement a global EGL context\nmanager that will allow us to let EGL contexts\npersist until another activity needs an EGL\ncontext. But for now, without such a manager,\nwe take the conservative approach.\n\nSeparately, we now terminate EGL when\npausing on Sapphire. This is a requirement of the\nSapphire OpenGL driver."
    },
    {
      "commit": "07353a1e8598b1e2993b8b6763f630379ae6e8bb",
      "tree": "b28a43f0e7aeb89d0925fd715df5875f13cb2b44",
      "parents": [
        "0ee0a2ea57197cb2f03905454098d9a7a309f77b"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Mar 23 15:22:03 2010 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Mar 23 17:57:41 2010 -0700"
      },
      "message": "GLSurfaceView: Log egl failures\n\nDecode the EGL error code when throwing exceptions."
    },
    {
      "commit": "04b17ab7b4a17a28f541f746c3d55046c5b87596",
      "tree": "3658ec6ee67336e7be5e98de5e76fb4365d7fcd4",
      "parents": [
        "7d740861415523feb239d94d805fa985835663c0"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Mar 15 15:09:30 2010 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Mar 15 16:30:47 2010 -0700"
      },
      "message": "Improve eglSwapBuffers error handling.\n\nWe now distinguish EGL_CONTEXT_LOST errors from\nother kinds of errors. We return \"true\" if\nthe swap completes successfully, \"false\" if\nthe swap fails due to EGL_CONTEXT_LOST, and\nthrow a RuntimeException if the swap fails due\nto any other cause.\n\nIf eglSwapBuffers succeeds, we now avoid calling\neglGetError at all, which means we avoid clearing\nany EGL errors that might already have been\npending before eglSwapBuffers is called.\n"
    },
    {
      "commit": "15a4d2ffd04dc6c70f2cd17dae12ac6bc14c69ab",
      "tree": "2dbbf0c31082373354fb17308de3681e22c66169",
      "parents": [
        "8abb26ee6c77e01a23d26c305a65b25a33710024"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Mar 11 18:20:12 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Mar 11 18:22:10 2010 -0800"
      },
      "message": "Add correct copyright headers to multiple files\n\nFormat for the list of changes shows the origin commit reference followed\nby the file name.\n\n33931-p9 awt/org/apache/harmony/awt/gl/font/AndroidGlyphVector.java\n33931-p9 awt/org/apache/harmony/awt/gl/image/PngDecoderJava.java\n133776-p9 core/java/android/app/IntentService.java\n127013-p9 core/java/android/appwidget/AppWidgetHost.java\n27863-p9 core/java/android/bluetooth/BluetoothAudioGateway.java\n60765-p9 core/java/android/content/SyncResult.java\n43920-p9 core/java/android/content/pm/ActivityInfo.java\n43920-p9 core/java/android/content/pm/ApplicationInfo.java\n43920-p9 core/java/android/content/pm/InstrumentationInfo.java\n43920-p9 core/java/android/content/pm/PackageInfo.java\n44103-p9 core/java/android/content/pm/PackageItemInfo.java\n68960-p9 core/java/android/content/pm/PackageStats.java\n43920-p9 core/java/android/content/pm/ResolveInfo.java\n43920-p9 core/java/android/content/pm/ServiceInfo.java\n60641-p9 core/java/android/content/res/Configuration.java\n60734-p9 core/java/android/content/res/TypedArray.java\n137672-p9 core/java/android/inputmethodservice/ExtractButton.java\n123112-p9 core/java/android/inputmethodservice/ExtractEditText.java\n119291-p9 core/java/android/inputmethodservice/IInputMethodSessionWrapper.java\n112946-p9 core/java/android/inputmethodservice/IInputMethodWrapper.java\n115078-p9 core/java/android/os/BatteryStats.java\n124790-p9 core/java/android/text/style/UpdateAppearance.java\n45083-p9 core/java/android/view/RawInputEvent.java\n101491-p9 core/java/android/view/inputmethod/EditorInfo.java\n114701-p9 core/java/android/view/inputmethod/ExtractedText.java\n123112-p9 core/java/android/view/inputmethod/ExtractedTextRequest.java\n119291-p9 core/java/com/android/internal/os/HandlerCaller.java\n129279-p9 core/java/com/android/internal/os/PkgUsageStats.java\n114701-p9 core/java/com/android/internal/view/IInputConnectionWrapper.java\n114701-p9 core/java/com/android/internal/view/InputConnectionWrapper.java\n84364-p9 opengl/java/android/opengl/EGLLogWrapper.java\n11355-p9 opengl/tools/glgen/src/CFunc.java\n11355-p9 opengl/tools/glgen/src/CType.java\n11355-p9 opengl/tools/glgen/src/CodeEmitter.java\n11355-p9 opengl/tools/glgen/src/GenerateGL.java\n11355-p9 opengl/tools/glgen/src/JFunc.java\n11355-p9 opengl/tools/glgen/src/JType.java\n11355-p9 opengl/tools/glgen/src/JniCodeEmitter.java\n11355-p9 opengl/tools/glgen/src/ParameterChecker.java\n57236-p9 services/java/com/android/server/status/AnimatedImageView.java\n66754-p9 services/java/com/android/server/status/CloseDragHandle.java\n57188-p9 services/java/com/android/server/status/DateView.java\n46928-p9 services/java/com/android/server/status/ExpandedView.java\n70590-p9 services/java/com/android/server/status/FixedSizeDrawable.java\n45968-p9 services/java/com/android/server/status/IconData.java\n57470-p9 services/java/com/android/server/status/IconMerger.java\n82719-p9 services/java/com/android/server/status/LatestItemView.java\n45968-p9 services/java/com/android/server/status/NotificationData.java\n66754-p9 services/java/com/android/server/status/NotificationLinearLayout.java\n57458-p9 services/java/com/android/server/status/NotificationViewList.java\n45968-p9 services/java/com/android/server/status/StatusBarException.java\n45968-p9 services/java/com/android/server/status/StatusBarIcon.java\n46130-p9 services/java/com/android/server/status/StatusBarNotification.java\n45968-p9 services/java/com/android/server/status/StatusBarView.java\n46199-p9 services/java/com/android/server/status/Ticker.java\n62286-p9 services/java/com/android/server/status/TickerView.java\n57188-p9 services/java/com/android/server/status/TrackingView.java\n86041-p9 telephony/java/android/telephony/PhoneStateListener.java\n87020-p9 telephony/java/com/android/internal/telephony/TelephonyIntents.java\n136269-p9 telephony/java/com/android/internal/telephony/gsm/SpnOverride.java\n34409-p9 tests/FrameworkTest/src/com/android/frameworktest/FrameworkTestApplication.java\n55717-p9 tests/FrameworkTest/src/com/android/frameworktest/performance/InvalidateCycle.java\n128994-p9 tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityLandscape.java\n128994-p9 tests/ImfTest/src/com/android/imftest/samples/AutoCompleteTextViewActivityPortrait.java\n129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityNonScrollablePanScan.java\n129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityNonScrollableResize.java\n129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityScrollablePanScan.java\n129372-p9 tests/ImfTest/src/com/android/imftest/samples/BigEditTextActivityScrollableResize.java\n128994-p9 tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityPanScan.java\n128994-p9 tests/ImfTest/src/com/android/imftest/samples/BottomEditTextActivityResize.java\n127341-p9 tests/ImfTest/src/com/android/imftest/samples/ButtonActivity.java\n129347-p9 tests/ImfTest/src/com/android/imftest/samples/DialogActivity.java\n129372-p9 tests/ImfTest/src/com/android/imftest/samples/EditTextActivityDialog.java\n128994-p9 tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityNoScrollPanScan.java\n128994-p9 tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollPanScan.java\n128994-p9 tests/ImfTest/src/com/android/imftest/samples/ManyEditTextActivityScrollResize.java\n128994-p9 tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivityNotSelected.java\n128994-p9 tests/ImfTest/src/com/android/imftest/samples/OneEditTextActivitySelected.java\n25959-p9 tests/framework-tests/src/android/test/FrameworkTests.java\n46162-p9 tests/framework-tests/src/com/android/internal/http/multipart/MultipartTest.java\n77101-p9 tools/layoutlib/bridge/tests/com/android/layoutlib/bridge/NinePatchTest.java\n9788976b1465ce982b5ae7c741345edd0ecd9322 core/java/android/accounts/AuthenticatorDescription.java\n53332883543868fb83e111a07306368b7772b340 core/java/android/app/UiModeManager.java\n93e7e22ec91dbc641d10ca6d70423e1357a95bba core/java/android/app/FullBackupAgent.java\n328c0e7986aa6bb7752ec6de3da9c999920bb55f core/java/android/content/CursorEntityIterator.java\n307da1a46b4c9b711bafe8fbaaa6b98e8868c18e core/java/android/content/SyncQueue.java\n307da1a46b4c9b711bafe8fbaaa6b98e8868c18e core/java/android/content/SyncOperation.java\neb034652c2037a47ebfd99779e8383bb8bb528af core/java/android/content/pm/LabeledIntent.java\n49237345d83e62fdb9eb8d50b13ad086636a04fa core/java/android/content/pm/FeatureInfo.java\na2b6c3775ed6b8924232d6a01bae4a19740a15f8 core/java/android/content/pm/PackageInfoLite.java\n3ecd5f437580e49d80beecd29489d5fb1f7a7db0 core/java/android/content/pm/RegisteredServicesCacheListener.java\n5ebbb4a6b3e16f711735ae0615b9a9ea64faad38 core/java/android/content/pm/XmlSerializerAndParser.java\nc4516a7b62de525e3d6d5e76851bdfaf12c11f05 core/java/android/database/sqlite/SQLiteTransactionListener.java\n9bbc21a773cbdfbef2876a75c32bda5839647751 core/java/com/android/internal/backup/LocalTransport.java\n21f1bd17b2dfe361acbb28453b3f3b1a110932fa core/java/com/android/internal/content/PackageMonitor.java\n4c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3 core/java/com/android/internal/view/BaseSurfaceHolder.java\n4c62fc0e1e5ea9c69a12a7d1cf8b3ec8b2d114a3 core/java/com/android/internal/view/BaseIWindow.java\ne540833fdff4d58e37c9ba859388e24e2945ed45 core/java/com/android/internal/os/SamplingProfilerIntegration.java\n192ab903887bbb8e7c7b6da5c581573850e30f46 core/tests/coretests/src/android/widget/expandablelistview/PositionTesterContextMenuListener.java\n1619367ab823150fa8856d419abe02ceb75886f1 media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/MediaProfileReader.java\n27f8002e591b5c579f75b2580183b5d1c4219cd4 opengl/tools/glgen/stubs/gles11/glGetString.java\n560814f6b11abe83ff0c4ed18cac015c276b3181 opengl/tools/glgen/stubs/gles11/glGetProgramInfoLog.java\n560814f6b11abe83ff0c4ed18cac015c276b3181 opengl/tools/glgen/stubs/gles11/glGetShaderInfoLog.java\n560814f6b11abe83ff0c4ed18cac015c276b3181 opengl/tools/glgen/stubs/gles11/glShaderSource.java\n1c4907ee77392afb768c2f088e0dedbe4239f6fb opengl/tools/glgen/src/GenerateGLES.java\n1c4907ee77392afb768c2f088e0dedbe4239f6fb opengl/tools/glgen/src/Jsr239CodeEmitter.java\n1c4907ee77392afb768c2f088e0dedbe4239f6fb opengl/tools/glgen/src/GLESCodeEmitter.java\n69e21f5f6e0d04539cd92848ea009dd615d88c2c opengl/tests/gldual/src/com/android/gldual/TriangleRenderer.java\nc028be4f3b8c7476b46859f66c3f33d528adf181 packages/DefaultContainerService/src/com/android/defcontainer/DefaultContainerService.java\n7c6efa13f129dbae5319f0981a430d4662f43354 tests/BrowserPowerTest/src/com/android/browserpowertest/PowerMeasurement.java\n7c6efa13f129dbae5319f0981a430d4662f43354 tests/BrowserPowerTest/src/com/android/browserpowertest/PowerTestActivity.java\n7c6efa13f129dbae5319f0981a430d4662f43354 tests/BrowserPowerTest/src/com/android/browserpowertest/PowerTestRunner.java\ndf8a3f31d871db25e952972c2eb346a71186e9e3 tests/BrowserTestPlugin/src/com/android/testplugin/TestPlugin.java\ncfaef699e1dfb3a75d5b51f3b15816f13670fd51 tests/permission/src/com/android/framework/permission/tests/ActivityManagerPermissionTests.java\ncfaef699e1dfb3a75d5b51f3b15816f13670fd51 tests/permission/src/com/android/framework/permission/tests/ServiceManagerPermissionTests.java\ncfaef699e1dfb3a75d5b51f3b15816f13670fd51 tests/permission/src/com/android/framework/permission/tests/WindowManagerPermissionTests.java\n\nCopyright header moved to top in following file:\n\ncore/tests/coretests/src/android/widget/ListViewTest.java\n\nChange-Id: I3c3198be5a0ba36e18679ed834170432bf0b8418\n"
    },
    {
      "commit": "83835359e51ddb8be37cea9bf4bb32f9390d82b7",
      "tree": "bcbde4ee7da376786b2850e0d7068516abd510e4",
      "parents": [
        "80b9af448e2f229f2950e21be2dca0531d796a37"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Mar 04 18:12:44 2010 -0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Sat Mar 06 10:55:24 2010 -0800"
      },
      "message": "Clarify the default algorithm used to choose an EGLConfig.\n\nExplicitly default to an RGB_565 android.view.Surface.\n"
    },
    {
      "commit": "4a2221ec4a929976be570ad096252c8dea326e19",
      "tree": "f26fca340770c2784f7f08c59316c7ee951af791",
      "parents": [
        "931bf89d327ecf07301231fd86b17deac535feaa"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Sat Mar 06 10:39:27 2010 -0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Sat Mar 06 10:39:27 2010 -0800"
      },
      "message": "Fix inverted release-EGLContext-on-pause logic.\n\nThis works around a bug in the\n\"Q3Dimension MSM7500\" driver. That driver only\nsupports a single active EGLContext, so we must\nrelease and restore the EGLContext when pausing\nand unpausing.\n\nUnfortunately the test for deciding whether to\nrelease the context was inverted. We were\nreleasing the context on every device besides\nthe MSM7500 devices, which was a performance\ndrain, and we were not releasing the context on\nthe MSM7500, which meant the underlying driver\nbug was not worked around.\n\nNow we release the EGL context when pausing only\non the devices that have the bug.\n"
    },
    {
      "commit": "840e958847f31f835dbf17ce539c9f8317251cc9",
      "tree": "ece9118966b309d7c6fc9f3bc2a91f171791b731",
      "parents": [
        "308596eda112d48bcea217e58223b4672d94d600"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Jan 18 15:13:12 2010 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Jan 18 15:13:12 2010 +0800"
      },
      "message": "Decouple the EGL context lifetime from the EGL surface lifetime.\n\nThe EGL context is now preserved when possible. Previously we would\ndestroy it whenever the EGL surface was destroyed. Preserving the\nEGL context preserves loaded textures and VBO resources.\n"
    },
    {
      "commit": "8af9649d44745adba8be4db4e96af053ba32f2c5",
      "tree": "37edf1d80159b99ad69c1bf1622d3095c28a0563",
      "parents": [
        "a6276fdd4253c3a7150ab675678c750473ab6c45"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Dec 31 15:29:28 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Dec 31 15:29:28 2009 +0800"
      },
      "message": "Fix javadoc typos."
    },
    {
      "commit": "a6276fdd4253c3a7150ab675678c750473ab6c45",
      "tree": "d025885cd75cd415b62eb7757d25c05174c3db49",
      "parents": [
        "8eb3ea659761edc2cd5db3acf448059f19389e5e"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Dec 28 19:31:43 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Dec 31 13:31:04 2009 +0800"
      },
      "message": "A library for encoding and decoding ETC1 textures.\n\nThe ETC1 compressed texture format is commonly\nsupported by OpenGL ES 2.0-capable devices.\n"
    },
    {
      "commit": "66a4a6e45f59f72f24d710221c27db1bd233e154",
      "tree": "21a1f118bd5b11596df872825390acde373c7e8b",
      "parents": [
        "21799450ec751fd3c41c7e66e69fefb094b3050b"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Dec 21 17:39:58 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Dec 21 17:39:58 2009 +0800"
      },
      "message": "Fix merge conflict markers that accidentally got checked in.\n\n(They were in a comment, so it wasn\u0027t detected by the compiler.)\n"
    },
    {
      "commit": "21799450ec751fd3c41c7e66e69fefb094b3050b",
      "tree": "97bb8d957e78bd77c97cc7547aa16a9ac26d0882",
      "parents": [
        "0f10c2bd328da35ab8aeb534af2d3f51416b3e2c"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Dec 21 14:47:35 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Dec 21 14:47:35 2009 +0800"
      },
      "message": "Fix bug 2325244\tscreen turns black for a brief period of time\n\nThe problem was a black first frame when creating a surface, or a\ngarbage frame when the surface was resized.\n\nThe cause was lack of synchronization between the render thread and the\nUI thread. The UI thread would typically return before the render thread\nhad a chance to draw its first frame.\n\nThe fix was to make the UI thread wait until at least one frame had been\nrendered by the rendering thread.\n\nThe waiting is done in the surfaceChanged method because we know\nthat surfaceChanged will be called in both the surface created\nand surface changed cases.\n"
    },
    {
      "commit": "bcf848e096b600ee36430849ade76826c3062196",
      "tree": "bad3123e46c2cad286e8bd0389889accbe297dfc",
      "parents": [
        "4c2fc8cb2571061371a34e736f157686ba57a779",
        "74befcc7fd721ca34f60bf75e18ce6faaab37aef"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Dec 10 12:16:37 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 10 12:16:37 2009 -0800"
      },
      "message": "am 74befcc7: am 981ccfbb: Implement Matrix Palette extension.\n\nMerge commit \u002774befcc7fd721ca34f60bf75e18ce6faaab37aef\u0027\n\n* commit \u002774befcc7fd721ca34f60bf75e18ce6faaab37aef\u0027:\n  Implement Matrix Palette extension.\n"
    },
    {
      "commit": "4c2fc8cb2571061371a34e736f157686ba57a779",
      "tree": "933d94ad6bdde1ec0297f0e0693b8d9fb0bbf207",
      "parents": [
        "b9863ec01b7721a6b64b51cd5d306871fc58da57",
        "fac576360f7b2cd06e6b174894e8d192088349b0"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Dec 10 12:13:54 2009 -0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Dec 10 12:13:54 2009 -0800"
      },
      "message": "resolved conflicts for merge of fac57636 to master\n"
    },
    {
      "commit": "981ccfbbfd737e2bdf0cedec0089975f91fd4e0a",
      "tree": "1625a7d2cc71a5f8e86f0dc575069e030c8ac0e3",
      "parents": [
        "aa396b9610f339cf280159144fbea47506f060e7"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Dec 08 15:43:51 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Dec 09 16:34:46 2009 +0800"
      },
      "message": "Implement Matrix Palette extension.\n\nAdds support for formerly-unimplemented methods:\n\nglCurrentPaletteMatrixOES\nglLoadPaletteFromModelViewMatrixOES\nglMatrixIndexPointerOES\nglWeightPointerOES\n\nThe bulk of the changes are related to implementing the two PointerOES\nmethods, which are implemented pretty much the same way as the existing\nPointer methods were implemented.\n\nThis change also changes the way glPointSizePointerOES is implemented,\nmaking it act like all the other Pointer methods. (Previously it was\nnot handling non-direct-buffer arguments correctly.)\n\nFixes bug 2308625 \"Support matrix palette skinning\nin JSR239 and related APIs\"\n\nAlso updated GLLogWraper to fix two bugs in GLLogWrapper that were\ndiscovered while testing matrix palette skinning support:\n\na) Handle trying to print the contents of null-but-enabled buffers.\n(It\u0027s not legal to draw with null-but-enabled buffers, and\nin fact some OpenGL drivers will crash if you try to render in this\nstate, but there\u0027s no reason the GLLogWrapper should crash while trying\nto debug this situation.\n\nb) Don\u0027t read off the end of a vertex buffer with non-zero position when\nprinting the entire contents of the vertex buffer. Now we only print from\nthe current position to the end of the buffer.\n"
    },
    {
      "commit": "aa396b9610f339cf280159144fbea47506f060e7",
      "tree": "cde57c6f229bf98c256e6411d87d86eedb8ef1fa",
      "parents": [
        "0dce2dd26699e4dbfba8b8c5ea01f7fd03369e02"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Nov 27 19:59:05 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Dec 09 16:34:42 2009 +0800"
      },
      "message": "Unhide the Android OpenGL ES 2.0 API\n\nAdd a Matrix.setLookAtM method for computing a look-at viewing transform.\n\nChange GLU.lookAt to use Matrix.setLook.\n"
    },
    {
      "commit": "0dce2dd26699e4dbfba8b8c5ea01f7fd03369e02",
      "tree": "248e09a9cd55f92b9b97110850320af9ed6566aa",
      "parents": [
        "3608891b83af9fbd1af9b9a411f2a90e52353ff8"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Nov 19 19:08:52 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Dec 09 16:34:34 2009 +0800"
      },
      "message": "Extend GLSurfaceView to make it easy to create an OpenGL ES 2.0 context\n\nProvide a new method, GLSurfaceView.setEGLContextClientVersion. Clients\ncall this method to define which level of OpenGL ES support they want.\n\nThis method only affects the default behavior of GLSurfaceView. If clients\nhave supplied their own EGLContextFactory or EGLConfigChooser then they\nare on their own if they want to create an OpenGL ES 2.0 context.\n\nThis API is currently hidden.\n\nUpdate the gl2_java test to use this new API.\n\nUpdate the gl2_java test\u0027s AndroidManifest.xml file to indicate that\nit requires OpenGL ES 2.0.\n"
    },
    {
      "commit": "3608891b83af9fbd1af9b9a411f2a90e52353ff8",
      "tree": "bde3e48044987e890ddeaf490e07c62cb788588f",
      "parents": [
        "9fbb534ebddb2ae43e862a3bc0ff5859358b194b"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Nov 19 16:34:55 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Dec 09 16:34:33 2009 +0800"
      },
      "message": "Add a Java API for OpenGL ES 2.0.\n\nCurrently this API is hidden.\n\nAdd a test program.\n"
    },
    {
      "commit": "5c47265a704cb0cc081b79e191442f99014726b0",
      "tree": "b162ef47569b58713fd90ac0a6ad4e7402b02a3e",
      "parents": [
        "7279fb9aee1abae405384e2c4331b7d9fec28294",
        "be6eac828f5af8b608c3fa6749330f1dcd6b6206"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 08 20:13:44 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 08 20:13:44 2009 -0800"
      },
      "message": "Merge change Ibe6eac82\n\n* changes:\n  Implement Matrix Palette extension.\n"
    },
    {
      "commit": "be6eac828f5af8b608c3fa6749330f1dcd6b6206",
      "tree": "8e34bfeec9ea1f57a5022f48be43e3a7b09859eb",
      "parents": [
        "e35cfda3ae0be72a4ca1a18a81bf51fad901709a"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Dec 08 15:43:51 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Dec 08 15:43:51 2009 +0800"
      },
      "message": "Implement Matrix Palette extension.\n\nAdds support for formerly-unimplemented methods:\n\nglCurrentPaletteMatrixOES\nglLoadPaletteFromModelViewMatrixOES\nglMatrixIndexPointerOES\nglWeightPointerOES\n\nThe bulk of the changes are related to implementing the two PointerOES\nmethods, which are implemented pretty much the same way as the existing\nPointer methods were implemented.\n\nThis change also changes the way glPointSizePointerOES is implemented,\nmaking it act like all the other Pointer methods. (Previously it was\nnot handling non-direct-buffer arguments correctly.)\n\nFixes bug 2308625 \"Support matrix palette skinning\nin JSR239 and related APIs\"\n\nAlso updated GLLogWraper to fix two bugs in GLLogWrapper that were\ndiscovered while testing matrix palette skinning support:\n\na) Handle trying to print the contents of null-but-enabled buffers.\n(It\u0027s not legal to draw with null-but-enabled buffers, and\nin fact some OpenGL drivers will crash if you try to render in this\nstate, but there\u0027s no reason the GLLogWrapper should crash while trying\nto debug this situation.\n\nb) Don\u0027t read off the end of a vertex buffer with non-zero position when\nprinting the entire contents of the vertex buffer. Now we only print from\nthe current position to the end of the buffer.\n"
    },
    {
      "commit": "c373edbf1c7066668b8bf5fe90edd3fedd94c78b",
      "tree": "87d1b2f0fb7edec9569136ab353ed77e4083d5b4",
      "parents": [
        "e8a43b236754038b61a85eb294fdb03c18e82a00",
        "9196034b84c48844799a2904ef3ce31f18ee748e"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Dec 07 14:55:39 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 07 14:55:39 2009 -0800"
      },
      "message": "am 9196034b: am 30d90523: Merge changes Id682ab72,I9bb4dbae into eclair-mr2\n\nMerge commit \u00279196034b84c48844799a2904ef3ce31f18ee748e\u0027\n\n* commit \u00279196034b84c48844799a2904ef3ce31f18ee748e\u0027:\n  Improve error message thrown when eglCreateContext fails.\n  Improve error reporting by always returning the public\n"
    },
    {
      "commit": "9bb4dbae91df0971038e955ef49c5d9a64d4a428",
      "tree": "fd26f392ac4891ae5ce880c161cd0b9e084ed927",
      "parents": [
        "d682ab72c5b7781109b0f30ac16202441fb925d6"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Dec 04 17:15:07 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Dec 04 17:15:07 2009 +0800"
      },
      "message": "Improve error message thrown when eglCreateContext fails.\n"
    },
    {
      "commit": "51438c18f5af96c16ac33a85b3ebaacf200b7b5e",
      "tree": "370d6bcb2e20899100ae4f1ea70976bcb2b6c322",
      "parents": [
        "a45e925108f6c9d35d9e7b5e8def9aba49ee0dba"
      ],
      "author": {
        "name": "Li Wenhao",
        "email": "gliwenhao@gmail.com",
        "time": "Wed Jul 29 14:45:08 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Dec 02 21:15:33 2009 -0800"
      },
      "message": "the vertex index should be \"first + i\".\n"
    },
    {
      "commit": "355c20cb9276148fd9b7074c5199aedeb497406e",
      "tree": "d4085aab602da9d15a7ff7bf492dc224d64bc854",
      "parents": [
        "d2fa1ff139f23bf6e92495b916a4afb6a43bab3f"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Nov 27 19:59:05 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Nov 27 20:03:13 2009 +0800"
      },
      "message": "Unhide the Android OpenGL ES 2.0 API\n\nAdd a Matrix.setLookAtM method for computing a look-at viewing transform.\n\nChange GLU.lookAt to use Matrix.setLook.\n"
    },
    {
      "commit": "6a9a87da47bcfb032d0585f41d77abb6300ea63c",
      "tree": "543acf14fcee71d9faa1c17f54aa68192d347716",
      "parents": [
        "54b9a7c9f1b5def5ee1bde515b3fecaafc238014",
        "85a9498a2f33d62a4313a3561b5468456974696e"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Nov 25 14:12:04 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 25 14:12:04 2009 -0800"
      },
      "message": "am 85a9498a: am 9c0b39c4: am ca00dee2: Merge change I5aa3adcf into eclair\n\nMerge commit \u002785a9498a2f33d62a4313a3561b5468456974696e\u0027\n\n* commit \u002785a9498a2f33d62a4313a3561b5468456974696e\u0027:\n  Improve the exception message text by including eglGetError().\n"
    },
    {
      "commit": "85a9498a2f33d62a4313a3561b5468456974696e",
      "tree": "d253b0415c7ba791e2478ee6f1e527beb2323e0b",
      "parents": [
        "03c185bf763fd2a289131d64e4b14d4a5461d80f",
        "9c0b39c47efade5ee2303a8f8ffbd9cf87c2c841"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Nov 25 14:04:14 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 25 14:04:14 2009 -0800"
      },
      "message": "am 9c0b39c4: am ca00dee2: Merge change I5aa3adcf into eclair\n\nMerge commit \u00279c0b39c47efade5ee2303a8f8ffbd9cf87c2c841\u0027 into eclair-mr2-plus-aosp\n\n* commit \u00279c0b39c47efade5ee2303a8f8ffbd9cf87c2c841\u0027:\n  Improve the exception message text by including eglGetError().\n"
    },
    {
      "commit": "9c0b39c47efade5ee2303a8f8ffbd9cf87c2c841",
      "tree": "22f00f90c4efac18e962bdeba071fd79227d259d",
      "parents": [
        "c61b0de83bc0c6f7bb1d10bcfc02ab29f3a49caa",
        "ca00dee21425882619aef4ecbe3e0d08de0544e5"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Nov 25 13:48:54 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 25 13:48:54 2009 -0800"
      },
      "message": "am ca00dee2: Merge change I5aa3adcf into eclair\n\nMerge commit \u0027ca00dee21425882619aef4ecbe3e0d08de0544e5\u0027 into eclair-mr2\n\n* commit \u0027ca00dee21425882619aef4ecbe3e0d08de0544e5\u0027:\n  Improve the exception message text by including eglGetError().\n"
    },
    {
      "commit": "5aa3adcf304ec3767b3c22128acb23240d8d0bab",
      "tree": "2ceb679ff56e9964bacc79c3e29c744f58a131c0",
      "parents": [
        "55896f3c5121e73e3f657ed14e7ee8937ad72449"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Nov 25 13:56:21 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Nov 25 13:56:21 2009 +0800"
      },
      "message": "Improve the exception message text by including eglGetError().\n\nShould help us track down the cause of bug 2285187\n"
    },
    {
      "commit": "6ae4da75422bbb31c3e0a09f616cdaee1d465946",
      "tree": "e005e9f77fc54e462bc4f3b90c397b017a217f70",
      "parents": [
        "560814f6b11abe83ff0c4ed18cac015c276b3181"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Nov 19 19:08:52 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Nov 19 19:08:52 2009 +0800"
      },
      "message": "Extend GLSurfaceView to make it easy to create an OpenGL ES 2.0 context\n\nProvide a new method, GLSurfaceView.setEGLContextClientVersion. Clients\ncall this method to define which level of OpenGL ES support they want.\n\nThis method only affects the default behavior of GLSurfaceView. If clients\nhave supplied their own EGLContextFactory or EGLConfigChooser then they\nare on their own if they want to create an OpenGL ES 2.0 context.\n\nThis API is currently hidden.\n\nUpdate the gl2_java test to use this new API.\n\nUpdate the gl2_java test\u0027s AndroidManifest.xml file to indicate that\nit requires OpenGL ES 2.0.\n"
    },
    {
      "commit": "560814f6b11abe83ff0c4ed18cac015c276b3181",
      "tree": "ef52858af693f7e154514349d2f300c69e3183b0",
      "parents": [
        "f9cf96ae1d342b1af659041e1bc5d464126f8e49"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Nov 19 16:34:55 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Nov 19 16:34:55 2009 +0800"
      },
      "message": "Add a Java API for OpenGL ES 2.0.\n\nCurrently this API is hidden.\n\nAdd a test program.\n"
    },
    {
      "commit": "85d3f59ca0fcce0d405d9a024c1e5ff7352803a2",
      "tree": "393e0338eebdde3f54b5a4c995b07bc36bf852bd",
      "parents": [
        "90ea9af3e1f531b1cfcbe9443c26dec9082f75fd",
        "8d0e14723312a9f8286ba95cc559ee000eab1b82"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Nov 17 07:34:53 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 17 07:34:53 2009 -0800"
      },
      "message": "am 8d0e1472: am a822f02b: resolved conflicts for merge of dc49acb0 to eclair-mr2\n\nMerge commit \u00278d0e14723312a9f8286ba95cc559ee000eab1b82\u0027\n\n* commit \u00278d0e14723312a9f8286ba95cc559ee000eab1b82\u0027:\n  More GLSurfaceView cleanup.\n"
    },
    {
      "commit": "8d0e14723312a9f8286ba95cc559ee000eab1b82",
      "tree": "ab91d91583b668c17e1c37cf79eabfb5447fe1d0",
      "parents": [
        "e5fa335b0dffbd06385b6de05ae04b2bd2ea277e",
        "a822f02bb9c7f5bf2e3fa3cb63effc391be158c5"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Nov 16 19:52:12 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 16 19:52:12 2009 -0800"
      },
      "message": "am a822f02b: resolved conflicts for merge of dc49acb0 to eclair-mr2\n\nMerge commit \u0027a822f02bb9c7f5bf2e3fa3cb63effc391be158c5\u0027 into eclair-mr2-plus-aosp\n\n* commit \u0027a822f02bb9c7f5bf2e3fa3cb63effc391be158c5\u0027:\n  More GLSurfaceView cleanup.\n"
    },
    {
      "commit": "a822f02bb9c7f5bf2e3fa3cb63effc391be158c5",
      "tree": "1e966e8efcebb346e51c027a7d0d4b25e29f178b",
      "parents": [
        "6e045e0aa1b465e9e989d3058a5d2fa13dcf026b",
        "dc49acb0289cab2a6e0d73e66b69516605893e28"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Nov 17 11:39:54 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Nov 17 11:39:54 2009 +0800"
      },
      "message": "resolved conflicts for merge of dc49acb0 to eclair-mr2\n"
    },
    {
      "commit": "a08d46d8aaabb53eef4d5dc47272565d50f23c19",
      "tree": "f2f1bb9ca023c1b40241472d40347e0cee3eecb6",
      "parents": [
        "7c1c46000be136ffda36283fdc93bfe3cba72601"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Nov 16 18:48:26 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Nov 16 18:48:26 2009 +0800"
      },
      "message": "More GLSurfaceView cleanup.\n\n+ The mDone flag is now a pair of flags: mShouldExit and mExited. The\nproblem with mDone was that it meant \"had been asked to exit\", but was\nbeing used by some observers as \"had exited\". Using two variables means\nthat observers can observe either \"had been asked to exit\" or \"had exited\",\nas they prefer.\n\n+ Simplyify where we check for mShouldExit. We now check for it at the\n  top of our innermost guardedRun while loop.\n\n+ requestExitAndWait now waits for mExited to be set to true to know\nthat a thread has exited, rather than using join(). This means we can use\nwait() for the check, which releases the sGLThreadManager\nmonitor, avoiding a potential deadlock.\n\n+ move the event queue into the sGLThreadManager monitor. This avoids\nhaving to acquire two locks in order to enque/deque events, which also\navoids the potential for lock ordering deadlocks.\n\n+ Simplify the event dequeueing code. We now deque one event each time\nthrough the main GLSurfaceView loop. Events still have priority over\nrendering, so there isn\u0027t any semantic change, it just cleans up the code.\n\n+ Avoid trying to acquire an egl Surface if we\u0027re paused.\n\n+ To simplify reasoning about the code, call sGLThreadManager.notifyAll()\nin every case where we modify one of the variables that\u0027s protected by\nthe sGLThreadManager monitor. It would be slightly more efficient to only\nnotify when we change variables that could cause a thread to wait(), but\nthen we would have to redo our analysis every time we change any code.\n\n+ Clean up the logic for creating the EGL surface and then calling the\nrenderer\u0027s onSurfaceCreated / onSurfaceChanged methods.\n\n+ Implement work-around for bug 2263168\t\"Need to draw twice after\n  screen rotation...\"\n"
    },
    {
      "commit": "cbce240a0d64f4e3ae52aadf233c708a759a7ecb",
      "tree": "ea5e2e9738a548a0a5eb05c14f65e0b9f2cd4bf6",
      "parents": [
        "ebb8d3bcf7c5559034091e4609d8ddccae2c2a1a",
        "99cf71b0856e00c1ae9631db91702349cceb9bf8"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Nov 10 18:11:04 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 10 18:11:04 2009 -0800"
      },
      "message": "am 99cf71b0: am 83536cee: Merge change I1179efbb into eclair-mr2\n\nMerge commit \u002799cf71b0856e00c1ae9631db91702349cceb9bf8\u0027\n\n* commit \u002799cf71b0856e00c1ae9631db91702349cceb9bf8\u0027:\n  Fix multi-lock ordering issues in GLSurfaceView\n"
    },
    {
      "commit": "99cf71b0856e00c1ae9631db91702349cceb9bf8",
      "tree": "a00a753b096e951cce2bf9c01bc168b4ea768489",
      "parents": [
        "fbac9bdfd40b0676a914e9dae7bdd26829087cae",
        "83536cee2b2b5445c5ba0b22531c23890b82da41"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Nov 10 18:06:05 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 10 18:06:05 2009 -0800"
      },
      "message": "am 83536cee: Merge change I1179efbb into eclair-mr2\n\nMerge commit \u002783536cee2b2b5445c5ba0b22531c23890b82da41\u0027 into eclair-mr2-plus-aosp\n\n* commit \u002783536cee2b2b5445c5ba0b22531c23890b82da41\u0027:\n  Fix multi-lock ordering issues in GLSurfaceView\n"
    },
    {
      "commit": "1179efbb3b8856eb8160e2dd67a300a5d64e8e98",
      "tree": "52c7fcf280eb76e4171e833e5084ae1d9437ab24",
      "parents": [
        "6780d8c006c9381919c0ee4de3d2bdc6d7a728d6",
        "ba56915a71cad672baff5594dbb7c9331bf01283"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Nov 11 10:01:46 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Nov 11 10:01:46 2009 +0800"
      },
      "message": "resolved conflicts for merge of ba56915a to eclair-mr2\n"
    },
    {
      "commit": "67dcd6c2392caf3ff98f35a3d1ec550d229c167b",
      "tree": "424ee1b424f4fc7c69f4df0ea065c7d3dd365c06",
      "parents": [
        "e6ab011b8b8aa6c461e64cabb9b25d890d68edb1"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Nov 10 18:26:42 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Nov 10 18:26:42 2009 +0800"
      },
      "message": "Fix multi-lock ordering issues in GLSurfaceView\n\nThere were potential deadlocks between the per-GLThread monitors and the\nGLThreadManager monitor.\n\nTo avoid these deadlocks we now use a single monitor for\nboth the GLThreadManager state and the per-GLThread state.\n\nConverted GLThreadManager\u0027s semaphore into the equivalent\nsynchronized-wait-notifyAll code. This enables us to wait for\neither mDone, or user events, or the EGL surface with a single \"wait()\".\n\nSimplified the logic used to acquire and release the EGL surface. The\nEGL surface is now only requested while the surfaceFlinger surface\nis acquired.\n\nRemoved the \"egl surface stealing\" policy we had recently inserted.\nIt\u0027s not needed now that we reliably quit when requested.\n\nPulled user event processing outside of the  GLThreadManager monitor\nso that we don\u0027t call any potentially-long-running code while\ninside the monitor.\n\nThis should help with bug 2228262.\n"
    },
    {
      "commit": "2806a6b5ffd1003e217deebb6a9c3d3c6d9d4087",
      "tree": "fe4bba9c7d777cd2a4c85a54dd419b43996fdd46",
      "parents": [
        "7e6422c1cc9606e40332006e73542995070fb2cf",
        "73ae27f0c56fa705dcfb86d784a95b86f10e48ad"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Nov 09 16:14:25 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 09 16:14:25 2009 -0800"
      },
      "message": "am 73ae27f0: am 8da3ac92: resolved conflicts for merge of 3f857b78 to eclair-mr2\n\nMerge commit \u002773ae27f0c56fa705dcfb86d784a95b86f10e48ad\u0027\n\n* commit \u002773ae27f0c56fa705dcfb86d784a95b86f10e48ad\u0027:\n  Allow a GLThread to release and reacquire the EGL Surface as needed.\n"
    },
    {
      "commit": "73ae27f0c56fa705dcfb86d784a95b86f10e48ad",
      "tree": "544814ea82e94aee5e5f552240c20fc9fddefffb",
      "parents": [
        "6720bb8314600a2b55a18159b4a22dc4b18aec88",
        "8da3ac92a6a6247ef06de4d4b684f8635d8fc003"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Nov 09 16:11:11 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 09 16:11:11 2009 -0800"
      },
      "message": "am 8da3ac92: resolved conflicts for merge of 3f857b78 to eclair-mr2\n\nMerge commit \u00278da3ac92a6a6247ef06de4d4b684f8635d8fc003\u0027 into eclair-mr2-plus-aosp\n\n* commit \u00278da3ac92a6a6247ef06de4d4b684f8635d8fc003\u0027:\n  Allow a GLThread to release and reacquire the EGL Surface as needed.\n"
    },
    {
      "commit": "8da3ac92a6a6247ef06de4d4b684f8635d8fc003",
      "tree": "6384e0aecbba872ab451d47528792cbe9a07fb3d",
      "parents": [
        "26c91fa694464c79de39988f9f42cee375ff0a14",
        "3f857b78fc68e5d700139bdc6078c5333b62a9bc"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Nov 10 08:04:53 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Nov 10 08:04:53 2009 +0800"
      },
      "message": "resolved conflicts for merge of 3f857b78 to eclair-mr2\n"
    },
    {
      "commit": "32d416518473f3bf5323d660e5910ca5633ffed6",
      "tree": "91f2387a92133132b0faf49989245c5ca5709291",
      "parents": [
        "a44249500f6c1c7a75b5c420fa2e81c2aa317a10"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Sun Nov 08 10:55:56 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Sun Nov 08 10:55:56 2009 +0800"
      },
      "message": "Allow a GLThread to release and reacquire the EGL Surface as needed.\n\nWe currently only allow one GLThread to have an active EGL Surface at a\ntime.(This may be lifted in the future, when EGL and GL are reentrant.)\n\nPrior to this change we would enforce this rule by having older GLThreads\nquit when a new GLThread started. That had the drawback of leaving the\nolder GLSurfaceViews in a zombie state -- their GLThreads would be\ngone.\n\nWe now enforce this rule by just releasing and reacquiring the EGL surface\ncontext as needed.\n\nSpecific changes to the code:\n\ncreated private helper methods - startEgl and stopEgl to help manage\nstarting and stopping EGL.\n\nMove the calls to sGLThreadManager start and end from the outermost run\nmethod into the startEgl / stopEgl methods.\n\nReworked the wait loop to handle starting and stopping EGL as needed.\n\nneedToWait() gets simpler -- just looks at current status.\n\nsGLThreadManager.shouldQuit was replaced by shouldHaveEgl.\n\n\nThis is another step in fixing bug 2228262.\n"
    },
    {
      "commit": "6518c2bab4e336a08e703018accdf7d5e6a6a1ad",
      "tree": "11d67241d53ce71bba2b30055e4e79e812ce7122",
      "parents": [
        "790c4294da25a9d935ed9a520f9ca3d20a48790f",
        "e54f267f06e86f9c1248742fc56967355721a4e7"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Nov 06 16:56:32 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 06 16:56:32 2009 -0800"
      },
      "message": "am e54f267f: am a3a351e5: resolved conflicts for merge of 4e3fadd0 to eclair-mr2\n\nMerge commit \u0027e54f267f06e86f9c1248742fc56967355721a4e7\u0027\n\n* commit \u0027e54f267f06e86f9c1248742fc56967355721a4e7\u0027:\n  Fix stupid bug in GLThreadManager implementation.\n"
    },
    {
      "commit": "e54f267f06e86f9c1248742fc56967355721a4e7",
      "tree": "5c9afbd9db7305b1e2435e0d97a67b9e9ba8bf7e",
      "parents": [
        "a3c90d930ebabcfffd9d4d7715ad1329e1f8c2d8",
        "a3a351e5d164d0c8b461ae7af86edc0227654a76"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Nov 06 16:45:58 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 06 16:45:58 2009 -0800"
      },
      "message": "am a3a351e5: resolved conflicts for merge of 4e3fadd0 to eclair-mr2\n\nMerge commit \u0027a3a351e5d164d0c8b461ae7af86edc0227654a76\u0027 into eclair-mr2-plus-aosp\n\n* commit \u0027a3a351e5d164d0c8b461ae7af86edc0227654a76\u0027:\n  Fix stupid bug in GLThreadManager implementation.\n"
    },
    {
      "commit": "a3a351e5d164d0c8b461ae7af86edc0227654a76",
      "tree": "a321acc2bd61f1ee164e4db6f01302155d719b47",
      "parents": [
        "f6ff2be323812b5525a0755d194b2fc751ba5968",
        "4e3fadd0c99d2774709a067e017d8fd622440f0e"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Nov 06 16:35:19 2009 -0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Nov 06 16:35:19 2009 -0800"
      },
      "message": "resolved conflicts for merge of 4e3fadd0 to eclair-mr2\n"
    }
  ],
  "next": "a44249500f6c1c7a75b5c420fa2e81c2aa317a10"
}
