From e9ccd7929bb43bdf22d15e00c0d9a422abfe5fb3 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Wed, 7 Jun 2023 13:01:34 -0400 Subject: [PATCH] v2.1.1: added some safety checks for controllers failing to initialize --- .../java/com/watabou/input/ControllerHandler.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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; } }