|
From: <eli...@us...> - 2008-05-05 17:24:43
|
Revision: 3066
http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=3066&view=rev
Author: elias_naur
Date: 2008-05-05 10:24:42 -0700 (Mon, 05 May 2008)
Log Message:
-----------
Windows: Split WindowsDisplay.nDestroyWindow into nReleaseDC and nDestroyWindow
Modified Paths:
--------------
trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsDisplay.java
trunk/LWJGL/src/native/windows/org_lwjgl_opengl_Display.c
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsDisplay.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsDisplay.java 2008-05-05 16:46:16 UTC (rev 3065)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsDisplay.java 2008-05-05 17:24:42 UTC (rev 3066)
@@ -170,7 +170,7 @@
}
this.hdc = getDC(hwnd);
if (hdc == 0) {
- nDestroyWindow(hwnd, hdc);
+ nDestroyWindow(hwnd);
throw new LWJGLException("Failed to get dc");
}
try {
@@ -183,7 +183,8 @@
setFocus(getHwnd());
}
} catch (LWJGLException e) {
- nDestroyWindow(hwnd, hdc);
+ nReleaseDC(hwnd, hdc);
+ nDestroyWindow(hwnd);
throw e;
}
}
@@ -205,12 +206,14 @@
}
public void destroyWindow() {
- nDestroyWindow(hwnd, hdc);
+ nReleaseDC(hwnd, hdc);
+ nDestroyWindow(hwnd);
freeLargeIcon();
freeSmallIcon();
resetCursorClipping();
}
- private static native void nDestroyWindow(long hwnd, long hdc);
+ private static native void nReleaseDC(long hwnd, long hdc);
+ private static native void nDestroyWindow(long hwnd);
static void resetCursorClipping() {
if (cursor_clipped) {
try {
Modified: trunk/LWJGL/src/native/windows/org_lwjgl_opengl_Display.c
===================================================================
--- trunk/LWJGL/src/native/windows/org_lwjgl_opengl_Display.c 2008-05-05 16:46:16 UTC (rev 3065)
+++ trunk/LWJGL/src/native/windows/org_lwjgl_opengl_Display.c 2008-05-05 17:24:42 UTC (rev 3066)
@@ -151,13 +151,6 @@
return org_lwjgl_WindowsSysImplementation_JNI_VERSION;
}
-static void destroyWindow(JNIEnv *env, HWND *hwnd, HDC *hdc) {
- jclass display_class_global = (jclass)(LONG_PTR)GetWindowLongPtr(*hwnd, GWLP_USERDATA);
- closeWindow(hwnd, hdc);
- if (display_class_global != NULL)
- (*env)->DeleteGlobalRef(env, display_class_global);
-}
-
JNIEXPORT jlong JNICALL Java_org_lwjgl_opengl_WindowsDisplay_nCreateWindow(JNIEnv *env, jobject self, jboolean fullscreen, jint x, jint y, jint width, jint height, jboolean undecorated, jboolean child_window, jlong parent_hwnd) {
HWND hwnd;
static bool oneShotInitialised = false;
@@ -173,12 +166,22 @@
return (INT_PTR)hwnd;
}
-JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsDisplay_nDestroyWindow(JNIEnv *env, jclass clazz, jlong hwnd_ptr, jlong hdc_ptr) {
+JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsDisplay_nReleaseDC(JNIEnv *env, jclass clazz, jlong hwnd_ptr, jlong hdc_ptr) {
HWND hwnd = (HWND)(INT_PTR)hwnd_ptr;
HDC hdc = (HDC)(INT_PTR)hdc_ptr;
- destroyWindow(env, &hwnd, &hdc);
+ ReleaseDC(hwnd, hdc);
}
+JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsDisplay_nDestroyWindow(JNIEnv *env, jclass clazz, jlong hwnd_ptr) {
+ jclass display_class_global;
+ HWND hwnd = (HWND)(INT_PTR)hwnd_ptr;
+ display_class_global = (jclass)(LONG_PTR)GetWindowLongPtr(hwnd, GWLP_USERDATA);
+ ShowWindow(hwnd, SW_HIDE);
+ DestroyWindow(hwnd);
+ if (display_class_global != NULL)
+ (*env)->DeleteGlobalRef(env, display_class_global);
+}
+
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsDisplay_clientToScreen(JNIEnv *env, jclass unused, jlong hwnd_int, jobject buffer_handle) {
HWND hwnd = (HWND)(INT_PTR)hwnd_int;
POINT point;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|