From: Elias N. <eli...@us...> - 2002-12-12 19:51:23
|
Update of /cvsroot/java-game-lib/LWJGL/src/native/win32 In directory sc8-pr-cvs1:/tmp/cvs-serv11404/win32 Modified Files: org_lwjgl_input_Mouse.cpp Log Message: Fixed a mouse button state array bug Index: org_lwjgl_input_Mouse.cpp CVS Browser: http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/java-game-lib/LWJGL/src/native/win32/org_lwjgl_input_Mouse.cpp =================================================================== RCS file: /cvsroot/java-game-lib/LWJGL/src/native/win32/org_lwjgl_input_Mouse.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- org_lwjgl_input_Mouse.cpp 15 Aug 2002 15:43:02 -0000 1.2 +++ org_lwjgl_input_Mouse.cpp 12 Dec 2002 19:51:20 -0000 1.3 @@ -121,7 +121,7 @@ } // Grab non-exclusive foreground access to device - if (lpdiMouse->SetCooperativeLevel(hwnd, DISCL_NONEXCLUSIVE | DISCL_FOREGROUND) != DI_OK) { + if (lpdiMouse->SetCooperativeLevel(hwnd, DISCL_EXCLUSIVE | DISCL_FOREGROUND) != DI_OK) { printf("Failed to set mouse coop\n"); return JNI_FALSE; } @@ -134,7 +134,8 @@ #ifdef _DEBUG printf("Failed to acquire mouse\n"); #endif - } + } + printf("Acquired mouse\n"); return JNI_TRUE; } @@ -187,9 +188,12 @@ env->SetStaticIntField(clazz, fid_dy, (jint)diMouseState.lY); env->SetStaticIntField(clazz, fid_dz, (jint)diMouseState.lZ); jbooleanArray buttonsArray = (jbooleanArray) env->GetStaticObjectField(clazz, fid_button); - BYTE * buttons = (BYTE *) env->GetPrimitiveArrayCritical(buttonsArray, NULL); - memcpy(buttons, diMouseState.rgbButtons, 4); - env->ReleasePrimitiveArrayCritical(buttonsArray, buttons, 0); + for (int i = 0; i < 4; i++) + if (diMouseState.rgbButtons[i] != 0) + diMouseState.rgbButtons[i] = JNI_TRUE; + else + diMouseState.rgbButtons[i] = JNI_FALSE; + env->SetBooleanArrayRegion(buttonsArray, 0, 4, diMouseState.rgbButtons); } else { #ifdef _DEBUG printf("Failed to get mouse device state\n"); |