|
From: Elias N. <eli...@us...> - 2005-03-29 11:31:32
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/linux In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18520/src/native/linux Modified Files: org_lwjgl_opengl_Display.c Log Message: Linux: Moved display connection reference count to java. Linux: Load OpenGL library before opening display to work around a crash in NVIDIA drivers. Index: org_lwjgl_opengl_Display.c =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/linux/org_lwjgl_opengl_Display.c,v retrieving revision 1.26 retrieving revision 1.27 diff -u -d -r1.26 -r1.27 --- org_lwjgl_opengl_Display.c 24 Feb 2005 10:44:34 -0000 1.26 +++ org_lwjgl_opengl_Display.c 29 Mar 2005 11:31:22 -0000 1.27 @@ -90,7 +90,6 @@ static int current_screen; static Display *display_connection = NULL; -static int display_connection_usage = 0; static bool async_x_error; static char error_message[ERR_MSG_SIZE]; static Atom warp_atom; @@ -127,36 +126,25 @@ return display_connection; } -static Display *incDisplay(JNIEnv *env) { - if (display_connection_usage == 0) { - async_x_error = false; - XSetErrorHandler(errorHandler); - display_connection = XOpenDisplay(NULL); - if (display_connection == NULL) { - if (env != NULL) - throwException(env, "Could not open X display connection"); - else - printfDebugJava(env, "Could not open X display connection"); - return NULL; - } - current_screen = XDefaultScreen(getDisplay()); - warp_atom = XInternAtom(display_connection, "_LWJGL_WARP", False); - } +static void openDisplay(JNIEnv *env) { async_x_error = false; - display_connection_usage++; - return display_connection; + XSetErrorHandler(errorHandler); + display_connection = XOpenDisplay(NULL); + if (display_connection == NULL) { + throwException(env, "Could not open X display connection"); + return; + } + current_screen = XDefaultScreen(getDisplay()); + warp_atom = XInternAtom(display_connection, "_LWJGL_WARP", False); } Atom getWarpAtom(void) { return warp_atom; } -static void decDisplay(void) { - display_connection_usage--; - if (display_connection_usage == 0) { - XCloseDisplay(display_connection); - display_connection = NULL; - } +static void closeDisplay(void) { + XCloseDisplay(display_connection); + display_connection = NULL; } static void waitMapped(Window win) { @@ -309,12 +297,12 @@ XStoreName(getDisplay(), current_win, title); } -JNIEXPORT void JNICALL Java_org_lwjgl_opengl_LinuxDisplay_incDisplay(JNIEnv *env, jclass clazz) { - incDisplay(env); +JNIEXPORT void JNICALL Java_org_lwjgl_opengl_LinuxDisplay_openDisplay(JNIEnv *env, jclass clazz) { + openDisplay(env); } -JNIEXPORT void JNICALL Java_org_lwjgl_opengl_LinuxDisplay_decDisplay(JNIEnv *env, jclass clazz) { - decDisplay(); +JNIEXPORT void JNICALL Java_org_lwjgl_opengl_LinuxDisplay_closeDisplay(JNIEnv *env, jclass clazz) { + closeDisplay(); } JNIEXPORT void JNICALL Java_org_lwjgl_opengl_LinuxDisplayPeerInfo_initDrawable(JNIEnv *env, jclass clazz, jobject peer_info_handle) { |