Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4d992dbe authored by Romain Guy's avatar Romain Guy Committed by Android (Google) Code Review
Browse files

Merge "Don't make GLRenderer aware of GLES20Renderer"

parents 19c9d98e 5d6999e1
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -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
+19 −9
Original line number Diff line number Diff line
@@ -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,10 +1145,15 @@ 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[] {
@@ -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;