From 89361d002f7755b4effedf67cf2fc1bf0d38e4bc Mon Sep 17 00:00:00 2001 From: Henrik Rydgard Date: Sun, 18 Aug 2013 00:39:21 +0200 Subject: [PATCH] Bugfixes --- android/app-android.cpp | 1 + gfx_es2/gl_state.cpp | 33 +++++++++++++++++++++++---------- gfx_es2/gl_state.h | 10 +++++++--- 3 files changed, 31 insertions(+), 13 deletions(-) diff --git a/android/app-android.cpp b/android/app-android.cpp index a3347bae2e..94e4bf9efc 100644 --- a/android/app-android.cpp +++ b/android/app-android.cpp @@ -244,6 +244,7 @@ extern "C" void Java_com_henrikrydgard_libnative_NativeRenderer_displayInit(JNIE ILOG("Calling NativeInitGraphics(): dpi = %i, dp_xres = %i, dp_yres = %i", g_dpi, dp_xres, dp_yres); NativeInitGraphics(); + ILOG("NativeInitGraphics() completed"); dp_xscale = (float)dp_xres / pixel_xres; dp_yscale = (float)dp_yres / pixel_yres; diff --git a/gfx_es2/gl_state.cpp b/gfx_es2/gl_state.cpp index 5c733d48d0..c5ab9c209f 100644 --- a/gfx_es2/gl_state.cpp +++ b/gfx_es2/gl_state.cpp @@ -22,6 +22,8 @@ PFNGLISVERTEXARRAYOESPROC glIsVertexArrayOES; OpenGLState glstate; GLExtensions gl_extensions; +std::string g_all_gl_extensions; +std::string g_all_egl_extensions; int OpenGLState::state_count = 0; @@ -82,12 +84,20 @@ void CheckGLExtensions() { memset(&gl_extensions, 0, sizeof(gl_extensions)); const char *extString = (const char *)glGetString(GL_EXTENSIONS); - gl_extensions.all_gl_extensions = extString; + if (extString) { + g_all_gl_extensions = extString; + } else { + g_all_gl_extensions = ""; + } #ifdef WIN32 const char *wglString = wglGetExtensionsStringEXT(); - gl_extensions.EXT_swap_control_tear = strstr(wglString, "WGL_EXT_swap_control_tear") != 0; - gl_extensions.all_egl_extensions = wglString; + if (wglString) { + gl_extensions.EXT_swap_control_tear = strstr(wglString, "WGL_EXT_swap_control_tear") != 0; + g_all_egl_extensions = wglString; + } else { + g_all_egl_extensions = ""; + } #elif !defined(USING_GLES2) // const char *glXString = glXQueryExtensionString(); // gl_extensions.EXT_swap_control_tear = strstr(glXString, "GLX_EXT_swap_control_tear") != 0; @@ -108,7 +118,6 @@ void CheckGLExtensions() { glBindVertexArrayOES = (PFNGLBINDVERTEXARRAYOESPROC)eglGetProcAddress ( "glBindVertexArrayOES" ); glDeleteVertexArraysOES = (PFNGLDELETEVERTEXARRAYSOESPROC)eglGetProcAddress ( "glDeleteVertexArraysOES" ); glIsVertexArrayOES = (PFNGLISVERTEXARRAYOESPROC)eglGetProcAddress ( "glIsVertexArrayOES" ); - ILOG("VAO available"); } gl_extensions.EXT_discard_framebuffer = strstr(extString, "GL_EXT_discard_framebuffer") != 0; @@ -134,14 +143,18 @@ void CheckGLExtensions() { EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY); const char *eglString = eglQueryString(display, EGL_EXTENSIONS); - gl_extensions.all_egl_extensions = eglString; + if (eglString) { + g_all_egl_extensions = eglString; - gl_extensions.EGL_NV_system_time = strstr(eglString, "EGL_NV_system_time") != 0; - gl_extensions.EGL_NV_coverage_sample = strstr(eglString, "EGL_NV_coverage_sample") != 0; + gl_extensions.EGL_NV_system_time = strstr(eglString, "EGL_NV_system_time") != 0; + gl_extensions.EGL_NV_coverage_sample = strstr(eglString, "EGL_NV_coverage_sample") != 0; - if (gl_extensions.EGL_NV_system_time) { - eglGetSystemTimeNV = (PFNEGLGETSYSTEMTIMENVPROC) eglGetProcAddress("eglGetSystemTimeNV"); - eglGetSystemTimeFrequencyNV = (PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) eglGetProcAddress("eglGetSystemTimeFrequencyNV"); + if (gl_extensions.EGL_NV_system_time) { + eglGetSystemTimeNV = (PFNEGLGETSYSTEMTIMENVPROC) eglGetProcAddress("eglGetSystemTimeNV"); + eglGetSystemTimeFrequencyNV = (PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) eglGetProcAddress("eglGetSystemTimeFrequencyNV"); + } + } else { + g_all_egl_extensions = ""; } #endif diff --git a/gfx_es2/gl_state.h b/gfx_es2/gl_state.h index 2fc32fe02b..5a2bc24d0e 100644 --- a/gfx_es2/gl_state.h +++ b/gfx_es2/gl_state.h @@ -255,6 +255,8 @@ public: extern OpenGLState glstate; + +// WARNING: This gets memset-d - so no strings please struct GLExtensions { bool OES_depth24; bool OES_packed_depth_stencil; @@ -271,11 +273,13 @@ struct GLExtensions { bool EGL_NV_system_time; bool EGL_NV_coverage_sample; - - std::string all_gl_extensions; - std::string all_egl_extensions; }; + +extern std::string g_all_gl_extensions; +extern std::string g_all_egl_extensions; + + extern GLExtensions gl_extensions; void CheckGLExtensions();