|
From: <eli...@us...> - 2007-12-13 09:29:42
|
Revision: 2928
http://java-game-lib.svn.sourceforge.net/java-game-lib/?rev=2928&view=rev
Author: elias_naur
Date: 2007-12-13 01:29:36 -0800 (Thu, 13 Dec 2007)
Log Message:
-----------
Windows: Pulled DefWindowProc calling to java side
Modified Paths:
--------------
trunk/LWJGL/src/java/org/lwjgl/Sys.java
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/Sys.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/Sys.java 2007-12-04 11:47:08 UTC (rev 2927)
+++ trunk/LWJGL/src/java/org/lwjgl/Sys.java 2007-12-13 09:29:36 UTC (rev 2928)
@@ -57,7 +57,7 @@
private static final String VERSION = "1.1.3";
/** Current version of the JNI library */
- static final int JNI_VERSION = 11;
+ static final int JNI_VERSION = 12;
/** The implementation instance to delegate platform specific behavior to */
private final static SysImplementation implementation;
Modified: trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsDisplay.java
===================================================================
--- trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsDisplay.java 2007-12-04 11:47:08 UTC (rev 2927)
+++ trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsDisplay.java 2007-12-13 09:29:36 UTC (rev 2928)
@@ -627,12 +627,14 @@
private static native void clientToScreen(long hwnd, IntBuffer point);
- private static boolean handleMessage(long hwnd, int msg, long wParam, long lParam, long millis) {
+ private static int handleMessage(long hwnd, int msg, long wParam, long lParam, long millis) {
if (current_display != null)
return current_display.doHandleMessage(hwnd, msg, wParam, lParam, millis);
else
- return false;
+ return defWindowProc(hwnd, msg, wParam, lParam);
}
+
+ private static native int defWindowProc(long hwnd, int msg, long wParam, long lParam);
private void checkCursorState() {
updateCursor();
@@ -656,7 +658,7 @@
checkCursorState();
}
- private boolean doHandleMessage(long hwnd, int msg, long wParam, long lParam, long millis) {
+ private int doHandleMessage(long hwnd, int msg, long wParam, long lParam, long millis) {
switch (msg) {
// disable screen saver and monitor power down messages which wreak havoc
case WM_ACTIVATE:
@@ -669,7 +671,7 @@
appActivate(false);
break;
}
- return true;
+ return 0;
case WM_SIZE:
switch ((int)wParam) {
case SIZE_RESTORED:
@@ -680,39 +682,39 @@
setMinimized(true);
break;
}
- return false;
+ return defWindowProc(hwnd, msg, wParam, lParam);
case WM_MOUSEMOVE:
int xPos = (int)(short)(lParam & 0xFFFF);
int yPos = transformY(getHwnd(), (int)(short)((lParam >> 16) & 0xFFFF));
handleMouseMoved(xPos, yPos, millis);
checkCursorState();
- return true;
+ return 0;
case WM_MOUSEWHEEL:
int dwheel = (int)(short)((wParam >> 16) & 0xFFFF);
handleMouseScrolled(dwheel, millis);
- return true;
+ return 0;
case WM_LBUTTONDOWN:
handleMouseButton(0, 1, millis);
- return true;
+ return 0;
case WM_LBUTTONUP:
handleMouseButton(0, 0, millis);
- return true;
+ return 0;
case WM_RBUTTONDOWN:
handleMouseButton(1, 1, millis);
- return true;
+ return 0;
case WM_RBUTTONUP:
handleMouseButton(1, 0, millis);
- return true;
+ return 0;
case WM_MBUTTONDOWN:
handleMouseButton(2, 1, millis);
- return true;
+ return 0;
case WM_MBUTTONUP:
handleMouseButton(2, 0, millis);
- return true;
+ return 0;
case WM_SYSCHAR:
case WM_CHAR:
handleChar(wParam, lParam, millis);
- return true;
+ return 0;
case WM_SYSKEYUP:
/* Fall through */
case WM_KEYUP:
@@ -730,29 +732,29 @@
/* Fall through */
case WM_KEYDOWN:
handleKeyButton(wParam, lParam, millis);
- return false;
+ return defWindowProc(hwnd, msg, wParam, lParam);
case WM_QUIT:
close_requested = true;
- return true;
+ return 0;
case WM_SYSCOMMAND:
switch ((int)(wParam & 0xfff0)) {
case SC_KEYMENU:
case SC_MOUSEMENU:
case SC_SCREENSAVE:
case SC_MONITORPOWER:
- return true;
+ return 0;
case SC_CLOSE:
close_requested = true;
- return true;
+ return 0;
default:
break;
}
- return false;
+ return defWindowProc(hwnd, msg, wParam, lParam);
case WM_PAINT:
is_dirty = true;
- return false;
+ return defWindowProc(hwnd, msg, wParam, lParam);
default:
- return false;
+ return defWindowProc(hwnd, msg, wParam, lParam);
}
}
Modified: trunk/LWJGL/src/native/windows/org_lwjgl_opengl_Display.c
===================================================================
--- trunk/LWJGL/src/native/windows/org_lwjgl_opengl_Display.c 2007-12-04 11:47:08 UTC (rev 2927)
+++ trunk/LWJGL/src/native/windows/org_lwjgl_opengl_Display.c 2007-12-13 09:29:36 UTC (rev 2928)
@@ -117,15 +117,16 @@
}
if (display_class_global != NULL) {
message_time = GetMessageTime();
- handleMessage_method = (*env)->GetStaticMethodID(env, display_class_global, "handleMessage", "(JIJJJ)Z");
+ handleMessage_method = (*env)->GetStaticMethodID(env, display_class_global, "handleMessage", "(JIJJJ)I");
if (handleMessage_method != NULL)
- if ((*env)->CallStaticBooleanMethod(env, display_class_global, handleMessage_method, (jlong)(intptr_t)hWnd, (jint)msg, (jlong)wParam, (jlong)lParam, (jlong)message_time))
- return 0;
+ return (*env)->CallStaticIntMethod(env, display_class_global, handleMessage_method, (jlong)(intptr_t)hWnd, (jint)msg, (jlong)wParam, (jlong)lParam, (jlong)message_time);
}
}
+ return DefWindowProc(hWnd, msg, wParam, lParam);
+}
- // default action
- return DefWindowProc(hWnd, msg, wParam, lParam);
+JNIEXPORT jint JNICALL Java_org_lwjgl_opengl_WindowsDisplay_defWindowProc(JNIEnv *env, jclass unused, jlong hWnd, jint msg, jlong wParam, jlong lParam) {
+ return DefWindowProc((HWND)(INT_PTR)hWnd, msg, wParam, lParam);
}
/*
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|