)]}'
{
  "log": [
    {
      "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": "01e4cfc47d0a2c7e7ab383d2fb23224ec52c0301",
      "tree": "1ea8a7e26b691d9d2150e9ddbd19b04be9b8d5d3",
      "parents": [
        "7b5b27ada12d3680dec20274fa655fd7f73f839e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 24 15:07:24 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jun 24 15:20:48 2010 -0700"
      },
      "message": "Some ActivityThread/ActivityManager cleanup.\n\n- Move PackageInfo out of ActivityThread, renaming to LoadedApk.\n- Rename some of the other PacakgeInfo inner classes to better\n  represent what they are.\n- Rename HistoryRecord to ActivityRecord.\n- Introduce AppGlobals, to eventually let ActivityThread become\n  package scoped.\n\nChange-Id: Ib714c54ceb3cdbb525dce3db9505f31042e88cf0\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": "8a4de4be9ed522c704a45a44a265669e10a8f2eb",
      "tree": "bce6f8ba6f1773dded916701044535a3deb190d9",
      "parents": [
        "f9e573ec337e79043a5ee74fe3c03d97b31e11e6"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Jan 28 20:28:32 2010 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Jan 28 20:28:32 2010 +0800"
      },
      "message": "Implement the GL11ExtensionPack APIs.\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": "d682ab72c5b7781109b0f30ac16202441fb925d6",
      "tree": "a474f497ea34b3a20ed3da1f1cef30d67fd743f8",
      "parents": [
        "39b082356851e29ba7a0af981eaa27d3b08a387b"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Dec 04 17:07:31 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Dec 04 17:07:31 2009 +0800"
      },
      "message": "Improve error reporting by always returning the public\nEGL10.EGL_NO_XXX objects for displays, surfaces, and contexts.\n\nThis allows clients to compare the returned object against\nthe public EGL10.EGL_NO_XXX object using a simple \u003d\u003d operation.\n\nThis fixes bug 2303947 \"Java layer EGL API makes it difficult\nto tell when certain methods have failed\"\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"
    },
    {
      "commit": "a44249500f6c1c7a75b5c420fa2e81c2aa317a10",
      "tree": "7a793f8e3e1cb0abc67246af04c195dbbcd6d2b8",
      "parents": [
        "8d51f7101d2427953dbff9b4b8f8c9fdc0dc4a91"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Sat Nov 07 07:49:15 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Sat Nov 07 07:49:15 2009 +0800"
      },
      "message": "Fix stupid bug in GLThreadManager implementation.\n\nThe code intended to copy the old value of a field, before the\nfield was updated. However, what the code was actually doing was\ncopying the new value of the field, after the field was updated.\n\nThe fix was to move the copy to before the update.\n\nThis is work towards fixing bug 2228262\n"
    },
    {
      "commit": "3f7b5a13ca6fdd31c934850ed802a74714e7b2cc",
      "tree": "a800e02100f4149769e81e3178a9b1f8ad64180c",
      "parents": [
        "790bc8f1473654f2da3ad095d6560096676ecae5",
        "a9e47546a5132b30a2ed1e24d9193d4db09ef323"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Nov 06 00:40:00 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 06 00:40:00 2009 -0800"
      },
      "message": "am a9e47546: am 79447b20: resolved conflicts for merge of 84872738 to eclair-mr2\n\nMerge commit \u0027a9e47546a5132b30a2ed1e24d9193d4db09ef323\u0027\n\n* commit \u0027a9e47546a5132b30a2ed1e24d9193d4db09ef323\u0027:\n  Improve GLSurfaceView to avoid deadlocks and race conditions.\n"
    },
    {
      "commit": "a9e47546a5132b30a2ed1e24d9193d4db09ef323",
      "tree": "496054740c8e481497fb631d32740bf6486ac968",
      "parents": [
        "78e502df5163e8bcdd803af7f0a3958322a288dc",
        "79447b2087c8c820d742185dda7305101f9656f0"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Nov 06 00:25:44 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Nov 06 00:25:44 2009 -0800"
      },
      "message": "am 79447b20: resolved conflicts for merge of 84872738 to eclair-mr2\n\nMerge commit \u002779447b2087c8c820d742185dda7305101f9656f0\u0027 into eclair-mr2-plus-aosp\n\n* commit \u002779447b2087c8c820d742185dda7305101f9656f0\u0027:\n  Improve GLSurfaceView to avoid deadlocks and race conditions.\n"
    },
    {
      "commit": "79447b2087c8c820d742185dda7305101f9656f0",
      "tree": "9244ad5c29a8a8d1789d7fd94647af3c86b56260",
      "parents": [
        "892574f5f91b834f70ace880301db61f60d58362",
        "84872738f291faf25ae07235cde382d38c796567"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Nov 06 00:13:38 2009 -0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Nov 06 00:13:38 2009 -0800"
      },
      "message": "resolved conflicts for merge of 84872738 to eclair-mr2\n"
    },
    {
      "commit": "8b2c9c9ecb08d25244fa97fb42c2c315ae3cf03d",
      "tree": "0267829c2e976a2b97f3eefa4a03ee47f9f06f6c",
      "parents": [
        "bfa68abc955ed1fe6cf6d98e42f344a8d623fab7"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Nov 06 10:21:46 2009 +0800"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Nov 06 10:21:46 2009 +0800"
      },
      "message": "Improve GLSurfaceView to avoid deadlocks and race conditions.\n\nThis is work towards fixing bug 2228262\n\nSpecific issues fixed by this change:\n\n+ GLThread names now include the thread id, making it easier to tell one\nGLThread from another.\n\n+ A private final static boolean LOG_THREADS can be set to true at compile\ntime to print out thread-related trace information, helpful for debugging\nGLSurfaceView behavior. This static defaults to \"false\".\n\n+ Changed calls to \"notify\" to \"notifyAll\" to make the code more\nrobust in case more than two threads are blocked on the same monitor.\n\n+ Add a GLThreadManager to help manage the transition to\na new GLThread. Currently only one GLThread can be active in an address\nspace. When the second thread starts up, the GLThreadManager helps the old\nGLThread to shut down,\n\n+ Make sure we stop waiting for dead GLThreads. This is done by adding\nchecks for a variable mDone being true to our monitor wait loops. And\nwe use a \"finally\" clause at the end of GLThread.run() method to set mDone\nand notifyAll any wait loops.\n"
    },
    {
      "commit": "86a19b3d2c873113d6da49257cf720f90d1c2498",
      "tree": "038d510bf663dddc1f1243fabc6c778c6a7e036e",
      "parents": [
        "8f26c13e5957d24ca384f119a774968a409747fa",
        "70d12dda7c1e36850e1ed95d719bc1d6dadb6fef"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Oct 13 20:10:10 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 13 20:10:10 2009 -0700"
      },
      "message": "am 70d12dda: am 3743559d: Merge change I28023911 into eclair-mr2\n\nMerge commit \u002770d12dda7c1e36850e1ed95d719bc1d6dadb6fef\u0027\n\n* commit \u002770d12dda7c1e36850e1ed95d719bc1d6dadb6fef\u0027:\n  Add additional error checking of EGL function calls.\n"
    },
    {
      "commit": "70d12dda7c1e36850e1ed95d719bc1d6dadb6fef",
      "tree": "3505d738b3c848c27d2658a5b2dd58a983e090cd",
      "parents": [
        "767741ffd5d14471b88791e5db93c08e8d2571eb",
        "3743559db03645ef7d319c0344238c335a315b65"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Oct 13 20:00:51 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 13 20:00:51 2009 -0700"
      },
      "message": "am 3743559d: Merge change I28023911 into eclair-mr2\n\nMerge commit \u00273743559db03645ef7d319c0344238c335a315b65\u0027 into eclair-mr2-plus-aosp\n\n* commit \u00273743559db03645ef7d319c0344238c335a315b65\u0027:\n  Add additional error checking of EGL function calls.\n"
    },
    {
      "commit": "28023911a4b572f0ca640e7a3e3f9a0dd6f535e9",
      "tree": "51676df2e0efb856b7b300e47fff9a8f5fbb9a47",
      "parents": [
        "3b7a1e6d70fda4ce834034930847fe2cc75de515"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Oct 13 19:52:06 2009 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Oct 13 19:52:06 2009 -0700"
      },
      "message": "Add additional error checking of EGL function calls.\n"
    },
    {
      "commit": "ef79172c5501ea0110c24c24871d3b62be8997ed",
      "tree": "8aebd99fa1d28dd98bab4ca3a6562b54e4d27134",
      "parents": [
        "4ec63785662fc9f0343e8f8da22949aa2418699c",
        "98a51b86869e9cf2a1624f8540c4c126962a3a85"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Oct 13 18:20:28 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 13 18:20:28 2009 -0700"
      },
      "message": "am 98a51b86: am 3b7a1e6d: Merge change Ic52ba78c into eclair-mr2\n\nMerge commit \u002798a51b86869e9cf2a1624f8540c4c126962a3a85\u0027\n\n* commit \u002798a51b86869e9cf2a1624f8540c4c126962a3a85\u0027:\n  Allow multiple OpenGL contexts on systems that support them.\n"
    },
    {
      "commit": "98a51b86869e9cf2a1624f8540c4c126962a3a85",
      "tree": "d4103f5acb97ae0f7a22dd74c5667e6fbe37db72",
      "parents": [
        "a788f09894f5b2113230a9ced9105fd6ad4c9a52",
        "3b7a1e6d70fda4ce834034930847fe2cc75de515"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Oct 13 18:14:51 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 13 18:14:51 2009 -0700"
      },
      "message": "am 3b7a1e6d: Merge change Ic52ba78c into eclair-mr2\n\nMerge commit \u00273b7a1e6d70fda4ce834034930847fe2cc75de515\u0027 into eclair-mr2-plus-aosp\n\n* commit \u00273b7a1e6d70fda4ce834034930847fe2cc75de515\u0027:\n  Allow multiple OpenGL contexts on systems that support them.\n"
    },
    {
      "commit": "c52ba78cab001ff68b4823f4769c129b8acfddee",
      "tree": "9036181a31e926c067bb58f8d7c312bd0776a3d7",
      "parents": [
        "69e21f5f6e0d04539cd92848ea009dd615d88c2c"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Oct 13 17:58:47 2009 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Tue Oct 13 17:58:47 2009 -0700"
      },
      "message": "Allow multiple OpenGL contexts on systems that support them.\n\nPreviously we always restricted the number of OpenGL contexts to 1.\n"
    },
    {
      "commit": "d70213e70ed4b2648d696a554a0ba7dac4c32757",
      "tree": "62edecccc19e3b7a6b1542e85a52015726d99297",
      "parents": [
        "20e3c9d818d914eb04783d32448b8102fe41974e"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Oct 12 19:20:49 2009 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Oct 12 19:20:49 2009 -0700"
      },
      "message": "Implement GL11 and GL11Ext methods for GL Log and Error wrappers.\n\nUntil now we had been throwing UnsupportedOperationException when\ndevelopers tried to use the GL11 or GL11Ext methods. Now we handle\nthese methods correctly, passing their arguments through to the\nwrapped interface\u0027s methods.\n\nFixes bug 2167522\tGLUtils debug wrapper doesn\u0027t support GL11 features\n"
    },
    {
      "commit": "a46c138ab37e141f195d449f453dda8bd1df0947",
      "tree": "f75f710e3a0b6b1d388ec1925877d13092bb4f16",
      "parents": [
        "dd9649931fa2ce3a9fa469438cd81fc748355be0",
        "07e0dce441ea056710efd76d7df18b8833de772a"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Sep 25 19:16:13 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 25 19:16:13 2009 -0700"
      },
      "message": "am 07e0dce4: Merge change 27202 into eclair\n\nMerge commit \u002707e0dce441ea056710efd76d7df18b8833de772a\u0027 into eclair-plus-aosp\n\n* commit \u002707e0dce441ea056710efd76d7df18b8833de772a\u0027:\n  Check for failure to create EGL surfaces and contexts.\n"
    },
    {
      "commit": "2e26fc08aa1939c19e939d983bd608cdec050024",
      "tree": "7f3caddcb9c5a5e7e8c4e24177e86bd1cee3e98b",
      "parents": [
        "7756cbeef475127ed56bfeabecb3c291366a952f"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Sep 25 19:06:30 2009 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Sep 25 19:06:30 2009 -0700"
      },
      "message": "Check for failure to create EGL surfaces and contexts.\n"
    },
    {
      "commit": "bf0d9041202eb52b036a8a5854dd6fef55d87919",
      "tree": "cf6c89a73a53c06163d884deca2185e08dde1947",
      "parents": [
        "54a0c801d56e455278fcfdfd8be27b6dc73c48eb",
        "b87f24a6a88a994256ca97b69904af28824bc9ce"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Sep 24 14:16:48 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 24 14:16:48 2009 -0700"
      },
      "message": "am b87f24a6: Merge change 26908 into eclair\n\nMerge commit \u0027b87f24a6a88a994256ca97b69904af28824bc9ce\u0027 into eclair-plus-aosp\n\n* commit \u0027b87f24a6a88a994256ca97b69904af28824bc9ce\u0027:\n  Fix broken Javadoc link for GLSurfaceView.EGLWindowSurfaceFactory.\n"
    },
    {
      "commit": "d40dfbbbff81219258ca36b762a89ff503154345",
      "tree": "98fc5a33661c54f4173b3cc1e68174a5b1058ef1",
      "parents": [
        "f22fc124ff7974d0b6380199f7d53e66bb7feb29"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Sep 24 14:10:17 2009 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Sep 24 14:10:17 2009 -0700"
      },
      "message": "Fix broken Javadoc link for GLSurfaceView.EGLWindowSurfaceFactory.\n"
    },
    {
      "commit": "c055f173c9211b27184c56ce385df5278db4011c",
      "tree": "51c1a1999147ebb946fe1fc28c7c47910e69587e",
      "parents": [
        "34b9dab1ba1db40378a3f425d0591d17e2fb91be",
        "1267b0e1844ac802de92b203007513573e4886fd"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Sep 24 12:06:29 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 24 12:06:29 2009 -0700"
      },
      "message": "am 1267b0e1: Merge change 26882 into eclair\n\nMerge commit \u00271267b0e1844ac802de92b203007513573e4886fd\u0027 into eclair-plus-aosp\n\n* commit \u00271267b0e1844ac802de92b203007513573e4886fd\u0027:\n  Publish minor additions to GLSurfaceView API.\n"
    },
    {
      "commit": "82cbaab450d3c5d9f3d52c49881212f250d7cd97",
      "tree": "56d65701be8b2e4710a03bdafcde925318fd0bf6",
      "parents": [
        "4cc86e1ae80eb1938500fe5fa06bbdf8b4b7b50d"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Sep 24 11:55:04 2009 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Sep 24 11:55:04 2009 -0700"
      },
      "message": "Publish minor additions to GLSurfaceView API.\n\nClients can now modify the way that the EGL context and the EGL window\nsurface are created and destroyed.\n"
    },
    {
      "commit": "b09c63e24043a6ca03f04709a92f528d233fd8d7",
      "tree": "f7d941d8545d7ad20b4bee7a4b1876af479186ce",
      "parents": [
        "5ddbc0d59d8143d50a19950624c38fdb8102156b",
        "311ed0191d6423e41b1cf5137a38e53504494818"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Sep 23 15:03:46 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 23 15:03:46 2009 -0700"
      },
      "message": "am 311ed019: Merge change 26679 into eclair\n\nMerge commit \u0027311ed0191d6423e41b1cf5137a38e53504494818\u0027 into eclair-plus-aosp\n\n* commit \u0027311ed0191d6423e41b1cf5137a38e53504494818\u0027:\n  Create samples showing how to call OpenGL from JNI libraries.\n"
    },
    {
      "commit": "a8fecb87c5eaaefc9ca6272e3b59ef88d293dd6d",
      "tree": "7652f77751c0f9aa13629288c325e82d272e65cf",
      "parents": [
        "63147705bc2893d6ad43270e04beb9ee01e2ad53"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Sep 23 14:48:07 2009 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Sep 23 14:48:07 2009 -0700"
      },
      "message": "Create samples showing how to call OpenGL from JNI libraries.\n"
    },
    {
      "commit": "e2317438433d4f2f822fe0c3659e70c89f6a707f",
      "tree": "b3ea23b2a1a1eb6da5694c9ad9086f8f3e93dab2",
      "parents": [
        "4a1d8788dec5630b7a1874f661c6cbd1fc863328",
        "1167b43c3d1ca232c9b4e0a75343b6b3cb90f0df"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Sep 21 19:31:42 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 21 19:31:42 2009 -0700"
      },
      "message": "am 1167b43c: Merge change 26317 into eclair\n\nMerge commit \u00271167b43c3d1ca232c9b4e0a75343b6b3cb90f0df\u0027 into eclair-plus-aosp\n\n* commit \u00271167b43c3d1ca232c9b4e0a75343b6b3cb90f0df\u0027:\n  Allow GLSurfaceView clients to customize EGL Surfaces and Contexts.\n"
    },
    {
      "commit": "15e1c6dc7a778590068b1cad55beea2bc6159509",
      "tree": "c35207d5fd479c56b89fa9b4388393bba092d70d",
      "parents": [
        "1bd888ba2e0976a179258cfa65ef07be31602a0a"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Sep 21 19:19:25 2009 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Sep 21 19:19:25 2009 -0700"
      },
      "message": "Allow GLSurfaceView clients to customize EGL Surfaces and Contexts.\n\nThis API is hidden for now, will expose once it\u0027s been tested more.\n"
    },
    {
      "commit": "5ac5b68bf103036843deb2e489d07e46c49c4bbd",
      "tree": "c3630b1503d6c8a6e8ad1fe15417bc7a2c877fcb",
      "parents": [
        "5c5be2499f25853d0af2154862e648a10da2e4c6",
        "5222a9571ea2538c989608d376ac71eabe0f09d4"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Sep 21 16:09:45 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 21 16:09:45 2009 -0700"
      },
      "message": "am 5222a957: Merge change 26270 into eclair\n\nMerge commit \u00275222a9571ea2538c989608d376ac71eabe0f09d4\u0027 into eclair-plus-aosp\n\n* commit \u00275222a9571ea2538c989608d376ac71eabe0f09d4\u0027:\n  Fix GLSurfaceView to sync surfaceDestroyed with GL rendering thread\n"
    },
    {
      "commit": "1bd888ba2e0976a179258cfa65ef07be31602a0a",
      "tree": "5d1d9ef76fd5f1c29e029f1ead80e0116548ade1",
      "parents": [
        "a953ed4bc08cf5fc98f17a399adbd8afdd8293d5"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Sep 21 15:59:17 2009 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Sep 21 15:59:17 2009 -0700"
      },
      "message": "Fix GLSurfaceView to sync surfaceDestroyed with GL rendering thread\n\nUntil now we had a race condition where the GL rendering thread could\ncontinue rendering a frame after we have returned from the\nSurfaceHolder.Callback.surfaceDestroyed notification.\n"
    },
    {
      "commit": "85a2c7f1cad8fd55ed72a8a3dbb2b36632ebbff3",
      "tree": "36dea48bb2bef6646ae333bad57af4955b5379f8",
      "parents": [
        "f84b803478eeb3ce34da55f242d9b9685c6c943d",
        "0369a7c3ac97b4791716ddd183e83309b1455476"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Sep 01 11:46:14 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Sep 01 11:46:14 2009 -0700"
      },
      "message": "merge from open-source master\n"
    },
    {
      "commit": "0648422f6721953cee30941b6798ded18e0ad2fb",
      "tree": "42e18673e9ae841fb1d5d284d09bda754d6b7748",
      "parents": [
        "46ba1c964f10fc9bd604134e5b20483daa0c86a9",
        "219749df3ef8ad8efa4a1d4889403e179c268067"
      ],
      "author": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Tue Aug 25 14:37:40 2009 -0700"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Tue Aug 25 14:37:40 2009 -0700"
      },
      "message": "Merge change 10840\n\n* changes:\n  the vertex index should be \"first + i\".\n"
    },
    {
      "commit": "82fd4fce16b9bbde25d044acc86ddf7306ebdd10",
      "tree": "5d831d3f987bb6d1d62d8bca692ce4c5218c6432",
      "parents": [
        "dd8cb62bdf48ec0096c0ed665996a25320d477e2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 20 19:09:34 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 20 19:09:34 2009 -0700"
      },
      "message": "fix a bug in ComponentSizeChooser where it could pick a software EGLConfig instead of a better h/w one.\n\nWe now just try to honor the stencil / depth buffer \"at least\", while doing a \"shortest distance\" on the colors.\n"
    },
    {
      "commit": "317a6280cc109e873646e4652be1582d870eedfd",
      "tree": "3b6d41d465282970f498e172b81ed0ee83e3183e",
      "parents": [
        "81655243a6a373cfde1e689970eeb62af19622d1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 13 17:29:02 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Aug 13 18:19:32 2009 -0700"
      },
      "message": "Surface::GPU and Surface::HARDWARE are now deprecated; they will be set automatically if needed.\n\nthis also ripples into the window manager API by making some constant there deprecated as well.\n"
    },
    {
      "commit": "219749df3ef8ad8efa4a1d4889403e179c268067",
      "tree": "428b0d20172148ed82a1dee08c6e08088901670b",
      "parents": [
        "8ecb36eec61f119f500a805b82438aadb3396a19"
      ],
      "author": {
        "name": "Li Wenhao",
        "email": "gliwenhao@gmail.com",
        "time": "Wed Jul 29 14:45:08 2009 +0800"
      },
      "committer": {
        "name": "Li Wenhao",
        "email": "gliwenhao@gmail.com",
        "time": "Wed Jul 29 14:45:08 2009 +0800"
      },
      "message": "the vertex index should be \"first + i\".\n"
    },
    {
      "commit": "7e263332e0c68f67868cb3245bf42f41e847d816",
      "tree": "52b0cff91b2cad4684c1367f8ca874bc1be7df68",
      "parents": [
        "ef6b66cbbbe7ae8ee0450cbbaae4194b069679a1"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Jul 22 15:22:59 2009 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Jul 22 15:22:59 2009 -0700"
      },
      "message": "Remove recently-added android.opengl.Version API\n\nThere\u0027s another already-existing way of obtaining this information,\nthe ConfigurationInfo.reqGlEsVersion field returned from\nActivityManager.getDeviceConfigurationInfo.\n"
    },
    {
      "commit": "1baf11b116d4094ea1f7149bbf1348d6290a637e",
      "tree": "06b3f68a8945c71efb5774b15ae309ac75c0447a",
      "parents": [
        "11b822d2a91ea17c34c0cb1c11e80a9a30d72864"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Jul 22 12:59:49 2009 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Jul 22 12:59:49 2009 -0700"
      },
      "message": "Add a public API that reports the supported OpenGLES API level.\n"
    },
    {
      "commit": "cf4550c3198d6b3d92cdc52707fe70d7cc0caa9f",
      "tree": "6510f35ad004f1a4640b48264c290926e8596d7a",
      "parents": [
        "4cf03d381b2dff908857fceff0bec445f8d44f36"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Jul 21 11:16:54 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Jul 21 11:16:54 2009 -0700"
      },
      "message": "donut snapshot\n"
    },
    {
      "commit": "91a27ae2fec23b420244258636d2370117e86f5e",
      "tree": "5b2b1b47724a16dfb5b0b3f1850ff8e6c5606808",
      "parents": [
        "7d143b89b714e077f8fd7dbac80945c76bfd9814"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Jun 15 21:03:24 2009 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Mon Jun 15 21:03:24 2009 -0700"
      },
      "message": "Allow pre-Donut apps to use indirect Buffers in GL11 Pointer methods.\n\nApps targeting Donut and newer will throw an exception.\n\nWe use a heuristic to determine whether an app is pre-Donut or not:\nWe take the address space\u0027s __progname, and use that as the application\u0027s\npackage name. For simple applications this is correct.\n"
    },
    {
      "commit": "843ef36f7b96cc19ea7d2996b7c8661b41ec3452",
      "tree": "560e1648c99a93986f8b7deef851ef8bb8029db7",
      "parents": [
        "358d23017d0d6c4636eb7599ae7a9b48108899a3"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed May 20 11:28:04 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed May 20 11:28:04 2009 -0700"
      },
      "message": "donut snapshot\n"
    },
    {
      "commit": "e20ea783a12f1031482c3aa01938efe39dcbf0a2",
      "tree": "b32727a25f4cd4ca8c6ced40a9feb4ef6a665b9d",
      "parents": [
        "538bcd702c0053772245dfbb634c266959cf6af9"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu May 07 18:28:29 2009 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu May 07 18:28:29 2009 -0700"
      },
      "message": "Require native-order direct buffers for glXXXPointer APIs.\n\nThis was always a documented restriction, but was not enforced by the runtime until now.\n\nUntil now, if you passed in some other kind of buffer, it would sometimes work, and\nsometimes fail. The failures happened when the Java VM moved the buffer data while\nOpenGL was still holding a pointer to it.\n\nNow we throw an exception rather than leaving the system in a potentially bad state.\n"
    },
    {
      "commit": "a379585e6e3ff41db6d71a5cd0a0403931bc525d",
      "tree": "38728985bfdc9da616259cfc4905587da798d6c6",
      "parents": [
        "7fc4b281750be2442a327e7aa9fb03c44096caf3"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Apr 24 10:35:11 2009 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Fri Apr 24 13:07:17 2009 -0700"
      },
      "message": "Enable static Java APIs for OpenGL ES 1.1 extensions.\n\nThis is just plumbing. The Java APIs existed already, but there were no C APIs to hook the Java APIs\nup to. Now there are C APIs, so we can call them.\n\nOf course, whether or not the C APIs actually work when you call them depend upon the\ncapabilities of the active OpenGL driver, which must be checked at run time.\n\nAlso, while we\u0027re here, make the glGetString method static. It was always supposed to be static,\nbut was accidentally implemented as non-static, because the code was copied from the non-static\nOpenGL ES classes.\n"
    },
    {
      "commit": "27f8002e591b5c579f75b2580183b5d1c4219cd4",
      "tree": "23fafecbd64e66b7a866510c8163d34c3e506df8",
      "parents": [
        "f5bfda1fcecc5d8553eab16182e2f6579214ede2"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Wed Apr 15 19:13:17 2009 -0700"
      },
      "committer": {
        "name": "Jack Palevich",
        "email": "jackpal@google.com",
        "time": "Thu Apr 16 15:20:55 2009 -0700"
      },
      "message": "Add an Android-specific static OpenGL ES 1.1 Java API.\n\nThis change adds four new public classes that expose a static OpenGL ES 1.1 API:\n\n\tandroid.opengl.GLES10\n\tandroid.opengl.GLES10Ext\n\tandroid.opengl.GLES11\n\tandroid.opengl.GLES11Ext\n\nBenefits:\n\n + The static API is slightly faster (1% to 4%) than the existing Interface based JSR239 API.\n + The static API is similar to the C API, which should make it easier to import C-based\n   example code.\n + The static API provides a clear path for adding new OpenGL ES 1.1 extensions\n   and OpenGL ES 2.0 APIs, neither of which currently have a JSR standard.\n\nExample:\n\n  import static android.opengl.GLES10.*;\n\n  ...\n\n  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);\n\nNote that it is possible to mix-and-match calls to both the static and JSR239 APIs.\nThis works because neither API maintains state. They both call through to the same underlying\nC OpenGL ES APIs.\n\nImplementation details:\n\nThis change enhances the \"glgen\" \"gen\" script to generate both the original JSR239 and\nnew static OpenGL ES APIs. The contents of the generated JSR239 classes remained the same as before,\nso there is no need to check in new versions of the generated JSR239 classes.\n\nAs part of this work the gen script was updated to be somewhat more robust, and to\nwork with git instead of perforce. The script prints out commands to git add the generated files,\nbut leaves it up to the script runner to actually execute those commands.\n"
    },
    {
      "commit": "b1970201ecedde4cee25ded12efd5b09e976a6f1",
      "tree": "f7e716487336ede0ded80b11fb9f96f47f916a4a",
      "parents": [
        "23cda69aaa82718ad9cd29220b5b11b0de205493"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "",
        "time": "Thu Apr 09 15:00:37 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Apr 09 15:00:37 2009 -0700"
      },
      "message": "AI 145526: am: CL 145249 Correct misspelling of constant RENDERMODE_CONTUOUSLY --\u003e RENDERMODE_CONTINUOUSLY\n  Original author: jackpal\n  Merged from: //branches/cupcake/...\n\nAutomated import of CL 145526\n"
    },
    {
      "commit": "23cda69aaa82718ad9cd29220b5b11b0de205493",
      "tree": "ede5b253699a13671d1da87ccdfb8ecbad0859a5",
      "parents": [
        "2dcaf4ee664528c39cddbe945da4983f196f4783"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "",
        "time": "Thu Apr 09 14:51:25 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Apr 09 14:51:25 2009 -0700"
      },
      "message": "AI 145523: am: CL 145244 Fully document GLSurfaceView and related classes.\n  Original author: jackpal\n  Merged from: //branches/cupcake/...\n\nAutomated import of CL 145523\n"
    },
    {
      "commit": "93f411386a570082f25996cb373bc338c6beee7a",
      "tree": "a65d0e57ff3007aa93ba669681852ea2c1aa1e17",
      "parents": [
        "722a96cbb4236fa8b4d84f7b1e1b64b30e656cd0"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "",
        "time": "Wed Apr 08 19:28:00 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Apr 08 19:28:00 2009 -0700"
      },
      "message": "AI 145249: Correct misspelling of constant RENDERMODE_CONTUOUSLY --\u003e RENDERMODE_CONTINUOUSLY\n  BUG\u003d1766678\n\nAutomated import of CL 145249\n"
    },
    {
      "commit": "722a96cbb4236fa8b4d84f7b1e1b64b30e656cd0",
      "tree": "6a62dc465fbaa3e37e0e29548cd5fb70f871f05e",
      "parents": [
        "9bfc99a3087efa6c09a5c8b443b0a2ea9e51a3f4"
      ],
      "author": {
        "name": "Jack Palevich",
        "email": "",
        "time": "Wed Apr 08 19:02:20 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Apr 08 19:02:20 2009 -0700"
      },
      "message": "AI 145244: Fully document GLSurfaceView and related classes.\n  BUG\u003d1766685\n\nAutomated import of CL 145244\n"
    }
  ],
  "next": "b8488808899d27ea3d2c9d0091745012e13e3554"
}
