mirror of
https://github.com/shadowfacts/jinput-arm64.git
synced 2026-01-02 14:59:57 +01:00
Made the core classes and the linux plugin applet compatible. Removed dead code in DefaultControllerEnvironment
This commit is contained in:
parent
c9b1dd2ba1
commit
f0737680fa
|
|
@ -57,20 +57,6 @@ import net.java.games.util.plugins.*;
|
|||
* @author Michael Martak
|
||||
*/
|
||||
class DefaultControllerEnvironment extends ControllerEnvironment {
|
||||
static final boolean DEBUG =false;
|
||||
/**
|
||||
* The name of the properties file to find plugins.
|
||||
*/
|
||||
private final static String PROPERTY_FILENAME =
|
||||
"controller.properties";
|
||||
|
||||
/**
|
||||
* The name of the property for identifying a plugin (used
|
||||
* as the value, the key being the class name).
|
||||
*/
|
||||
private final static String ID_PLUGIN =
|
||||
"ControllerEnvironment";
|
||||
|
||||
/**
|
||||
* Location of the LIB directory.
|
||||
*/
|
||||
|
|
@ -81,16 +67,6 @@ class DefaultControllerEnvironment extends ControllerEnvironment {
|
|||
*/
|
||||
private ArrayList controllers;
|
||||
|
||||
/**
|
||||
* Plug-in properties.
|
||||
*/
|
||||
private Properties properties = new Properties();
|
||||
|
||||
/**
|
||||
* Plug-in class loader.
|
||||
*/
|
||||
private PluginClassLoader pluginLoader = new PluginClassLoader();
|
||||
|
||||
private Collection loadedPlugins = new ArrayList();
|
||||
|
||||
/**
|
||||
|
|
@ -120,6 +96,22 @@ class DefaultControllerEnvironment extends ControllerEnvironment {
|
|||
public DefaultControllerEnvironment() {
|
||||
}
|
||||
|
||||
private static String getPrivilegedProperty(final String property) {
|
||||
return (String)AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return System.getProperty(property);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static String getPrivilegedProperty(final String property, final String default_value) {
|
||||
return (String)AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return System.getProperty(property, default_value);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of all controllers available to this environment,
|
||||
* or an empty array if there are no controllers in this environment.
|
||||
|
|
@ -131,13 +123,13 @@ class DefaultControllerEnvironment extends ControllerEnvironment {
|
|||
AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
scanControllers();
|
||||
return DefaultControllerEnvironment.this;
|
||||
return null;
|
||||
}
|
||||
});
|
||||
//Check the properties for specified controller classes
|
||||
String pluginClasses = System.getProperty("jinput.plugins", "") + " " + System.getProperty("net.java.games.input.plugins", "");
|
||||
if(!System.getProperty("jinput.useDefaultPlugin", "true").toLowerCase().trim().equals("false") && !System.getProperty("net.java.games.input.useDefaultPlugin", "true").toLowerCase().trim().equals("false")) {
|
||||
String osName = System.getProperty("os.name", "").trim();
|
||||
String pluginClasses = getPrivilegedProperty("jinput.plugins", "") + " " + getPrivilegedProperty("net.java.games.input.plugins", "");
|
||||
if(!getPrivilegedProperty("jinput.useDefaultPlugin", "true").toLowerCase().trim().equals("false") && !getPrivilegedProperty("net.java.games.input.useDefaultPlugin", "true").toLowerCase().trim().equals("false")) {
|
||||
String osName = getPrivilegedProperty("os.name", "").trim();
|
||||
if(osName.equals("Linux")) {
|
||||
pluginClasses = pluginClasses + " net.java.games.input.LinuxEnvironmentPlugin";
|
||||
} else if(osName.equals("Mac OS X")) {
|
||||
|
|
@ -180,53 +172,16 @@ class DefaultControllerEnvironment extends ControllerEnvironment {
|
|||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* Scans for controllers, placing them in the controllers list.
|
||||
*/
|
||||
/* This is Mike's old plugin code.
|
||||
private void scanControllers() {
|
||||
// Load properties object.
|
||||
try {
|
||||
loadProperties();
|
||||
} catch (IOException e) {
|
||||
// Could not find or read file, simply return.
|
||||
return;
|
||||
}
|
||||
// Create a list of ControllerEnvironment classes.
|
||||
// For each ControllerEnvironment, locate the class
|
||||
// using the plugin class loader.
|
||||
Iterator it = properties.keySet().iterator();
|
||||
while (it.hasNext()) {
|
||||
Object key = it.next();
|
||||
assert key != null;
|
||||
Object value = properties.get(key);
|
||||
assert value != null;
|
||||
if (value.equals(ID_PLUGIN)) {
|
||||
try {
|
||||
ControllerEnvironment plugin =
|
||||
newPlugin(key.toString());
|
||||
addControllers(plugin.getControllers());
|
||||
} catch (Throwable t) {
|
||||
System.err.println(
|
||||
"Warning : could not load plugin " +
|
||||
key.toString() + ", received exeption " +
|
||||
t.toString());
|
||||
t.printStackTrace(System.err);
|
||||
}
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
/* This is jeff's new plugin code using Jeff's Plugin manager */
|
||||
private void scanControllers() {
|
||||
String pluginPathName = System.getProperty("jinput.controllerPluginPath");
|
||||
String pluginPathName = getPrivilegedProperty("jinput.controllerPluginPath");
|
||||
if(pluginPathName == null) {
|
||||
pluginPathName = "controller";
|
||||
}
|
||||
|
||||
scanControllersAt(System.getProperty("java.home") +
|
||||
scanControllersAt(getPrivilegedProperty("java.home") +
|
||||
File.separator + "lib"+File.separator + pluginPathName);
|
||||
scanControllersAt(System.getProperty("user.dir")+
|
||||
scanControllersAt(getPrivilegedProperty("user.dir")+
|
||||
File.separator + pluginPathName);
|
||||
}
|
||||
|
||||
|
|
@ -240,13 +195,11 @@ class DefaultControllerEnvironment extends ControllerEnvironment {
|
|||
Class[] envClasses = plugins.getExtends(ControllerEnvironment.class);
|
||||
for(int i=0;i<envClasses.length;i++){
|
||||
try {
|
||||
if (DEBUG) {
|
||||
System.out.println("ControllerEnvironment "+
|
||||
ControllerEnvironment.logln("ControllerEnvironment "+
|
||||
envClasses[i].getName()
|
||||
+" loaded by "+envClasses[i].getClassLoader());
|
||||
}
|
||||
ControllerEnvironment ce = (ControllerEnvironment)
|
||||
envClasses[i].newInstance();
|
||||
envClasses[i].newInstance();
|
||||
addControllers(ce.getControllers());
|
||||
loadedPlugins.add(ce.getClass().getName());
|
||||
} catch (Throwable e) {
|
||||
|
|
@ -258,39 +211,6 @@ class DefaultControllerEnvironment extends ControllerEnvironment {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the file "lib/control.properties" and
|
||||
* load properties into properties object.
|
||||
*/
|
||||
private void loadProperties() throws IOException {
|
||||
if (libPath == null) {
|
||||
libPath = System.getProperty("java.home") +
|
||||
File.separator + "lib";
|
||||
}
|
||||
File file = new File(libPath + File.separator +
|
||||
PROPERTY_FILENAME);
|
||||
FileInputStream inputStream = new FileInputStream(file);
|
||||
properties.load(inputStream);
|
||||
inputStream.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new plugin ControllerEnvironment object
|
||||
*/
|
||||
/*
|
||||
private ControllerEnvironment newPlugin(String name) throws
|
||||
ClassNotFoundException, InstantiationException,
|
||||
IllegalAccessException {
|
||||
Class pluginClass = pluginLoader.loadClass(name);
|
||||
if (!ControllerEnvironment.class.isAssignableFrom(pluginClass)) {
|
||||
throw new ClassCastException(
|
||||
"Plugin class must be assignable from " +
|
||||
ControllerEnvironment.class.getName());
|
||||
}
|
||||
Object instance = pluginClass.newInstance();
|
||||
return (ControllerEnvironment)instance;
|
||||
}
|
||||
*/
|
||||
/**
|
||||
* Add the array of controllers to our list of controllers.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -296,7 +296,8 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
|
|||
for (int i = 0; i < joystick_device_files.length; i++) {
|
||||
File event_file = joystick_device_files[i];
|
||||
try {
|
||||
LinuxJoystickDevice device = new LinuxJoystickDevice(event_file.getAbsolutePath());
|
||||
String path = getAbsolutePathPrivileged(event_file);
|
||||
LinuxJoystickDevice device = new LinuxJoystickDevice(path);
|
||||
Controller controller = createJoystickFromJoystickDevice(device);
|
||||
if (controller != null) {
|
||||
controllers.add(controller);
|
||||
|
|
@ -309,18 +310,34 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
|
|||
}
|
||||
}
|
||||
|
||||
private final static File[] enumerateJoystickDeviceFiles(String dev_path) {
|
||||
File dev = new File(dev_path);
|
||||
return dev.listFiles(new FilenameFilter() {
|
||||
private final static File[] enumerateJoystickDeviceFiles(final String dev_path) {
|
||||
final File dev = new File(dev_path);
|
||||
return listFilesPrivileged(dev, new FilenameFilter() {
|
||||
public final boolean accept(File dir, String name) {
|
||||
return name.startsWith("js");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static String getAbsolutePathPrivileged(final File file) {
|
||||
return (String)AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return file.getAbsolutePath();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static File[] listFilesPrivileged(final File dir, final FilenameFilter filter) {
|
||||
return (File[])AccessController.doPrivileged(new PrivilegedAction() {
|
||||
public Object run() {
|
||||
return dir.listFiles(filter);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private final void enumerateEventControllers(List controllers) {
|
||||
File dev = new File("/dev/input");
|
||||
File[] event_device_files = dev.listFiles(new FilenameFilter() {
|
||||
final File dev = new File("/dev/input");
|
||||
File[] event_device_files = listFilesPrivileged(dev, new FilenameFilter() {
|
||||
public final boolean accept(File dir, String name) {
|
||||
return name.startsWith("event");
|
||||
}
|
||||
|
|
@ -330,7 +347,8 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
|
|||
for (int i = 0; i < event_device_files.length; i++) {
|
||||
File event_file = event_device_files[i];
|
||||
try {
|
||||
LinuxEventDevice device = new LinuxEventDevice(event_file.getAbsolutePath());
|
||||
String path = getAbsolutePathPrivileged(event_file);
|
||||
LinuxEventDevice device = new LinuxEventDevice(path);
|
||||
try {
|
||||
Controller controller = createControllerFromDevice(device);
|
||||
if (controller != null) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue