summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2010-08-11 19:35:53 -0700
committerRomain Guy <romainguy@google.com>2010-08-11 19:35:53 -0700
commit959c91f7f7b4f921d341264f5b4ef54e702a0df0 (patch)
tree0b6e7264bf5680cb2dea83cf587449fde9802034 /core/java
parent943fbb4f4006273ae5983da42143d721ae05dfd4 (diff)
downloadframeworks_base-959c91f7f7b4f921d341264f5b4ef54e702a0df0.zip
frameworks_base-959c91f7f7b4f921d341264f5b4ef54e702a0df0.tar.gz
frameworks_base-959c91f7f7b4f921d341264f5b4ef54e702a0df0.tar.bz2
Bunch of fixes.
Fixes memory leak, fixes multiple context support, fix 3d transforms. Change-Id: I7462cfbc57857dbd4de4e76b9d4cba58a1bce77b
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/view/HardwareRenderer.java10
1 files changed, 9 insertions, 1 deletions
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;