# HG changeset patch # User Edgar Simo # Date 1218012455 0 # Node ID acd5da848404105b30e4ee3847a4ab0dffc1bb53 # Parent 088907e9a2bbf334af8a5474bcfa101526f403e9 Moved the directinput joystick hwdata stuff into a seperate header file. diff -r 088907e9a2bb -r acd5da848404 src/joystick/win32/SDL_dxjoystick.c --- a/src/joystick/win32/SDL_dxjoystick.c Wed Aug 06 07:59:03 2008 +0000 +++ b/src/joystick/win32/SDL_dxjoystick.c Wed Aug 06 08:47:35 2008 +0000 @@ -38,20 +38,7 @@ #include "SDL_joystick.h" #include "../SDL_sysjoystick.h" #include "../SDL_joystick_c.h" - -#define WIN32_LEAN_AND_MEAN -#include - -#define DIRECTINPUT_VERSION 0x0500 -#include -#ifdef _MSC_VER - /* Used for the c_dfDIJoystick2 symbol (no imports are used) */ -# pragma comment (lib, "dinput.lib") -#endif -#include -#ifdef _MSC_VER -# pragma comment (lib, "dxerr.lib") -#endif +#include "SDL_dxjoystick_c.h" /* an ISO hack for VisualC++ */ #ifdef _MSC_VER @@ -60,7 +47,6 @@ #define INPUT_QSIZE 32 /* Buffer up to 32 input messages */ #define MAX_JOYSTICKS 8 -#define MAX_INPUTS 256 /* each joystick can have up to 256 inputs */ #define AXIS_MIN -32768 /* minimum value for axis coordinate */ #define AXIS_MAX 32767 /* maximum value for axis coordinate */ #define JOY_AXIS_THRESHOLD (((AXIS_MAX)-(AXIS_MIN))/100) /* 1% motion */ @@ -95,33 +81,6 @@ Uint8 button, Uint8 state); -/* local types */ -typedef enum Type -{ BUTTON, AXIS, HAT } Type; - -typedef struct input_t -{ - /* DirectInput offset for this input type: */ - DWORD ofs; - - /* Button, axis or hat: */ - Type type; - - /* SDL input offset: */ - Uint8 num; -} input_t; - -/* The private structure used to keep track of a joystick */ -struct joystick_hwdata -{ - LPDIRECTINPUTDEVICE2 InputDevice; - DIDEVCAPS Capabilities; - int buffered; - - input_t Inputs[MAX_INPUTS]; - int NumInputs; -}; - /* Convert a DirectInput return code to a text message */ static void SetDIerror(const char *function, HRESULT code) diff -r 088907e9a2bb -r acd5da848404 src/joystick/win32/SDL_dxjoystick_c.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/joystick/win32/SDL_dxjoystick_c.h Wed Aug 06 08:47:35 2008 +0000 @@ -0,0 +1,82 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2006 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ +#include "SDL_config.h" + +#ifndef SDL_JOYSTICK_DINPUT_H + +/* DirectInput joystick driver; written by Glenn Maynard, based on Andrei de + * A. Formiga's WINMM driver. + * + * Hats and sliders are completely untested; the app I'm writing this for mostly + * doesn't use them and I don't own any joysticks with them. + * + * We don't bother to use event notification here. It doesn't seem to work + * with polled devices, and it's fine to call IDirectInputDevice2_GetDeviceData and + * let it return 0 events. */ + +#define WIN32_LEAN_AND_MEAN +#include + +#define DIRECTINPUT_VERSION 0x0500 +#include +#ifdef _MSC_VER + /* Used for the c_dfDIJoystick2 symbol (no imports are used) */ +# pragma comment (lib, "dinput.lib") +#endif +#include +#ifdef _MSC_VER +# pragma comment (lib, "dxerr.lib") +#endif + + +#define MAX_INPUTS 256 /* each joystick can have up to 256 inputs */ + + +/* local types */ +typedef enum Type +{ BUTTON, AXIS, HAT } Type; + +typedef struct input_t +{ + /* DirectInput offset for this input type: */ + DWORD ofs; + + /* Button, axis or hat: */ + Type type; + + /* SDL input offset: */ + Uint8 num; +} input_t; + +/* The private structure used to keep track of a joystick */ +struct joystick_hwdata +{ + LPDIRECTINPUTDEVICE2 InputDevice; + DIDEVCAPS Capabilities; + int buffered; + + input_t Inputs[MAX_INPUTS]; + int NumInputs; +}; + +#endif /* SDL_JOYSTICK_DINPUT_H */ +