preliminary applet support
This commit is contained in:
parent
5d2772ba9e
commit
66e6539b7c
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2002-2004 LWJGL Project
|
* Copyright (c) 2002-2006 LWJGL Project
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -31,6 +31,7 @@
|
||||||
*/
|
*/
|
||||||
package org.lwjgl;
|
package org.lwjgl;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
@ -38,6 +39,7 @@ import java.security.AccessController;
|
||||||
import java.security.PrivilegedAction;
|
import java.security.PrivilegedAction;
|
||||||
import java.security.PrivilegedExceptionAction;
|
import java.security.PrivilegedExceptionAction;
|
||||||
|
|
||||||
|
import org.lwjgl.applet.LWJGLInstaller;
|
||||||
import org.lwjgl.input.Mouse;
|
import org.lwjgl.input.Mouse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -51,15 +53,24 @@ import org.lwjgl.input.Mouse;
|
||||||
public final class Sys {
|
public final class Sys {
|
||||||
|
|
||||||
/** Current version of library */
|
/** Current version of library */
|
||||||
private static final String VERSION = "1.0beta";
|
private static final String VERSION = "1.0beta2";
|
||||||
|
|
||||||
/** The implementation instance to delegate platform specific behavior to */
|
/** The implementation instance to delegate platform specific behavior to */
|
||||||
private final static SysImplementation implementation;
|
private final static SysImplementation implementation;
|
||||||
|
|
||||||
private static void loadLibrary(final String name) {
|
/**
|
||||||
|
* utility loadlibrary to load the native library using elevated priviledges
|
||||||
|
* @param name Name of library to load, or full path if usingPath is true
|
||||||
|
* @param usingPath true if using the full path to the native
|
||||||
|
*/
|
||||||
|
private static void loadLibrary(final String name, final boolean usingPath) {
|
||||||
AccessController.doPrivileged(new PrivilegedAction() {
|
AccessController.doPrivileged(new PrivilegedAction() {
|
||||||
public Object run() {
|
public Object run() {
|
||||||
|
if(usingPath) {
|
||||||
|
System.load(name);
|
||||||
|
} else {
|
||||||
System.loadLibrary(name);
|
System.loadLibrary(name);
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -71,15 +82,32 @@ public final class Sys {
|
||||||
UnsatisfiedLinkError last_load_error = null;
|
UnsatisfiedLinkError last_load_error = null;
|
||||||
for (int i = 0; i < library_names.length; i++) {
|
for (int i = 0; i < library_names.length; i++) {
|
||||||
try {
|
try {
|
||||||
loadLibrary(library_names[i]);
|
loadLibrary(library_names[i], false);
|
||||||
last_load_error = null;
|
last_load_error = null;
|
||||||
break;
|
break;
|
||||||
} catch (UnsatisfiedLinkError e) {
|
} catch (UnsatisfiedLinkError e) {
|
||||||
last_load_error = e;
|
last_load_error = e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (last_load_error != null)
|
|
||||||
|
// failed normal loading - check installer
|
||||||
|
if (last_load_error != null && LWJGLInstaller.installed) {
|
||||||
|
for (int i = 0; i < library_names.length; i++) {
|
||||||
|
try {
|
||||||
|
loadLibrary(LWJGLInstaller.installDirectory + File.separator + System.mapLibraryName(library_names[i]), true);
|
||||||
|
last_load_error = null;
|
||||||
|
break;
|
||||||
|
} catch (UnsatisfiedLinkError e) {
|
||||||
|
last_load_error = e;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// check for error
|
||||||
|
if (last_load_error != null) {
|
||||||
throw last_load_error;
|
throw last_load_error;
|
||||||
|
}
|
||||||
|
|
||||||
String native_version = implementation.getNativeLibraryVersion();
|
String native_version = implementation.getNativeLibraryVersion();
|
||||||
if (!native_version.equals(getVersion()))
|
if (!native_version.equals(getVersion()))
|
||||||
throw new LinkageError("Version mismatch: jar version is '" + getVersion() +
|
throw new LinkageError("Version mismatch: jar version is '" + getVersion() +
|
||||||
|
|
Loading…
Reference in New Issue