diff options
author | Romain Guy <romainguy@google.com> | 2012-03-22 19:19:02 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-03-22 19:19:02 -0700 |
commit | 4d992dbe419831550f8bd41a53a17ce7427565c2 (patch) | |
tree | a61e0a419a4cf3c36bf83372cf9e6e8de0c6052a /core | |
parent | 19c9d98e90a45fb50caf68a0dc4ad699f2af6c37 (diff) | |
parent | 5d6999e1ca457948e06792ea6259ffa947c9fa81 (diff) | |
download | frameworks_base-4d992dbe419831550f8bd41a53a17ce7427565c2.zip frameworks_base-4d992dbe419831550f8bd41a53a17ce7427565c2.tar.gz frameworks_base-4d992dbe419831550f8bd41a53a17ce7427565c2.tar.bz2 |
Merge "Don't make GLRenderer aware of GLES20Renderer"
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/view/DisplayList.java | 2 | ||||
-rw-r--r-- | core/java/android/view/HardwareRenderer.java | 28 |
2 files changed, 19 insertions, 11 deletions
diff --git a/core/java/android/view/DisplayList.java b/core/java/android/view/DisplayList.java index 1dabad2..a50f09f 100644 --- a/core/java/android/view/DisplayList.java +++ b/core/java/android/view/DisplayList.java @@ -16,8 +16,6 @@ package android.view; -import android.os.Handler; - /** * A display lists records a series of graphics related operation and can replay * them later. Display lists are usually built by recording operations on a diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java index b98257c..1f140e9 100644 --- a/core/java/android/view/HardwareRenderer.java +++ b/core/java/android/view/HardwareRenderer.java @@ -464,8 +464,8 @@ public abstract class HardwareRenderer { static final Object[] sEglLock = new Object[0]; int mWidth = -1, mHeight = -1; - static final ThreadLocal<Gl20Renderer.Gl20RendererEglContext> sEglContextStorage - = new ThreadLocal<Gl20Renderer.Gl20RendererEglContext>(); + static final ThreadLocal<ManagedEGLContext> sEglContextStorage + = new ThreadLocal<ManagedEGLContext>(); EGLContext mEglContext; Thread mEglThread; @@ -622,7 +622,7 @@ public abstract class HardwareRenderer { } } - abstract GLES20Canvas createCanvas(); + abstract HardwareCanvas createCanvas(); abstract int[] getConfig(boolean dirtyRegions); @@ -662,16 +662,18 @@ public abstract class HardwareRenderer { } } - Gl20Renderer.Gl20RendererEglContext managedContext = sEglContextStorage.get(); + ManagedEGLContext managedContext = sEglContextStorage.get(); mEglContext = managedContext != null ? managedContext.getContext() : null; mEglThread = Thread.currentThread(); if (mEglContext == null) { mEglContext = createContext(sEgl, sEglDisplay, sEglConfig); - sEglContextStorage.set(new Gl20Renderer.Gl20RendererEglContext(mEglContext)); + sEglContextStorage.set(createManagedContext(mEglContext)); } } + abstract ManagedEGLContext createManagedContext(EGLContext eglContext); + private EGLConfig chooseEglConfig() { EGLConfig[] configs = new EGLConfig[1]; int[] configsCount = new int[1]; @@ -1103,7 +1105,8 @@ public abstract class HardwareRenderer { // Make sure we do this on the correct thread. if (mHandler.getLooper() != Looper.myLooper()) { mHandler.post(new Runnable() { - @Override public void run() { + @Override + public void run() { onTerminate(eglContext); } }); @@ -1142,11 +1145,16 @@ public abstract class HardwareRenderer { } @Override - GLES20Canvas createCanvas() { + HardwareCanvas createCanvas() { return mGlCanvas = new GLES20Canvas(mTranslucent); } @Override + ManagedEGLContext createManagedContext(EGLContext eglContext) { + return new Gl20Renderer.Gl20RendererEglContext(mEglContext); + } + + @Override int[] getConfig(boolean dirtyRegions) { return new int[] { EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, @@ -1249,7 +1257,8 @@ public abstract class HardwareRenderer { if (isEnabled() && checkCurrent() != SURFACE_STATE_ERROR) needsContext = false; if (needsContext) { - Gl20RendererEglContext managedContext = sEglContextStorage.get(); + Gl20RendererEglContext managedContext = + (Gl20RendererEglContext) sEglContextStorage.get(); if (managedContext == null) return; usePbufferSurface(managedContext.getContext()); } @@ -1282,7 +1291,8 @@ public abstract class HardwareRenderer { static void trimMemory(int level) { if (sEgl == null || sEglConfig == null) return; - Gl20RendererEglContext managedContext = sEglContextStorage.get(); + Gl20RendererEglContext managedContext = + (Gl20RendererEglContext) sEglContextStorage.get(); // We do not have OpenGL objects if (managedContext == null) { return; |