mirror of
https://github.com/shadowfacts/lwjgl2-arm64.git
synced 2026-04-21 06:14:10 +00:00
Windows: Move more of Display.getVersion to java
This commit is contained in:
parent
01f382fa3b
commit
008c59a301
6 changed files with 77 additions and 23 deletions
|
|
@ -57,7 +57,7 @@ public final class Sys {
|
|||
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;
|
||||
|
|
|
|||
|
|
@ -248,12 +248,13 @@ final class WindowsDisplay implements DisplayImplementation {
|
|||
|
||||
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();
|
||||
|
|
|
|||
54
src/java/org/lwjgl/opengl/WindowsFileVersion.java
Normal file
54
src/java/org/lwjgl/opengl/WindowsFileVersion.java
Normal file
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -241,16 +241,22 @@ void resetDisplayMode(JNIEnv * env) {
|
|||
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);
|
||||
|
|
@ -259,20 +265,13 @@ jstring getVersion(JNIEnv * env, char *driver)
|
|||
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);
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ extern void restoreDisplayMode(void);
|
|||
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
|
||||
|
|
|
|||
|
|
@ -275,7 +275,7 @@ JNIEXPORT void JNICALL Java_org_lwjgl_opengl_WindowsDisplay_setFocus(JNIEnv *env
|
|||
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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue