From eca9b1f53c2c291cbfb89b5f3cc45db7bdca6c7d Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Fri, 26 Aug 2011 13:36:37 -0700 Subject: Prevent crash in VPN settings Bug #5217245 Change-Id: Ibacf4cbd40537cd417f1518b5ac4367a3f3d7d03 --- core/java/android/view/HardwareRenderer.java | 9 +++++---- core/java/android/view/ViewRootImpl.java | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java index 926d42489460..2bf16d89616c 100644 --- a/core/java/android/view/HardwareRenderer.java +++ b/core/java/android/view/HardwareRenderer.java @@ -413,8 +413,8 @@ public abstract class HardwareRenderer { if (error != EGL_SUCCESS) { // something bad has happened revert to // normal rendering. - fallback(error != EGL11.EGL_CONTEXT_LOST); Log.w(LOG_TAG, "EGL error: " + GLUtils.getEGLErrorString(error)); + fallback(error != EGL11.EGL_CONTEXT_LOST); } } } @@ -702,8 +702,9 @@ public abstract class HardwareRenderer { @Override void setup(int width, int height) { - checkCurrent(); - mCanvas.setViewport(width, height); + if (validate()) { + mCanvas.setViewport(width, height); + } } boolean canDraw() { @@ -810,9 +811,9 @@ public abstract class HardwareRenderer { if (!mEglContext.equals(sEgl.eglGetCurrentContext()) || !mEglSurface.equals(sEgl.eglGetCurrentSurface(EGL_DRAW))) { if (!sEgl.eglMakeCurrent(sEglDisplay, mEglSurface, mEglSurface, mEglContext)) { - fallback(true); Log.e(LOG_TAG, "eglMakeCurrent failed " + GLUtils.getEGLErrorString(sEgl.eglGetError())); + fallback(true); return SURFACE_STATE_ERROR; } else { return SURFACE_STATE_UPDATED; diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 6ea863ff9709..a0cc28761ca0 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -1352,7 +1352,7 @@ public final class ViewRootImpl extends Handler implements ViewParent, mAttachInfo.mHardwareRenderer != null && mAttachInfo.mHardwareRenderer.isEnabled())) { mAttachInfo.mHardwareRenderer.setup(mWidth, mHeight); - if (!hwInitialized) { + if (!hwInitialized && mAttachInfo.mHardwareRenderer.isEnabled()) { mAttachInfo.mHardwareRenderer.invalidate(mHolder); } } -- cgit v1.2.3-59-g8ed1b