Skip to content

Commit 4d992db

Browse files
Romain GuyAndroid (Google) Code Review
authored andcommitted
Merge "Don't make GLRenderer aware of GLES20Renderer"
2 parents 19c9d98 + 5d6999e commit 4d992db

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

core/java/android/view/DisplayList.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
package android.view;
1818

19-
import android.os.Handler;
20-
2119
/**
2220
* A display lists records a series of graphics related operation and can replay
2321
* them later. Display lists are usually built by recording operations on a

core/java/android/view/HardwareRenderer.java

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -464,8 +464,8 @@ static abstract class GlRenderer extends HardwareRenderer {
464464
static final Object[] sEglLock = new Object[0];
465465
int mWidth = -1, mHeight = -1;
466466

467-
static final ThreadLocal<Gl20Renderer.Gl20RendererEglContext> sEglContextStorage
468-
= new ThreadLocal<Gl20Renderer.Gl20RendererEglContext>();
467+
static final ThreadLocal<ManagedEGLContext> sEglContextStorage
468+
= new ThreadLocal<ManagedEGLContext>();
469469

470470
EGLContext mEglContext;
471471
Thread mEglThread;
@@ -622,7 +622,7 @@ void updateSurface(SurfaceHolder holder) throws Surface.OutOfResourcesException
622622
}
623623
}
624624

625-
abstract GLES20Canvas createCanvas();
625+
abstract HardwareCanvas createCanvas();
626626

627627
abstract int[] getConfig(boolean dirtyRegions);
628628

@@ -662,16 +662,18 @@ void initializeEgl() {
662662
}
663663
}
664664

665-
Gl20Renderer.Gl20RendererEglContext managedContext = sEglContextStorage.get();
665+
ManagedEGLContext managedContext = sEglContextStorage.get();
666666
mEglContext = managedContext != null ? managedContext.getContext() : null;
667667
mEglThread = Thread.currentThread();
668668

669669
if (mEglContext == null) {
670670
mEglContext = createContext(sEgl, sEglDisplay, sEglConfig);
671-
sEglContextStorage.set(new Gl20Renderer.Gl20RendererEglContext(mEglContext));
671+
sEglContextStorage.set(createManagedContext(mEglContext));
672672
}
673673
}
674674

675+
abstract ManagedEGLContext createManagedContext(EGLContext eglContext);
676+
675677
private EGLConfig chooseEglConfig() {
676678
EGLConfig[] configs = new EGLConfig[1];
677679
int[] configsCount = new int[1];
@@ -1103,7 +1105,8 @@ public void onTerminate(final EGLContext eglContext) {
11031105
// Make sure we do this on the correct thread.
11041106
if (mHandler.getLooper() != Looper.myLooper()) {
11051107
mHandler.post(new Runnable() {
1106-
@Override public void run() {
1108+
@Override
1109+
public void run() {
11071110
onTerminate(eglContext);
11081111
}
11091112
});
@@ -1142,10 +1145,15 @@ public void onTerminate(final EGLContext eglContext) {
11421145
}
11431146

11441147
@Override
1145-
GLES20Canvas createCanvas() {
1148+
HardwareCanvas createCanvas() {
11461149
return mGlCanvas = new GLES20Canvas(mTranslucent);
11471150
}
11481151

1152+
@Override
1153+
ManagedEGLContext createManagedContext(EGLContext eglContext) {
1154+
return new Gl20Renderer.Gl20RendererEglContext(mEglContext);
1155+
}
1156+
11491157
@Override
11501158
int[] getConfig(boolean dirtyRegions) {
11511159
return new int[] {
@@ -1249,7 +1257,8 @@ void destroyHardwareResources(View view) {
12491257
if (isEnabled() && checkCurrent() != SURFACE_STATE_ERROR) needsContext = false;
12501258

12511259
if (needsContext) {
1252-
Gl20RendererEglContext managedContext = sEglContextStorage.get();
1260+
Gl20RendererEglContext managedContext =
1261+
(Gl20RendererEglContext) sEglContextStorage.get();
12531262
if (managedContext == null) return;
12541263
usePbufferSurface(managedContext.getContext());
12551264
}
@@ -1282,7 +1291,8 @@ static HardwareRenderer create(boolean translucent) {
12821291
static void trimMemory(int level) {
12831292
if (sEgl == null || sEglConfig == null) return;
12841293

1285-
Gl20RendererEglContext managedContext = sEglContextStorage.get();
1294+
Gl20RendererEglContext managedContext =
1295+
(Gl20RendererEglContext) sEglContextStorage.get();
12861296
// We do not have OpenGL objects
12871297
if (managedContext == null) {
12881298
return;

0 commit comments

Comments
 (0)