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 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 {
|
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();
|
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…
x
Reference in New Issue
Block a user