summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2012-03-22 19:19:02 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-03-22 19:19:02 -0700
commit4d992dbe419831550f8bd41a53a17ce7427565c2 (patch)
treea61e0a419a4cf3c36bf83372cf9e6e8de0c6052a /core
parent19c9d98e90a45fb50caf68a0dc4ad699f2af6c37 (diff)
parent5d6999e1ca457948e06792ea6259ffa947c9fa81 (diff)
downloadframeworks_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.java2
-rw-r--r--core/java/android/view/HardwareRenderer.java28
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;