From 959c91f7f7b4f921d341264f5b4ef54e702a0df0 Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Wed, 11 Aug 2010 19:35:53 -0700 Subject: Bunch of fixes. Fixes memory leak, fixes multiple context support, fix 3d transforms. Change-Id: I7462cfbc57857dbd4de4e76b9d4cba58a1bce77b --- core/java/android/view/HardwareRenderer.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'core') diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java index cd6b820..44bd6d4 100644 --- a/core/java/android/view/HardwareRenderer.java +++ b/core/java/android/view/HardwareRenderer.java @@ -300,7 +300,6 @@ public abstract class HardwareRenderer { */ if (!mEgl.eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mEglContext)) { throw new RuntimeException("eglMakeCurrent failed"); - } return mEglContext.getGL(); @@ -374,6 +373,15 @@ public abstract class HardwareRenderer { attachInfo.mIgnoreDirtyState = true; view.mPrivateFlags |= View.DRAWN; + // TODO: Don't check the current context when we have one per UI thread + // TODO: Use a threadlocal flag to know whether the surface has changed + if (mEgl.eglGetCurrentContext() != mEglContext || + mEgl.eglGetCurrentSurface(EGL10.EGL_DRAW) != mEglSurface) { + if (!mEgl.eglMakeCurrent(mEglDisplay, mEglSurface, mEglSurface, mEglContext)) { + throw new RuntimeException("eglMakeCurrent failed"); + } + } + onPreDraw(); Canvas canvas = mCanvas; -- cgit v1.1