Progress on linux refreshControllers
This commit is contained in:
parent
e5b24a1e18
commit
c9185ad6ac
@ -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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
dist/jinput-with-sources.jar
vendored
BIN
dist/jinput-with-sources.jar
vendored
Binary file not shown.
BIN
dist/jinput.jar
vendored
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 {
|
||||
LinuxDevice device = devices.get(i);
|
||||
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 {
|
||||
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…
x
Reference in New Issue
Block a user