Fixed issue #959: Joystick configuration lost if not plugged in
authorArian Behvandnejad <buggy@lavabit.com>
Sat, 4 May 2013 09:10:35 +0000 (13:40 +0430)
committerLMH <lmh.0013@gmail.com>
Sun, 12 May 2013 22:46:30 +0000 (12:46 -1000)
src/control/joystickkeyboardcontroller.cpp

index de414fa..6c9e9c0 100644 (file)
@@ -239,8 +239,10 @@ JoystickKeyboardController::read(const Reader& lisp)
           continue;
         }
 
+       bool js_available = joysticks.size() > 0;
+
         if (map->get("button", button)) {
-          if(button < 0 || button >= max_joybuttons) {
+          if(js_available && (button < 0 || button >= max_joybuttons)) {
             log_info << "Invalid button '" << button << "' in buttonmap" << std::endl;
             continue;
           }
@@ -248,7 +250,7 @@ JoystickKeyboardController::read(const Reader& lisp)
         }
 
         if (map->get("axis",   axis)) {
-          if (axis == 0 || abs(axis) > max_joyaxis) {
+          if (js_available && (axis == 0 || abs(axis) > max_joyaxis)) {
             log_info << "Invalid axis '" << axis << "' in axismap" << std::endl;
             continue;
           }
@@ -256,7 +258,8 @@ JoystickKeyboardController::read(const Reader& lisp)
         }
 
         if (map->get("hat",   hat)) {
-          if (hat != SDL_HAT_UP   &&
+          if (js_available        &&
+              hat != SDL_HAT_UP   &&
               hat != SDL_HAT_DOWN &&
               hat != SDL_HAT_LEFT &&
               hat != SDL_HAT_RIGHT) {