|
From: <eli...@us...> - 2008-04-29 18:32:13
|
Revision: 3048
http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3048&view=rev
Author: elias_naur
Date: 2008-04-29 11:32:08 -0700 (Tue, 29 Apr 2008)
Log Message:
-----------
Windows: Added error handling to nCreateWindow
Modified Paths:
--------------
trunk/LWJGL/src/native/windows/org_lwjgl_opengl_Display.c
Modified: trunk/LWJGL/src/native/windows/org_lwjgl_opengl_Display.c
===================================================================
--- trunk/LWJGL/src/native/windows/org_lwjgl_opengl_Display.c 2008-04-27 13:37:00 UTC (rev 3047)
+++ trunk/LWJGL/src/native/windows/org_lwjgl_opengl_Display.c 2008-04-29 18:32:08 UTC (rev 3048)
@@ -178,6 +178,15 @@
return getAvailableDisplayModes(env);
}
+static void destroyWindow() {
+ jclass display_class_global = (jclass)(LONG_PTR)GetWindowLongPtr(display_hwnd, GWLP_USERDATA);
+ closeWindow(&display_hwnd, &display_hdc);
+ if (display_class_global != NULL)
+ (*env)->DeleteGlobalRef(env, display_class_global);
+ freeLargeIcon();
+ freeSmallIcon();
+}
+
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsDisplay_nCreateWindow(JNIEnv *env, jobject self, jobject mode, jboolean fullscreen, jint x, jint y, jboolean undecorated, jlong parent_hwnd) {
jclass cls_displayMode = (*env)->GetObjectClass(env, mode);
jfieldID fid_width = (*env)->GetFieldID(env, cls_displayMode, "width", "I");
@@ -199,15 +208,15 @@
return;
}
display_hdc = GetDC(display_hwnd);
+ if (display_hdc == NULL) {
+ destroyWindow();
+ throwException(env, "Failed to get the window DC.");
+ return;
+ }
}
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsDisplay_nDestroyWindow(JNIEnv *env, jclass clazz) {
- jclass display_class_global = (jclass)(LONG_PTR)GetWindowLongPtr(display_hwnd, GWLP_USERDATA);
- closeWindow(&display_hwnd, &display_hdc);
- if (display_class_global != NULL)
- (*env)->DeleteGlobalRef(env, display_class_global);
- freeLargeIcon();
- freeSmallIcon();
+ destroyWindow();
}
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsDisplay_clientToScreen(JNIEnv *env, jclass unused, jlong hwnd_int, jobject buffer_handle) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|