@@ -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