diff options
| author | SND\edgbla_cp <SND\edgbla_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2011-05-02 12:56:41 +0000 |
|---|---|---|
| committer | SND\edgbla_cp <SND\edgbla_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2011-05-02 12:56:41 +0000 |
| commit | 1b994def069a2a09e792f88bb9287387a9a4cc97 (patch) | |
| tree | c2436e7fc76bb7e834dc3a4a1c79390c8538fe54 /macosx/plugins/Common | |
| parent | 2cd82c7b149157c303828d09ef44073c5ff169bf (diff) | |
| download | pcsxr-1b994def069a2a09e792f88bb9287387a9a4cc97.tar.gz | |
Patch 9232 (MaddTheSane).
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@66465 e17a0e51-4ae3-4d35-97c3-1a29b211df97
Diffstat (limited to 'macosx/plugins/Common')
| -rw-r--r-- | macosx/plugins/Common/SDL/include/SDL.h | 1 | ||||
| -rw-r--r-- | macosx/plugins/Common/SDL/include/SDL_haptic.h | 121 | ||||
| -rw-r--r-- | macosx/plugins/Common/SDL/include/SDL_version.h | 166 | ||||
| -rw-r--r-- | macosx/plugins/Common/SDL/src/haptic/SDL_haptic.c | 146 | ||||
| -rw-r--r-- | macosx/plugins/Common/SDL/src/haptic/SDL_haptic_c.h | 31 | ||||
| -rw-r--r-- | macosx/plugins/Common/SDL/src/haptic/SDL_syshaptic.h | 40 | ||||
| -rw-r--r-- | macosx/plugins/Common/SDL/src/haptic/darwin/SDL_syshaptic.c | 49 |
7 files changed, 459 insertions, 95 deletions
diff --git a/macosx/plugins/Common/SDL/include/SDL.h b/macosx/plugins/Common/SDL/include/SDL.h index e5689323..098521e1 100644 --- a/macosx/plugins/Common/SDL/include/SDL.h +++ b/macosx/plugins/Common/SDL/include/SDL.h @@ -84,6 +84,7 @@ #include "SDL_mutex.h" #include "SDL_rwops.h" #include "SDL_thread.h" +#include "SDL_version.h" #ifndef SDL_IGNORE #define SDL_IGNORE 0 diff --git a/macosx/plugins/Common/SDL/include/SDL_haptic.h b/macosx/plugins/Common/SDL/include/SDL_haptic.h index 52f33f15..6b354a2d 100644 --- a/macosx/plugins/Common/SDL/include/SDL_haptic.h +++ b/macosx/plugins/Common/SDL/include/SDL_haptic.h @@ -1,23 +1,22 @@ /* - SDL - Simple DirectMedia Layer - Copyright (C) 2008 Edgar Simo - - 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 + Simple DirectMedia Layer + Copyright (C) 1997-2011 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. */ /** @@ -25,7 +24,7 @@ * * \brief The SDL Haptic subsystem allows you to control haptic (force feedback) * devices. - * + * * The basic usage is as follows: * - Initialize the Subsystem (::SDL_INIT_HAPTIC). * - Open a Haptic Device. @@ -37,7 +36,29 @@ * - (optional) Free the effect with SDL_HapticDestroyEffect(). * - Close the haptic device with SDL_HapticClose(). * - * \par Example: + * \par Simple rumble example: + * \code + * SDL_Haptic *haptic; + * + * // Open the device + * haptic = SDL_HapticOpen( 0 ); + * if (haptic == NULL) + * return -1; + * + * // Initialize simple rumble + * if (SDL_HapticRumbleInit( haptic ) != 0) + * return -1; + * + * // Play effect at 50% strength for 2 seconds + * if (SDL_HapticRumblePlay( haptic, 0.5, 2000 ) != 0) + * return -1; + * SDL_Delay( 2000 ); + * + * // Clean up + * SDL_HapticClose( haptic ); + * \endcode + * + * \par Complete example: * \code * int test_haptic( SDL_Joystick * joystick ) { * SDL_Haptic *haptic; @@ -81,6 +102,10 @@ * return 0; // Success * } * \endcode + * + * You can also find out more information on my blog: + * http://bobbens.dyndns.org/journal/2010/sdl_haptic/ + * * \author Edgar Simo Serra */ @@ -929,7 +954,7 @@ extern DECLSPEC int SDLCALL SDL_HapticNumAxes(SDL_Haptic * haptic); * * \param haptic Haptic device to check on. * \param effect Effect to check to see if it is supported. - * \return 1 if effect is supported, 0 if it isn't or -1 on error. + * \return SDL_TRUE if effect is supported, SDL_FALSE if it isn't or -1 on error. * * \sa SDL_HapticQuery * \sa SDL_HapticNewEffect @@ -1109,6 +1134,58 @@ extern DECLSPEC int SDLCALL SDL_HapticUnpause(SDL_Haptic * haptic); */ extern DECLSPEC int SDLCALL SDL_HapticStopAll(SDL_Haptic * haptic); +/** + * \brief Checks to see if rumble is supported on a haptic device.. + * + * \param haptic Haptic device to check to see if it supports rumble. + * \return SDL_TRUE if effect is supported, SDL_FALSE if it isn't or -1 on error. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleSupported(SDL_Haptic * haptic); + +/** + * \brief Initializes the haptic device for simple rumble playback. + * + * \param haptic Haptic device to initialize for simple rumble playback. + * \return 0 on success or -1 on error. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticRumbleSupported + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleInit(SDL_Haptic * haptic); + +/** + * \brief Runs simple rumble on a haptic device + * + * \param haptic Haptic device to play rumble effect on. + * \param strength Strength of the rumble to play as a 0-1 float value. + * \param length Length of the rumble to play in miliseconds. + * \return 0 on success or -1 on error. + * + * \sa SDL_HapticRumbleSupported + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumbleStop + */ +extern DECLSPEC int SDLCALL SDL_HapticRumblePlay(SDL_Haptic * haptic, float strength, Uint32 length ); + +/** + * \brief Stops the simple rumble on a haptic device. + * + * \param haptic Haptic to stop the rumble on. + * \return 0 on success or -1 on error. + * + * \sa SDL_HapticRumbleSupported + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleStop(SDL_Haptic * haptic); + + /* Ends C function definitions when using C++ */ #ifdef __cplusplus diff --git a/macosx/plugins/Common/SDL/include/SDL_version.h b/macosx/plugins/Common/SDL/include/SDL_version.h new file mode 100644 index 00000000..3d7ce28f --- /dev/null +++ b/macosx/plugins/Common/SDL/include/SDL_version.h @@ -0,0 +1,166 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2011 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_version.h + * + * This header defines the current SDL version. + */ + +#ifndef _SDL_version_h +#define _SDL_version_h + +#include "SDL_stdinc.h" + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +extern "C" { +/* *INDENT-ON* */ +#endif + +/** + * \brief Information the version of SDL in use. + * + * Represents the library's version as three levels: major revision + * (increments with massive changes, additions, and enhancements), + * minor revision (increments with backwards-compatible changes to the + * major revision), and patchlevel (increments with fixes to the minor + * revision). + * + * \sa SDL_VERSION + * \sa SDL_GetVersion + */ +typedef struct SDL_version +{ + Uint8 major; /**< major version */ + Uint8 minor; /**< minor version */ + Uint8 patch; /**< update version */ +} SDL_version; + +/* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL +*/ +#define SDL_MAJOR_VERSION 1 +#define SDL_MINOR_VERSION 3 +#define SDL_PATCHLEVEL 0 + +/** + * \brief Macro to determine SDL version program was compiled against. + * + * This macro fills in a SDL_version structure with the version of the + * library you compiled against. This is determined by what header the + * compiler uses. Note that if you dynamically linked the library, you might + * have a slightly newer or older version at runtime. That version can be + * determined with SDL_GetVersion(), which, unlike SDL_VERSION(), + * is not a macro. + * + * \param x A pointer to a SDL_version struct to initialize. + * + * \sa SDL_version + * \sa SDL_GetVersion + */ +#define SDL_VERSION(x) \ +{ \ + (x)->major = SDL_MAJOR_VERSION; \ + (x)->minor = SDL_MINOR_VERSION; \ + (x)->patch = SDL_PATCHLEVEL; \ +} + +/** + * This macro turns the version numbers into a numeric value: + * \verbatim + (1,2,3) -> (1203) + \endverbatim + * + * This assumes that there will never be more than 100 patchlevels. + */ +#define SDL_VERSIONNUM(X, Y, Z) \ + ((X)*1000 + (Y)*100 + (Z)) + +/** + * This is the version number macro for the current SDL version. + */ +#define SDL_COMPILEDVERSION \ + SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL) + +/** + * This macro will evaluate to true if compiled with SDL at least X.Y.Z. + */ +#define SDL_VERSION_ATLEAST(X, Y, Z) \ + (SDL_COMPILEDVERSION >= SDL_VERSIONNUM(X, Y, Z)) + +/** + * \brief Get the version of SDL that is linked against your program. + * + * If you are linking to SDL dynamically, then it is possible that the + * current version will be different than the version you compiled against. + * This function returns the current version, while SDL_VERSION() is a + * macro that tells you what version you compiled with. + * + * \code + * SDL_version compiled; + * SDL_version linked; + * + * SDL_VERSION(&compiled); + * SDL_GetVersion(&linked); + * printf("We compiled against SDL version %d.%d.%d ...\n", + * compiled.major, compiled.minor, compiled.patch); + * printf("But we linked against SDL version %d.%d.%d.\n", + * linked.major, linked.minor, linked.patch); + * \endcode + * + * This function may be called safely at any time, even before SDL_Init(). + * + * \sa SDL_VERSION + */ +extern DECLSPEC void SDLCALL SDL_GetVersion(SDL_version * ver); + +/** + * \brief Get the code revision of SDL that is linked against your program. + * + * Returns an arbitrary string (a hash value) uniquely identifying the + * exact revision of the SDL library in use, and is only useful in comparing + * against other revisions. It is NOT an incrementing number. + */ +extern DECLSPEC const char *SDLCALL SDL_GetRevision(void); + +/** + * \brief Get the revision number of SDL that is linked against your program. + * + * Returns a number uniquely identifying the exact revision of the SDL + * library in use. It is an incrementing number based on commits to + * hg.libsdl.org. + */ +extern DECLSPEC int SDLCALL SDL_GetRevisionNumber(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +} +/* *INDENT-ON* */ +#endif +#include "close_code.h" + +#endif /* _SDL_version_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/macosx/plugins/Common/SDL/src/haptic/SDL_haptic.c b/macosx/plugins/Common/SDL/src/haptic/SDL_haptic.c index af8c39a7..db7dd121 100644 --- a/macosx/plugins/Common/SDL/src/haptic/SDL_haptic.c +++ b/macosx/plugins/Common/SDL/src/haptic/SDL_haptic.c @@ -1,23 +1,22 @@ /* - SDL - Simple DirectMedia Layer - Copyright (C) 2008 Edgar Simo - - 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 + Simple DirectMedia Layer + Copyright (C) 1997-2011 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. */ #include "SDL_config.h" @@ -143,6 +142,7 @@ SDL_HapticOpen(int device_index) /* Initialize the haptic device */ SDL_memset(haptic, 0, (sizeof *haptic)); + haptic->rumble_id = -1; haptic->index = device_index; if (SDL_SYS_HapticOpen(haptic) < 0) { SDL_free(haptic); @@ -292,6 +292,7 @@ SDL_HapticOpenFromJoystick(SDL_Joystick * joystick) /* Initialize the haptic device */ SDL_memset(haptic, 0, sizeof(SDL_Haptic)); + haptic->rumble_id = -1; if (SDL_SYS_HapticOpenFromJoystick(haptic, joystick) < 0) { SDL_free(haptic); return NULL; @@ -706,3 +707,110 @@ SDL_HapticStopAll(SDL_Haptic * haptic) return SDL_SYS_HapticStopAll(haptic); } + +static void +SDL_HapticRumbleCreate(SDL_HapticEffect * efx) +{ + SDL_memset(efx, 0, sizeof(SDL_HapticEffect)); + efx->type = SDL_HAPTIC_SINE; + efx->periodic.period = 1000; + efx->periodic.magnitude = 0x4000; + efx->periodic.length = 5000; + efx->periodic.attack_length = 0; + efx->periodic.fade_length = 0; +} + +/* + * Checks to see if rumble is supported. + */ +int +SDL_HapticRumbleSupported(SDL_Haptic * haptic) +{ + SDL_HapticEffect efx; + + if (!ValidHaptic(haptic)) { + return -1; + } + + SDL_HapticRumbleCreate(&efx); + return SDL_HapticEffectSupported(haptic, &efx); +} + +/* + * Initializes the haptic device for simple rumble playback. + */ +int +SDL_HapticRumbleInit(SDL_Haptic * haptic) +{ + if (!ValidHaptic(haptic)) { + return -1; + } + + /* Already allocated. */ + if (haptic->rumble_id >= 0) { + return 0; + } + + /* Copy over. */ + SDL_HapticRumbleCreate(&haptic->rumble_effect); + haptic->rumble_id = SDL_HapticNewEffect(haptic, &haptic->rumble_effect); + if (haptic->rumble_id >= 0) { + return 0; + } + return -1; +} + +/* + * Runs simple rumble on a haptic device + */ +int +SDL_HapticRumblePlay(SDL_Haptic * haptic, float strength, Uint32 length) +{ + int ret; + SDL_HapticPeriodic *efx; + + if (!ValidHaptic(haptic)) { + return -1; + } + + if (haptic->rumble_id < 0) { + SDL_SetError("Haptic: Rumble effect not initialized on haptic device"); + return -1; + } + + /* Clamp strength. */ + if (strength > 1.0f) { + strength = 1.0f; + } + else if (strength < 0.0f) { + strength = 0.0f; + } + + /* New effect. */ + efx = &haptic->rumble_effect.periodic; + efx->magnitude = (Sint16)(32767.0f*strength); + efx->length = length; + ret = SDL_HapticUpdateEffect(haptic, haptic->rumble_id, &haptic->rumble_effect); + + return SDL_HapticRunEffect(haptic, haptic->rumble_id, 1); +} + +/* + * Stops the simple rumble on a haptic device. + */ +int +SDL_HapticRumbleStop(SDL_Haptic * haptic) +{ + if (!ValidHaptic(haptic)) { + return -1; + } + + if (haptic->rumble_id < 0) { + SDL_SetError("Haptic: Rumble effect not initialized on haptic device"); + return -1; + } + + return SDL_HapticStopEffect(haptic, haptic->rumble_id); +} + + diff --git a/macosx/plugins/Common/SDL/src/haptic/SDL_haptic_c.h b/macosx/plugins/Common/SDL/src/haptic/SDL_haptic_c.h index 4144a0fb..d7e81105 100644 --- a/macosx/plugins/Common/SDL/src/haptic/SDL_haptic_c.h +++ b/macosx/plugins/Common/SDL/src/haptic/SDL_haptic_c.h @@ -1,23 +1,22 @@ /* - SDL - Simple DirectMedia Layer - Copyright (C) 1997-2010 Sam Lantinga + Simple DirectMedia Layer + Copyright (C) 1997-2011 Sam Lantinga <slouken@libsdl.org> - 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 software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. - 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. + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: - 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 + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. */ extern int SDL_HapticInit(void); diff --git a/macosx/plugins/Common/SDL/src/haptic/SDL_syshaptic.h b/macosx/plugins/Common/SDL/src/haptic/SDL_syshaptic.h index 9542a0d7..b28e1a9c 100644 --- a/macosx/plugins/Common/SDL/src/haptic/SDL_syshaptic.h +++ b/macosx/plugins/Common/SDL/src/haptic/SDL_syshaptic.h @@ -1,23 +1,22 @@ /* - SDL - Simple DirectMedia Layer - Copyright (C) 2008 Edgar Simo - - 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 + Simple DirectMedia Layer + Copyright (C) 1997-2011 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. */ #include "SDL_config.h" @@ -52,6 +51,9 @@ struct _SDL_Haptic struct haptic_hwdata *hwdata; /* Driver dependent */ int ref_count; /* Count for multiple opens */ + + int rumble_id; /* ID of rumble effect for simple rumble API. */ + SDL_HapticEffect rumble_effect; /* Rumble effect. */ }; /* diff --git a/macosx/plugins/Common/SDL/src/haptic/darwin/SDL_syshaptic.c b/macosx/plugins/Common/SDL/src/haptic/darwin/SDL_syshaptic.c index c5b1e54b..48a7c45c 100644 --- a/macosx/plugins/Common/SDL/src/haptic/darwin/SDL_syshaptic.c +++ b/macosx/plugins/Common/SDL/src/haptic/darwin/SDL_syshaptic.c @@ -1,23 +1,22 @@ /* - SDL - Simple DirectMedia Layer - Copyright (C) 2008 Edgar Simo - - 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 + Simple DirectMedia Layer + Copyright (C) 1997-2011 Sam Lantinga <slouken@libsdl.org> + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. */ #include "SDL_config.h" @@ -534,6 +533,18 @@ SDL_SYS_JoystickSameHaptic(SDL_Haptic * haptic, SDL_Joystick * joystick) int SDL_SYS_HapticOpenFromJoystick(SDL_Haptic * haptic, SDL_Joystick * joystick) { + int i; + for (i=0; i<SDL_numhaptics; i++) { + if (IOObjectIsEqualTo((io_object_t) SDL_hapticlist[i].dev, + joystick->hwdata->ffservice)) { + haptic->index = i; + break; + } + } + if (i >= SDL_numhaptics) { + return -1; + } + return SDL_SYS_HapticOpenFromService(haptic, joystick->hwdata->ffservice); } |
