From: <eli...@us...> - 2006-07-15 19:25:32
|
Revision: 2520 Author: elias_naur Date: 2006-07-15 12:25:13 -0700 (Sat, 15 Jul 2006) ViewCVS: http://svn.sourceforge.net/java-game-lib/?rev=2520&view=rev Log Message: ----------- Windows: Move more of Display.getVersion to java Modified Paths: -------------- trunk/LWJGL/src/java/org/lwjgl/Sys.java trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsDisplay.java trunk/LWJGL/src/native/windows/display.c trunk/LWJGL/src/native/windows/display.h trunk/LWJGL/src/native/windows/org_lwjgl_opengl_Display.c Added Paths: ----------- trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsFileVersion.java Modified: trunk/LWJGL/src/java/org/lwjgl/Sys.java =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/Sys.java 2006-07-15 18:45:20 UTC (rev 2519) +++ trunk/LWJGL/src/java/org/lwjgl/Sys.java 2006-07-15 19:25:13 UTC (rev 2520) @@ -57,7 +57,7 @@ private static final String VERSION = "1.0beta2"; /** Current version of the JNI library */ - static final int JNI_VERSION = 1; + static final int JNI_VERSION = 2; /** 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 2006-07-15 18:45:20 UTC (rev 2519) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsDisplay.java 2006-07-15 19:25:13 UTC (rev 2520) @@ -248,12 +248,13 @@ public String getVersion() { String driver = getAdapter(); - if (driver != null) - return nGetVersion(driver); - else + if (driver != null) { + WindowsFileVersion version = nGetVersion(driver + ".dll"); + return version.toString(); + } else return null; } - private native String nGetVersion(String driver); + private native WindowsFileVersion nGetVersion(String driver); public DisplayMode init() throws LWJGLException { current_gamma = saved_gamma = getCurrentGammaRamp(); Copied: trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsFileVersion.java (from rev 2514, trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsRegistry.java) =================================================================== --- trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsFileVersion.java (rev 0) +++ trunk/LWJGL/src/java/org/lwjgl/opengl/WindowsFileVersion.java 2006-07-15 19:25:13 UTC (rev 2520) @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2002-2004 LWJGL Project + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * * Neither the name of 'LWJGL' nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.lwjgl.opengl; + +/** + * @author elias_naur + */ + +final class WindowsFileVersion { + private final int product_version_ms; + private final int product_version_ls; + + public WindowsFileVersion(int product_version_ms, int product_version_ls) { + this.product_version_ms = product_version_ms; + this.product_version_ls = product_version_ls; + } + + public String toString() { + int f1 = (product_version_ms >> 16) & 0xFFFF; + int f2 = product_version_ms & 0xFFFF; + int f3 = (product_version_ls >> 16) & 0xFFFF; + int f4 = product_version_ls & 0xFFFF; + return f1 + "." + f2 + "." + f3 + "." + f4; + } +} Modified: trunk/LWJGL/src/native/windows/display.c =================================================================== --- trunk/LWJGL/src/native/windows/display.c 2006-07-15 18:45:20 UTC (rev 2519) +++ trunk/LWJGL/src/native/windows/display.c 2006-07-15 19:25:13 UTC (rev 2520) @@ -241,17 +241,23 @@ ChangeDisplaySettings(NULL, 0); } -jstring getVersion(JNIEnv * env, char *driver) +jobject getVersion(JNIEnv * env, char *driver) { -#define BUFFER_SIZE 1024 - jstring ret = NULL; - - const char *dll_ext = ".dll"; DWORD var = 0; DWORD dwInfoSize; LPVOID lpInfoBuff; BOOL bRetval; + jclass version_class; + jmethodID version_cons; + jobject ret = NULL; + version_class = (*env)->FindClass(env, "org/lwjgl/opengl/WindowsFileVersion"); + if (version_class == NULL) + return NULL; + version_cons = (*env)->GetMethodID(env, version_class, "<init>", "(II)V"); + if (version_cons == NULL) + return NULL; + dwInfoSize = GetFileVersionInfoSize(driver, &var); lpInfoBuff = malloc(dwInfoSize); if (lpInfoBuff == NULL) { @@ -259,20 +265,13 @@ return NULL; } bRetval = GetFileVersionInfo(driver, 0, dwInfoSize, lpInfoBuff); - if (bRetval == 0) { - } else { + if (bRetval != 0) { VS_FIXEDFILEINFO * fxdFileInfo; UINT uiLen = 0; - bRetval = VerQueryValue(lpInfoBuff, TEXT("\\"), (void *)&fxdFileInfo, &uiLen); - if (bRetval != 0) { - TCHAR version[BUFFER_SIZE]; - TCHAR ms[BUFFER_SIZE], ls[BUFFER_SIZE]; - _snprintf_s(ms, BUFFER_SIZE, _TRUNCATE, "%d.%d\0", fxdFileInfo->dwProductVersionMS >> 16, fxdFileInfo->dwProductVersionMS & 0xFFFF); - _snprintf_s(ls, BUFFER_SIZE, _TRUNCATE, "%d.%d\0", fxdFileInfo->dwProductVersionLS >> 16, fxdFileInfo->dwProductVersionLS & 0xFFFF); - _snprintf_s(version, BUFFER_SIZE, _TRUNCATE, "%s.%s\0", ms, ls); - ret = NewStringNative(env, version); - } + bRetval = VerQueryValue(lpInfoBuff, TEXT("\\"), &fxdFileInfo, &uiLen); + if (bRetval != 0) + ret = (*env)->NewObject(env, version_class, version_cons, fxdFileInfo->dwProductVersionMS, fxdFileInfo->dwProductVersionLS); } free(lpInfoBuff); Modified: trunk/LWJGL/src/native/windows/display.h =================================================================== --- trunk/LWJGL/src/native/windows/display.h 2006-07-15 18:45:20 UTC (rev 2519) +++ trunk/LWJGL/src/native/windows/display.h 2006-07-15 19:25:13 UTC (rev 2520) @@ -51,7 +51,7 @@ extern void setGammaRamp(JNIEnv * env, jobject gammaRampBuffer); extern jobject getCurrentGammaRamp(JNIEnv *env); extern jobject getCurrentDisplayMode(JNIEnv * env); -extern jstring getVersion(JNIEnv * env, char *driver); +extern jobject getVersion(JNIEnv * env, char *driver); extern jobject convertToNativeRamp(JNIEnv *env, jobject float_gamma_obj); #endif Modified: trunk/LWJGL/src/native/windows/org_lwjgl_opengl_Display.c =================================================================== --- trunk/LWJGL/src/native/windows/org_lwjgl_opengl_Display.c 2006-07-15 18:45:20 UTC (rev 2519) +++ trunk/LWJGL/src/native/windows/org_lwjgl_opengl_Display.c 2006-07-15 19:25:13 UTC (rev 2520) @@ -275,7 +275,7 @@ SetFocus(hwnd); } -JNIEXPORT jstring JNICALL Java_org_lwjgl_opengl_WindowsDisplay_nGetVersion(JNIEnv *env, jobject self, jstring driver) { +JNIEXPORT jobject JNICALL Java_org_lwjgl_opengl_WindowsDisplay_nGetVersion(JNIEnv *env, jobject self, jstring driver) { char *driver_str; jstring result; driver_str = GetStringNativeChars(env, driver); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |