let extgl_Open throw the exception to gain more information about the failure

This commit is contained in:
Elias Naur 2004-12-12 16:21:16 +00:00
parent 9494a40140
commit 5e33c02133
3 changed files with 21 additions and 16 deletions

View File

@ -204,27 +204,36 @@ bool extgl_QueryExtension(JNIEnv *env, const GLubyte*extensions, const char *nam
/*-----------------------------------------------------*/ /*-----------------------------------------------------*/
#ifdef _MACOSX #ifdef _MACOSX
bool extgl_Open(void) { bool extgl_Open(JNIEnv *env) {
if (opengl_lib_handle != NULL) if (opengl_lib_handle != NULL)
return true; return true;
opengl_lib_handle = loadImage("/System/Library/Frameworks/OpenGL.framework/Libraries/libGL.dylib"); opengl_lib_handle = loadImage("/System/Library/Frameworks/OpenGL.framework/Libraries/libGL.dylib");
return opengl_lib_handle != NULL; if (opengl_lib_handle != NULL) {
throwException(env, "Could not load OpenGL library");
return true;
} else
return false;
} }
#endif #endif
#ifdef _X11 #ifdef _X11
bool extgl_Open() bool extgl_Open(JNIEnv *env)
{ {
#define BUFFER_SIZE 2000
static char buffer[BUFFER_SIZE];
if (lib_gl_handle != NULL) if (lib_gl_handle != NULL)
return true; return true;
lib_gl_handle = dlopen("libGL.so.1", RTLD_LAZY | RTLD_GLOBAL); lib_gl_handle = dlopen("libGL.so.1", RTLD_LAZY | RTLD_GLOBAL);
if (lib_gl_handle == NULL) { if (lib_gl_handle == NULL) {
printfDebug("Error loading libGL.so.1: %s\n", dlerror()); snprintf(buffer, BUFFER_SIZE, "Error loading libGL.so.1: %s", dlerror());
buffer[BUFFER_SIZE - 1] = '\0';
throwException(env, buffer);
return false; return false;
} }
glXGetProcAddressARB = (glXGetProcAddressARBPROC) dlsym(lib_gl_handle, "glXGetProcAddressARB"); glXGetProcAddressARB = (glXGetProcAddressARBPROC)dlsym(lib_gl_handle, "glXGetProcAddressARB");
if (glXGetProcAddressARB == NULL) { if (glXGetProcAddressARB == NULL) {
extgl_Close(); extgl_Close();
throwException(env, "Could not get address of glXGetProcAddressARB");
return false; return false;
} }
return true; return true;
@ -233,14 +242,16 @@ bool extgl_Open()
#endif /* X11 */ #endif /* X11 */
#ifdef _WIN32 #ifdef _WIN32
bool extgl_Open(void) bool extgl_Open(JNIEnv *env)
{ {
if (lib_gl_handle != NULL) if (lib_gl_handle != NULL)
return true; return true;
// load the dynamic libraries for OpenGL // load the dynamic libraries for OpenGL
lib_gl_handle = LoadLibrary("opengl32.dll"); lib_gl_handle = LoadLibrary("opengl32.dll");
if (lib_gl_handle == NULL) if (lib_gl_handle == NULL) {
throwException(env, "Could not load OpenGL library");
return false; return false;
}
return true; return true;
} }
#endif /* WIN32 */ #endif /* WIN32 */

View File

@ -434,11 +434,8 @@ typedef const GLubyte * (APIENTRY * glGetStringPROC) (GLenum name);
extern glGetErrorPROC glGetError; extern glGetErrorPROC glGetError;
extern glGetStringPROC glGetString; extern glGetStringPROC glGetString;
/* initializes everything, call this right after the rc is created. the function returns 0 if successful */ /* initializes everything, call this right after the rc is created. the function returns true if successful */
extern bool extgl_Open(void); extern bool extgl_Open(JNIEnv *env);
#ifdef _MACOSX
extern bool extgl_InitAGL(JNIEnv *env);
#endif
extern void extgl_Close(void); extern void extgl_Close(void);
extern void extgl_InitializeClass(JNIEnv *env, jclass clazz, int num_functions, JavaMethodAndExtFunction *functions); extern void extgl_InitializeClass(JNIEnv *env, jclass clazz, int num_functions, JavaMethodAndExtFunction *functions);
extern bool extgl_InitializeFunctions(int num_functions, ExtFunction *functions); extern bool extgl_InitializeFunctions(int num_functions, ExtFunction *functions);

View File

@ -34,10 +34,7 @@
#include "extgl.h" #include "extgl.h"
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GLContext_nLoadOpenGLLibrary(JNIEnv * env, jclass clazz) { JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GLContext_nLoadOpenGLLibrary(JNIEnv * env, jclass clazz) {
if (!extgl_Open()) { extgl_Open(env);
throwException(env, "Failed to load OpenGL library");
return;
}
} }
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GLContext_nUnloadOpenGLLibrary(JNIEnv * env, jclass clazz) { JNIEXPORT void JNICALL Java_org_lwjgl_opengl_GLContext_nUnloadOpenGLLibrary(JNIEnv * env, jclass clazz) {