From 39cb1c580ddcd5826370cf312124864ec2ef9b7a Mon Sep 17 00:00:00 2001 From: Elias Naur Date: Fri, 23 Sep 2005 10:39:56 +0000 Subject: [PATCH] Win32: Moved some Win32Display.getVersion code to java --- src/java/org/lwjgl/opengl/Win32Display.java | 5 +- src/native/win32/display.c | 61 +-------------------- src/native/win32/display.h | 4 +- src/native/win32/org_lwjgl_opengl_Display.c | 11 +++- 4 files changed, 16 insertions(+), 65 deletions(-) diff --git a/src/java/org/lwjgl/opengl/Win32Display.java b/src/java/org/lwjgl/opengl/Win32Display.java index 6379c399..084b75d1 100644 --- a/src/java/org/lwjgl/opengl/Win32Display.java +++ b/src/java/org/lwjgl/opengl/Win32Display.java @@ -79,7 +79,10 @@ final class Win32Display implements DisplayImplementation { return null; } - public native String getVersion(); + public String getVersion() { + return nGetVersion(getAdapter()); + } + private native String nGetVersion(String driver); public native DisplayMode init() throws LWJGLException; public native void setTitle(String title); public native boolean isCloseRequested(); diff --git a/src/native/win32/display.c b/src/native/win32/display.c index cf7725c2..e0e8fbbf 100644 --- a/src/native/win32/display.c +++ b/src/native/win32/display.c @@ -276,65 +276,7 @@ void restoreDisplayMode(void) { } } -static char * getDriver() { - #define MY_BUFSIZE 256 - - HKEY hKey; - static TCHAR szAdapterKey[MY_BUFSIZE], szDriverValue[MY_BUFSIZE]; - DWORD dwBufLen = MY_BUFSIZE; - LONG lRet; - - if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, - TEXT("HARDWARE\\DeviceMap\\Video"), - 0, - KEY_QUERY_VALUE, - &hKey) != ERROR_SUCCESS) return NULL; - - lRet = RegQueryValueEx(hKey, - TEXT("\\Device\\Video0"), - NULL, - NULL, - (LPBYTE)szAdapterKey, - &dwBufLen); - - RegCloseKey(hKey); - - if(lRet != ERROR_SUCCESS) return NULL; - - printfDebug("Adapter key: %s\n", szAdapterKey); - - // szAdapterKey now contains something like \Registry\Machine\System\CurrentControlSet\Control\Video\{B70DBD2A-90C4-41CF-A58E-F3BA69F1A6BC}\0000 - // We'll check for the first chunk: - if (strnicmp("\\Registry\\Machine", szAdapterKey, 17) == 0) { - // Yes, it's right, so let's look for that key now - - TCHAR szDriverKey[MY_BUFSIZE]; - strcpy(szDriverKey, &szAdapterKey[18]); - - if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, - TEXT(szDriverKey), - 0, - KEY_QUERY_VALUE, - &hKey) != ERROR_SUCCESS) return NULL; - - lRet = RegQueryValueEx(hKey, - TEXT("InstalledDisplayDrivers"), - NULL, - NULL, - (LPBYTE)szDriverValue, - &dwBufLen); - - RegCloseKey(hKey); - - } - - if(lRet != ERROR_SUCCESS) return NULL; - - return szDriverValue; -} - - -jstring getVersion(JNIEnv * env) +jstring getVersion(JNIEnv * env, char *driver) { jstring ret = NULL; @@ -343,7 +285,6 @@ jstring getVersion(JNIEnv * env) DWORD dwInfoSize; LPVOID lpInfoBuff; BOOL bRetval; - char *driver = getDriver(); if (driver == NULL) { return NULL; diff --git a/src/native/win32/display.h b/src/native/win32/display.h index 691d61a1..d8ec940a 100644 --- a/src/native/win32/display.h +++ b/src/native/win32/display.h @@ -52,6 +52,6 @@ extern int getGammaRampLength(void); extern void setGammaRamp(JNIEnv * env, jobject gammaRampBuffer); extern jobject initDisplay(JNIEnv * env); extern jstring getAdapter(JNIEnv * env); -extern jstring getVersion(JNIEnv * env); +extern jstring getVersion(JNIEnv * env, char *driver); -#endif \ No newline at end of file +#endif diff --git a/src/native/win32/org_lwjgl_opengl_Display.c b/src/native/win32/org_lwjgl_opengl_Display.c index 90c46864..32940032 100644 --- a/src/native/win32/org_lwjgl_opengl_Display.c +++ b/src/native/win32/org_lwjgl_opengl_Display.c @@ -362,8 +362,15 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_Win32Display_setGammaRamp(JNIEnv *e setGammaRamp(env, gamma_buffer); } -JNIEXPORT jstring JNICALL Java_org_lwjgl_opengl_Win32Display_getVersion(JNIEnv *env, jobject self) { - return getVersion(env); +JNIEXPORT jstring JNICALL Java_org_lwjgl_opengl_Win32Display_nGetVersion(JNIEnv *env, jobject self, jstring driver) { + char *driver_str; + jstring result; + driver_str = GetStringNativeChars(env, driver); + if (driver_str == NULL) + return NULL; + result = getVersion(env, driver_str); + free(driver_str); + return result; } JNIEXPORT jobject JNICALL Java_org_lwjgl_opengl_Win32Display_init(JNIEnv *env, jobject self) {