Progress on linux refreshControllers

main
sigonasr2 3 years ago
parent e5b24a1e18
commit c9185ad6ac
  1. 4
      build/built-jar.properties
  2. BIN
      build/classes/net/java/games/input/LinuxEnvironmentPlugin$1.class
  3. BIN
      build/classes/net/java/games/input/LinuxEnvironmentPlugin$ShutdownHook.class
  4. BIN
      build/classes/net/java/games/input/LinuxEnvironmentPlugin.class
  5. BIN
      build/classes/net/java/games/input/LinuxEventDevice.class
  6. BIN
      build/classes/net/java/games/input/LinuxJoystickDevice.class
  7. BIN
      dist/jinput-with-sources.jar
  8. BIN
      dist/jinput.jar
  9. 58
      src/plugins/linux/net/java/games/input/LinuxEnvironmentPlugin.java
  10. 4
      src/plugins/linux/net/java/games/input/LinuxEventDevice.java
  11. 9
      src/plugins/linux/net/java/games/input/LinuxJoystickDevice.java

@ -1,4 +1,4 @@
#Wed, 08 Jun 2022 20:04:54 +0000
#Wed, 08 Jun 2022 21:14:18 -0500
/workspace/jinput2.10=
/home/niconiconii/Documents/jinput2.10=

Binary file not shown.

BIN
dist/jinput.jar vendored

Binary file not shown.

@ -47,7 +47,8 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
private static boolean supported = false;
private final Controller[] controllers;
private final List<LinuxDevice> devices = new ArrayList<LinuxDevice>();
private final List<LinuxJoystickDevice> joystickDevices = new ArrayList<>();
private final List<LinuxEventDevice> eventDevices = new ArrayList<>();
private final static LinuxDeviceThread device_thread = new LinuxDeviceThread();
/**
@ -122,7 +123,9 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
}
public final Controller[] rescanControllers() {
return enumerateControllers();
Controller[] newControllers = enumerateControllers();
log("Linux plugin claims to have found " + newControllers.length + " controllers");
return newControllers;
}
private final static Component[] createComponents(List<LinuxEventComponent> event_components, LinuxEventDevice device) {
@ -232,15 +235,19 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
// compare
// Check if the nodes have the same name
if(evController.getName().equals(jsController.getName())) {
System.out.println("Same names. "+jsController.getName());
// Check they have the same component count
Component[] evComponents = evController.getComponents();
Component[] jsComponents = jsController.getComponents();
if(evComponents.length == jsComponents.length) {
System.out.println("Same component count."+evComponents.length);
boolean foundADifference = false;
// check the component pairs are of the same type
for(int k = 0; k < evComponents.length; k++) {
// Check the type of the component is the same
if(!(evComponents[k].getIdentifier() == jsComponents[k].getIdentifier())) {
System.out.println("Differing components: "+evComponents[k].getIdentifier()+"//"+jsComponents[k].getIdentifier());
foundADifference = true;
}
}
@ -395,13 +402,24 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
File event_file = joystick_device_files[i];
try {
String path = getAbsolutePathPrivileged(event_file);
LinuxJoystickDevice device = new LinuxJoystickDevice(path);
LinuxJoystickDevice device;
if (joystickDevices.size()>i) {
device=joystickDevices.get(i);
if (device==null) {
device = new LinuxJoystickDevice(path);
joystickDevices.set(i,device);
}
} else {
device = new LinuxJoystickDevice(path);
joystickDevices.add(device);
}
Controller controller = createJoystickFromJoystickDevice(device);
if(controller != null) {
controllers.add(controller);
devices.add(device);
} else
} else {
device.close();
joystickDevices.set(i,null);
}
} catch(IOException e) {
log("Failed to open device (" + event_file + "): " + e.getMessage());
}
@ -444,14 +462,26 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
File event_file = event_device_files[i];
try {
String path = getAbsolutePathPrivileged(event_file);
LinuxEventDevice device = new LinuxEventDevice(path);
LinuxEventDevice device;
//System.out.println(event_file+":"+i);
if (eventDevices.size()>i) {
device=eventDevices.get(i);
if (device==null) {
device = new LinuxEventDevice(path);
eventDevices.set(i,device);
}
} else {
device = new LinuxEventDevice(path);
eventDevices.add(device);
}
try {
Controller controller = createControllerFromDevice(device);
if(controller != null) {
controllers.add(controller);
devices.add(device);
} else
} else {
device.close();
eventDevices.set(i,null);
}
} catch(IOException e) {
log("Failed to create Controller: " + e.getMessage());
device.close();
@ -464,9 +494,17 @@ public final class LinuxEnvironmentPlugin extends ControllerEnvironment implemen
private final class ShutdownHook extends Thread {
public final void run() {
for(int i = 0; i < devices.size(); i++) {
for(int i = 0; i < eventDevices.size(); i++) {
try {
LinuxEventDevice device = eventDevices.get(i);
device.close();
} catch(IOException e) {
log("Failed to close device: " + e.getMessage());
}
}
for(int i = 0; i < joystickDevices.size(); i++) {
try {
LinuxDevice device = devices.get(i);
LinuxJoystickDevice device = joystickDevices.get(i);
device.close();
} catch(IOException e) {
log("Failed to close device: " + e.getMessage());

@ -364,4 +364,8 @@ final class LinuxEventDevice implements LinuxDevice {
protected void finalize() throws IOException {
close();
}
@Override
public boolean equals(Object obj) {
return obj instanceof LinuxEventDevice&&((LinuxEventDevice)obj).getName().equals(getName());
}
}

@ -235,4 +235,13 @@ final class LinuxJoystickDevice implements LinuxDevice {
protected void finalize() throws IOException {
close();
}
@Override
public boolean equals(Object obj) {
try {
return obj instanceof LinuxJoystickDevice&&((LinuxJoystickDevice)obj).getDeviceName().equals(getDeviceName());
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
}

Loading…
Cancel
Save