public boolean swap() { if (!mEgl.eglSwapBuffers(mEglDisplay, mEglSurface)) { int error = mEgl.eglGetError(); switch (error) { case EGL11.EGL_CONTEXT_LOST: return false; case EGL10.EGL_BAD_NATIVE_WINDOW: Log.e("EglHelper", "eglSwapBuffers returned EGL_BAD_NATIVE_WINDOW. tid=" + Thread.currentThread().getId()); break; case EGL10.EGL_BAD_SURFACE: Log.e("EglHelper", "eglSwapBuffers returned EGL_BAD_SURFACE. tid=" + Thread.currentThread().getId()); return false; default: throwEglException("eglSwapBuffers", error); } } return true; }
@Override public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) { int renderableType = 4; // The actual surface is generally RGBA or RGBX, so situationally omitting alpha // doesn't really help. It can also lead to a huge performance hit on glReadPixels() // when reading into a GL_RGBA buffer. int[] attribList = { EGL11.EGL_RED_SIZE, 8, EGL11.EGL_GREEN_SIZE, 8, EGL11.EGL_BLUE_SIZE, 8, EGL11.EGL_ALPHA_SIZE, 8, //EGL11.EGL_DEPTH_SIZE, 16, //EGL11.EGL_STENCIL_SIZE, 8, EGL11.EGL_RENDERABLE_TYPE, renderableType, EGL_RECORDABLE_ANDROID, 1, // set recordable [@-3] EGL11.EGL_NONE }; EGLConfig[] configs = new EGLConfig[1]; int[] numConfigs = new int[1]; if (!egl.eglChooseConfig(display, attribList, configs, configs.length, numConfigs)) { return null; } return configs[0]; }
public static String getErrorString(int error) { switch (error) { case EGL10.EGL_SUCCESS: return "EGL_SUCCESS"; case EGL10.EGL_NOT_INITIALIZED: return "EGL_NOT_INITIALIZED"; case EGL10.EGL_BAD_ACCESS: return "EGL_BAD_ACCESS"; case EGL10.EGL_BAD_ALLOC: return "EGL_BAD_ALLOC"; case EGL10.EGL_BAD_ATTRIBUTE: return "EGL_BAD_ATTRIBUTE"; case EGL10.EGL_BAD_CONFIG: return "EGL_BAD_CONFIG"; case EGL10.EGL_BAD_CONTEXT: return "EGL_BAD_CONTEXT"; case EGL10.EGL_BAD_CURRENT_SURFACE: return "EGL_BAD_CURRENT_SURFACE"; case EGL10.EGL_BAD_DISPLAY: return "EGL_BAD_DISPLAY"; case EGL10.EGL_BAD_MATCH: return "EGL_BAD_MATCH"; case EGL10.EGL_BAD_NATIVE_PIXMAP: return "EGL_BAD_NATIVE_PIXMAP"; case EGL10.EGL_BAD_NATIVE_WINDOW: return "EGL_BAD_NATIVE_WINDOW"; case EGL10.EGL_BAD_PARAMETER: return "EGL_BAD_PARAMETER"; case EGL10.EGL_BAD_SURFACE: return "EGL_BAD_SURFACE"; case EGL11.EGL_CONTEXT_LOST: return "EGL_CONTEXT_LOST"; default: return getHex(error); } }
/** * Display the current render surface. * * @return false if the context has been lost. */ public boolean swap() { mEgl.eglSwapBuffers(mEglDisplay, mEglSurface); /* * Always check for EGL_CONTEXT_LOST, which means the context and all * associated data were lost (For instance because the device went to * sleep). We need to sleep until we get a new surface. */ return mEgl.eglGetError() != EGL11.EGL_CONTEXT_LOST; }
static String eglGetErrorString(int error) { switch (error) { case EGL11.EGL_SUCCESS: return "EGL_SUCCESS"; case EGL11.EGL_NOT_INITIALIZED: return "EGL_NOT_INITIALIZED"; case EGL11.EGL_BAD_ACCESS: return "EGL_BAD_ACCESS"; case EGL11.EGL_BAD_ALLOC: return "EGL_BAD_ALLOC"; case EGL11.EGL_BAD_ATTRIBUTE: return "EGL_BAD_ATTRIBUTE"; case EGL11.EGL_BAD_CONFIG: return "EGL_BAD_CONFIG"; case EGL11.EGL_BAD_CONTEXT: return "EGL_BAD_CONTEXT"; case EGL11.EGL_BAD_CURRENT_SURFACE: return "EGL_BAD_CURRENT_SURFACE"; case EGL11.EGL_BAD_DISPLAY: return "EGL_BAD_DISPLAY"; case EGL11.EGL_BAD_MATCH: return "EGL_BAD_MATCH"; case EGL11.EGL_BAD_NATIVE_PIXMAP: return "EGL_BAD_NATIVE_PIXMAP"; case EGL11.EGL_BAD_NATIVE_WINDOW: return "EGL_BAD_NATIVE_WINDOW"; case EGL11.EGL_BAD_PARAMETER: return "EGL_BAD_PARAMETER"; case EGL11.EGL_BAD_SURFACE: return "EGL_BAD_SURFACE"; case EGL11.EGL_CONTEXT_LOST: return "EGL_CONTEXT_LOST"; default: return "0x" + Integer.toHexString(error); } }
/** * Display the current render surface. * @return false if the context has been lost. */ public boolean swap() { mEgl.eglSwapBuffers(mEglDisplay, mEglSurface); /* * Always check for EGL_CONTEXT_LOST, which means the context * and all associated data were lost (For instance because * the device went to sleep). We need to sleep until we * get a new surface. */ return mEgl.eglGetError() != EGL11.EGL_CONTEXT_LOST; }
public static String getErrorString(int error) { switch (error) { case EGL_SUCCESS: return "EGL_SUCCESS"; case EGL_NOT_INITIALIZED: return "EGL_NOT_INITIALIZED"; case EGL_BAD_ACCESS: return "EGL_BAD_ACCESS"; case EGL_BAD_ALLOC: return "EGL_BAD_ALLOC"; case EGL_BAD_ATTRIBUTE: return "EGL_BAD_ATTRIBUTE"; case EGL_BAD_CONFIG: return "EGL_BAD_CONFIG"; case EGL_BAD_CONTEXT: return "EGL_BAD_CONTEXT"; case EGL_BAD_CURRENT_SURFACE: return "EGL_BAD_CURRENT_SURFACE"; case EGL_BAD_DISPLAY: return "EGL_BAD_DISPLAY"; case EGL_BAD_MATCH: return "EGL_BAD_MATCH"; case EGL_BAD_NATIVE_PIXMAP: return "EGL_BAD_NATIVE_PIXMAP"; case EGL_BAD_NATIVE_WINDOW: return "EGL_BAD_NATIVE_WINDOW"; case EGL_BAD_PARAMETER: return "EGL_BAD_PARAMETER"; case EGL_BAD_SURFACE: return "EGL_BAD_SURFACE"; case EGL11.EGL_CONTEXT_LOST: return "EGL_CONTEXT_LOST"; default: return getHex(error); } }
/** * Display the current render surface. * * @return false if the context has been lost. */ public boolean swap() { if (!mEgl.eglSwapBuffers(mEglDisplay, mEglSurface)) { /* * Check for EGL_CONTEXT_LOST, which means the context and all * associated data were lost (For instance because the device * went to sleep). We need to sleep until we get a new surface. */ int error = mEgl.eglGetError(); switch (error) { case EGL11.EGL_CONTEXT_LOST: return false; case EGL10.EGL_BAD_NATIVE_WINDOW: // The native window is bad, probably because the // window manager has closed it. Ignore this error, // on the expectation that the application will be // closed soon. Log.e("EglHelper", "eglSwapBuffers returned EGL_BAD_NATIVE_WINDOW. tid=" + Thread.currentThread().getId()); break; default: throwEglException("eglSwapBuffers", error); } } return true; }
public static String getErrorString(int error) { switch (error) { case EGL10.EGL_SUCCESS: return "EGL_SUCCESS"; case EGL10.EGL_NOT_INITIALIZED: return "EGL_NOT_INITIALIZED"; case EGL10.EGL_BAD_ACCESS: return "EGL_BAD_ACCESS"; case EGL10.EGL_BAD_ALLOC: return "EGL_BAD_ALLOC"; case EGL10.EGL_BAD_ATTRIBUTE: return "EGL_BAD_ATTRIBUTE"; case EGL10.EGL_BAD_CONFIG: return "EGL_BAD_CONFIG"; case EGL10.EGL_BAD_CONTEXT: return "EGL_BAD_CONTEXT"; case EGL10.EGL_BAD_CURRENT_SURFACE: return "EGL_BAD_CURRENT_SURFACE"; case EGL10.EGL_BAD_DISPLAY: return "EGL_BAD_DISPLAY"; case EGL10.EGL_BAD_MATCH: return "EGL_BAD_MATCH"; case EGL10.EGL_BAD_NATIVE_PIXMAP: return "EGL_BAD_NATIVE_PIXMAP"; case EGL10.EGL_BAD_NATIVE_WINDOW: return "EGL_BAD_NATIVE_WINDOW"; case EGL10.EGL_BAD_PARAMETER: return "EGL_BAD_PARAMETER"; case EGL10.EGL_BAD_SURFACE: return "EGL_BAD_SURFACE"; case EGL11.EGL_CONTEXT_LOST: return "EGL_CONTEXT_LOST"; default: return "0x" + Integer.toHexString(error).toUpperCase(Locale.US); } }
/** * Display the current render surface. * * @return false if the context has been lost. */ public boolean swap() { mEgl.eglSwapBuffers(mEglDisplay, mEglSurface); /* * Always check for EGL_CONTEXT_LOST, which means the context and all associated data were lost (For instance * because the device went to sleep). We need to sleep until we get a new surface. */ return mEgl.eglGetError() != EGL11.EGL_CONTEXT_LOST; }