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

@ -364,4 +364,8 @@ final class LinuxEventDevice implements LinuxDevice {
protected void finalize() throws IOException { protected void finalize() throws IOException {
close(); 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 { protected void finalize() throws IOException {
close(); 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