gary-rowe/hid4java

macOS API calls must be thread safe

Opened this issue · 0 comments

Per hidapi, macOS HID API calls MUST be executed on the same thread to be safe:

Currently, separate threads interacting with a HID devices on macOS, the entire JVM will crash. This can actually be caused by same-thread execution due to this automatic shutdown hook.

if (hidServicesSpecification.isAutoShutdown()) {
// Ensure we release resources during shutdown
Runtime.getRuntime().addShutdownHook(
new Thread() {
@Override
public void run() {
shutdown();
}
});
}

Despite this being an upstream issue, Java has some ways of thread pooling so that we can manage this downstream until upstream has a permanent fix.

@Vzor- will be submitting a PR which references this issue with a proposed downstream threading solution.