diff --git a/SPD-classes/src/main/java/com/watabou/input/ControllerHandler.java b/SPD-classes/src/main/java/com/watabou/input/ControllerHandler.java index 48bbb573e..b1817aeae 100644 --- a/SPD-classes/src/main/java/com/watabou/input/ControllerHandler.java +++ b/SPD-classes/src/main/java/com/watabou/input/ControllerHandler.java @@ -59,10 +59,25 @@ public class ControllerHandler implements ControllerListener { } } + private static boolean initialized = false; + private static boolean failedInit = false; + public static boolean controllersSupported() { if (DeviceCompat.isAndroid() && Gdx.app.getVersion() < 16) { return false; + } else if (failedInit) { + return false; + } else if (initialized){ + return true; } else { + try { + //we do this to call Controllers.initialize(), which can fail in certain cases + // e.g. missing natives on very old 32-bit desktop platforms + Controllers.getCurrent(); + initialized = true; + } catch (Exception e){ + failedInit = true; + } return true; } }