diff --git a/src/glcontext_egl.cpp b/src/glcontext_egl.cpp index 93990746..02436aa8 100644 --- a/src/glcontext_egl.cpp +++ b/src/glcontext_egl.cpp @@ -178,6 +178,15 @@ EGL_IMPORT m_eglLibrary = eglOpen(); + +# if BX_PLATFORM_ANDROID + if (!g_bgfxAndroidWindow) + { + BX_TRACE("androidSetWindow() was not called, assuming EGLContext and buffer-swapping are managed outside bgfx."); + } + else + { +# endif BX_UNUSED(_width, _height); EGLNativeDisplayType ndt = EGL_DEFAULT_DISPLAY; EGLNativeWindowType nwh = (EGLNativeWindowType)NULL; @@ -257,7 +266,9 @@ EGL_IMPORT m_current = NULL; eglSwapInterval(m_display, 0); - +# if BX_PLATFORM_ANDROID + } +# endif # if BX_PLATFORM_EMSCRIPTEN emscripten_set_canvas_size(_width, _height); # endif // BX_PLATFORM_EMSCRIPTEN @@ -267,12 +278,15 @@ EGL_IMPORT void GlContext::destroy() { - eglMakeCurrent(EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); - eglDestroyContext(m_display, m_context); - eglDestroySurface(m_display, m_surface); - eglTerminate(m_display); - m_context = NULL; - + if (m_display) + { + eglMakeCurrent(EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + eglDestroyContext(m_display, m_context); + eglDestroySurface(m_display, m_surface); + eglTerminate(m_display); + m_context = NULL; + } + eglClose(m_eglLibrary); # if BX_PLATFORM_RPI @@ -283,14 +297,19 @@ EGL_IMPORT void GlContext::resize(uint32_t _width, uint32_t _height, uint32_t _flags) { BX_UNUSED(_width, _height); + # if BX_PLATFORM_ANDROID - EGLint format; - eglGetConfigAttrib(m_display, m_config, EGL_NATIVE_VISUAL_ID, &format); - ANativeWindow_setBuffersGeometry(g_bgfxAndroidWindow, _width, _height, format); + if (m_display) + { + EGLint format; + eglGetConfigAttrib(m_display, m_config, EGL_NATIVE_VISUAL_ID, &format); + ANativeWindow_setBuffersGeometry(g_bgfxAndroidWindow, _width, _height, format); + } # endif // BX_PLATFORM_ANDROID bool vsync = !!(_flags&BGFX_RESET_VSYNC); - eglSwapInterval(m_display, vsync ? 1 : 0); + if (m_display) + eglSwapInterval(m_display, vsync ? 1 : 0); } bool GlContext::isSwapChainSupported() @@ -317,7 +336,8 @@ EGL_IMPORT if (NULL == _swapChain) { - eglSwapBuffers(m_display, m_surface); + if (m_display) + eglSwapBuffers(m_display, m_surface); } else { @@ -333,7 +353,8 @@ EGL_IMPORT if (NULL == _swapChain) { - eglMakeCurrent(m_display, m_surface, m_surface, m_context); + if (m_display) + eglMakeCurrent(m_display, m_surface, m_surface, m_context); } else {