From 66a267665267ffb88514f89f4eb8539f0e7ebf72 Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Fri, 30 May 2003 06:10:33 +0000 Subject: [PATCH] Extra checks in window creation --- src/native/linux/org_lwjgl_opengl_BaseGL.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/native/linux/org_lwjgl_opengl_BaseGL.cpp b/src/native/linux/org_lwjgl_opengl_BaseGL.cpp index edb6050e..a941c7cf 100644 --- a/src/native/linux/org_lwjgl_opengl_BaseGL.cpp +++ b/src/native/linux/org_lwjgl_opengl_BaseGL.cpp @@ -90,8 +90,15 @@ static GLXFBConfig *chooseVisualGLX13(Display *disp, int screen, int bpp, int de GLX_ALPHA_SIZE, alpha, GLX_STENCIL_SIZE, stencil, None}; - int num_formats; - return glXChooseFBConfig(disp, screen, attriblist, &num_formats); + int num_formats = 0; + GLXFBConfig* configs = glXChooseFBConfig(disp, screen, attriblist, &num_formats); + if (num_formats > 0) + return configs; + else { + if (configs != NULL) + XFree(configs); + return NULL; + } } static XVisualInfo *chooseVisual(Display *disp, int screen, int bpp, int depth, int alpha, int stencil) { @@ -150,6 +157,12 @@ static bool initWindowGLX13(JNIEnv *env, Display *disp, int screen, jstring titl return false; } XVisualInfo * vis_info = glXGetVisualFromFBConfig(disp, configs[0]); + if (vis_info == NULL) { + glXDestroyContext(disp, context); + XFree(configs); + throwException(env, "Could not create visual info from FB config"); + return false; + } #ifdef _DEBUG dumpVisualInfo(disp, vis_info); #endif