Author: mordante
Date: Sun Feb 24 10:54:00 2013
New Revision: 56400

URL: http://svn.gna.org/viewcvs/wesnoth?rev=56400&view=rev
Log:
Add SDL 2.0 compatibility.

Rewrites the joystick code so it works with both SDL 1.2 and SDL 2.0.

Modified:
    trunk/src/joystick.cpp

Modified: trunk/src/joystick.cpp
URL: 
http://svn.gna.org/viewcvs/wesnoth/trunk/src/joystick.cpp?rev=56400&r1=56399&r2=56400&view=diff
==============================================================================
--- trunk/src/joystick.cpp (original)
+++ trunk/src/joystick.cpp Sun Feb 24 10:54:00 2013
@@ -36,6 +36,36 @@
        close();
 }
 
+#if SDL_VERSION_ATLEAST(2,0,0)
+
+static bool attached(
+                 const std::vector<SDL_Joystick*>& joysticks
+               , const size_t index)
+{
+       return SDL_JoystickGetAttached(joysticks[index]);
+}
+
+static const char* name(
+                 const std::vector<SDL_Joystick*>& joysticks
+               , const size_t index)
+{
+       return SDL_JoystickName(joysticks[index]);
+}
+
+#else
+
+static bool attached(const std::vector<SDL_Joystick*>&, const size_t index)
+{
+       return SDL_JoystickOpened(index);
+}
+
+static const char* name(const std::vector<SDL_Joystick*>&, const size_t index)
+{
+       return SDL_JoystickName(index);
+}
+
+#endif
+
 bool joystick_manager::close() {
        if(SDL_WasInit(SDL_INIT_JOYSTICK) == 0)
                return true;
@@ -44,10 +74,10 @@
        bool all_closed = true;
 
        for (int i = 0; i<joysticks; i++)  {
-               if (SDL_JoystickOpened(i)) {
+               if (attached(joysticks_, i)) {
                        SDL_JoystickClose(joysticks_[i]);
                        LOG_JOY << "Closed Joystick" << i;
-                   LOG_JOY << "Name: " << SDL_JoystickName(i);
+                   LOG_JOY << "Name: " << name(joysticks_, i);
                } else {
                        ERR_JOY << "Joystick" << i << " closing failed.";
                        all_closed = false;
@@ -84,12 +114,12 @@
                joysticks_.resize(i+1);
                joysticks_[i] = SDL_JoystickOpen(i);
 
-               if (joysticks_[i] && SDL_JoystickOpened(i)) {
+               if (joysticks_[i] && attached(joysticks_, i)) {
 
                        joystick_found = true;
 
                    LOG_JOY << "Opened Joystick" << i;
-                   LOG_JOY << "Name: " << SDL_JoystickName(i);
+                   LOG_JOY << "Name: " << name(joysticks_, i);
                    LOG_JOY << "Number of Axes: " << 
SDL_JoystickNumAxes(joysticks_[i]);
                    LOG_JOY << "Number of Buttons: " << 
SDL_JoystickNumButtons(joysticks_[i]);
                    LOG_JOY << "Number of Balls: " << 
SDL_JoystickNumBalls(joysticks_[i]);
@@ -217,11 +247,11 @@
        int x_axis = 0, y_axis = 0;
        bool get_xaxis = false, get_yaxis = false;
 
-       if(SDL_JoystickOpened(joystick_xaxis))
+       if(attached(joysticks_, joystick_xaxis))
                if(SDL_JoystickNumAxes(joysticks_[joystick_xaxis]) > xaxis)
                        get_xaxis = true;
 
-       if(SDL_JoystickOpened(joystick_yaxis))
+       if(attached(joysticks_, joystick_yaxis))
                if(SDL_JoystickNumAxes(joysticks_[joystick_yaxis]) > yaxis)
                        get_yaxis = true;
 
@@ -238,7 +268,7 @@
        if(!SDL_WasInit(SDL_INIT_JOYSTICK))
                return 0;
 
-       if(SDL_JoystickOpened(joystick_axis))
+       if(attached(joysticks_, joystick_axis))
                if(SDL_JoystickNumAxes(joysticks_[joystick_axis]) > axis)
                        return SDL_JoystickGetAxis(joysticks_[joystick_axis], 
axis);
        return 0;


_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits

Reply via email to