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

Commit 30d90523 authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge changes Id682ab72,I9bb4dbae into eclair-mr2

* changes:
  Improve error message thrown when eglCreateContext fails.
  Improve error reporting by always returning the public EGL10.EGL_NO_XXX objects for displays, surfaces, and contexts.
parents b6936607 9bb4dbae
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -847,7 +847,7 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback
            */
            mEglContext = mEGLContextFactory.createContext(mEgl, mEglDisplay, mEglConfig);
            if (mEglContext == null || mEglContext == EGL10.EGL_NO_CONTEXT) {
                throw new RuntimeException("createContext failed");
                throwEglException("createContext");
            }

            mEglSurface = null;
+44 −17
Original line number Diff line number Diff line
@@ -47,16 +47,27 @@ public class EGLImpl implements EGL10 {
    public native boolean     eglWaitNative(int engine, Object bindTarget);

    public EGLContext eglCreateContext(EGLDisplay display, EGLConfig config, EGLContext share_context, int[] attrib_list) {
        return new EGLContextImpl( _eglCreateContext(display, config, share_context, attrib_list) );
        int eglContextId = _eglCreateContext(display, config, share_context, attrib_list);
        if (eglContextId == 0) {
            return EGL10.EGL_NO_CONTEXT;
        }
        return new EGLContextImpl( eglContextId );
    }

    public EGLSurface eglCreatePbufferSurface(EGLDisplay display, EGLConfig config, int[] attrib_list) {
        return new EGLSurfaceImpl( _eglCreatePbufferSurface(display, config, attrib_list) );
        int eglSurfaceId = _eglCreatePbufferSurface(display, config, attrib_list);
        if (eglSurfaceId == 0) {
            return EGL10.EGL_NO_SURFACE;
        }
        return new EGLSurfaceImpl( eglSurfaceId );
    }

    public EGLSurface eglCreatePixmapSurface(EGLDisplay display, EGLConfig config, Object native_pixmap, int[] attrib_list) {
        EGLSurfaceImpl sur = new EGLSurfaceImpl();
        _eglCreatePixmapSurface(sur, display, config, native_pixmap, attrib_list);
        if (sur.mEGLSurface == 0) {
            return EGL10.EGL_NO_SURFACE;
        }
        return sur;
    }

@@ -73,11 +84,18 @@ public class EGLImpl implements EGL10 {
                "eglCreateWindowSurface() can only be called with an instance of " +
                "SurfaceView or SurfaceHolder at the moment, this will be fixed later.");
        }
        return new EGLSurfaceImpl( _eglCreateWindowSurface(display, config, sur, attrib_list) );
        int eglSurfaceId = _eglCreateWindowSurface(display, config, sur, attrib_list);
        if (eglSurfaceId == 0) {
            return EGL10.EGL_NO_SURFACE;
        }
        return new EGLSurfaceImpl( eglSurfaceId );
    }

    public synchronized EGLDisplay eglGetDisplay(Object native_display) {
        int value = _eglGetDisplay(native_display);
        if (value == 0) {
            return EGL10.EGL_NO_DISPLAY;
        }
        if (mDisplay.mEGLDisplay != value)
            mDisplay = new EGLDisplayImpl(value);
        return mDisplay;
@@ -85,6 +103,9 @@ public class EGLImpl implements EGL10 {

    public synchronized EGLContext eglGetCurrentContext() {
        int value = _eglGetCurrentContext();
        if (value == 0) {
            return EGL10.EGL_NO_CONTEXT;
        }
        if (mContext.mEGLContext != value)
            mContext = new EGLContextImpl(value);
        return mContext;
@@ -92,6 +113,9 @@ public class EGLImpl implements EGL10 {

    public synchronized EGLDisplay eglGetCurrentDisplay() {
        int value = _eglGetCurrentDisplay();
        if (value == 0) {
            return EGL10.EGL_NO_DISPLAY;
        }
        if (mDisplay.mEGLDisplay != value)
            mDisplay = new EGLDisplayImpl(value);
        return mDisplay;
@@ -99,6 +123,9 @@ public class EGLImpl implements EGL10 {

    public synchronized EGLSurface eglGetCurrentSurface(int readdraw) {
        int value = _eglGetCurrentSurface(readdraw);
        if (value == 0) {
            return EGL10.EGL_NO_SURFACE;
        }
        if (mSurface.mEGLSurface != value)
            mSurface = new EGLSurfaceImpl(value);
        return mSurface;