소스 검색

solve issue 1739 (NPE in reloadJoysticks() when joystick lacks buttons) #1740

Björn Hempel 3 년 전
부모
커밋
8385b43c0f
1개의 변경된 파일11개의 추가작업 그리고 9개의 파일을 삭제
  1. 11 9
      jme3-lwjgl3/src/main/java/com/jme3/input/lwjgl/GlfwJoystickInput.java

+ 11 - 9
jme3-lwjgl3/src/main/java/com/jme3/input/lwjgl/GlfwJoystickInput.java

@@ -108,15 +108,17 @@ public class GlfwJoystickInput implements JoyInput {
 
                 final ByteBuffer byteBuffer = glfwGetJoystickButtons(i);
 
-                int buttonIndex = 0;
-                while (byteBuffer.hasRemaining()) {
-                    byteBuffer.get();
-
-                    final String logicalId = JoystickCompatibilityMappings.remapButton(joystick.getName(), String.valueOf(buttonIndex));
-                    final JoystickButton button = new DefaultJoystickButton(inputManager, joystick, buttonIndex, String.valueOf(buttonIndex), logicalId);
-                    joystick.addButton(button);
-                    joyButtonPressed.put(button, false);
-                    buttonIndex++;
+                if (byteBuffer != null) {
+                    int buttonIndex = 0;
+                    while (byteBuffer.hasRemaining()) {
+                        byteBuffer.get();
+
+                        final String logicalId = JoystickCompatibilityMappings.remapButton(joystick.getName(), String.valueOf(buttonIndex));
+                        final JoystickButton button = new DefaultJoystickButton(inputManager, joystick, buttonIndex, String.valueOf(buttonIndex), logicalId);
+                        joystick.addButton(button);
+                        joyButtonPressed.put(button, false);
+                        buttonIndex++;
+                    }
                 }
             }
         }