src/haptic/win32/SDL_syshaptic.c
author Edgar Simo <bobbens@gmail.com>
Thu, 31 Jul 2008 16:16:19 +0000
branchgsoc2008_force_feedback
changeset 2570 53bb7d21928d
parent 2569 806919b319d4
child 2571 6b29d9f267be
permissions -rw-r--r--
Another patch for windows haptic.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
     1
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
     2
    SDL - Simple DirectMedia Layer
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
     3
    Copyright (C) 2008 Edgar Simo
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
     4
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
     5
    This library is free software; you can redistribute it and/or
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
     6
    modify it under the terms of the GNU Lesser General Public
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
     7
    License as published by the Free Software Foundation; either
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
     8
    version 2.1 of the License, or (at your option) any later version.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
     9
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    10
    This library is distributed in the hope that it will be useful,
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    11
    but WITHOUT ANY WARRANTY; without even the implied warranty of
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    12
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    13
    Lesser General Public License for more details.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    14
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    15
    You should have received a copy of the GNU Lesser General Public
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    16
    License along with this library; if not, write to the Free Software
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    17
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    18
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    19
    Sam Lantinga
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    20
    slouken@libsdl.org
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    21
*/
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    22
#include "SDL_config.h"
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    23
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    24
#ifdef SDL_HAPTIC_DINPUT
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    25
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    26
#include "SDL_haptic.h"
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    27
#include "../SDL_syshaptic.h"
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    28
#include "SDL_joystick.h"
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    29
#include "../../joystick/SDL_sysjoystick.h" /* For the real SDL_Joystick */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    30
/*#include "../../joystick/win32/SDL_sysjoystick_c.h"*/ /* For joystick hwdata */ 
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    31
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    32
#define WIN32_LEAN_AND_MEAN
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    33
#include <windows.h>
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    34
2570
53bb7d21928d Another patch for windows haptic.
Edgar Simo <bobbens@gmail.com>
parents: 2569
diff changeset
    35
#define DIRECTINPUT_VERSION 0x0700 /* Need at least DirectX 7 for dwStartDelay */
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    36
#include <dinput.h>
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    37
#include <dxerr9.h>          /* From DirectX SDK 9c */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    38
#ifdef _MSC_VER
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    39
#   pragma comment (lib, "dxerr9.lib")
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    40
#endif /* _MSC_VER */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    41
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    42
    /* an ISO hack for VisualC++ */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    43
#ifdef _MSC_VER
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    44
#define   snprintf   _snprintf
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    45
#endif /* _MSC_VER */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    46
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    47
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    48
#define MAX_HAPTICS  32
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    49
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    50
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    51
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    52
 * List of available haptic devices.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    53
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    54
static struct
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    55
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    56
   DIDEVICEINSTANCE instance;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    57
   SDL_Haptic *haptic;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    58
} SDL_hapticlist[MAX_HAPTICS];
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    59
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    60
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    61
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    62
 * Haptic system hardware data.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    63
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    64
struct haptic_hwdata
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    65
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    66
   LPDIRECTINPUTDEVICE2 device;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    67
   DIDEVCAPS capabilities;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    68
};
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    69
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    70
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    71
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    72
 * Haptic system effect data.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    73
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    74
struct haptic_hweffect
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    75
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    76
   DIEFFECT effect;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    77
};
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    78
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    79
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    80
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    81
 * Internal stuff.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    82
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    83
static LPDIRECTINPUT dinput = NULL;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    84
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    85
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    86
/*
2568
5ad98a77bacb First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2566
diff changeset
    87
 * External stuff.
5ad98a77bacb First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2566
diff changeset
    88
 */
5ad98a77bacb First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2566
diff changeset
    89
extern HINSTANCE SDL_Instance;
5ad98a77bacb First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2566
diff changeset
    90
extern HWND SDL_Window;
5ad98a77bacb First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2566
diff changeset
    91
5ad98a77bacb First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2566
diff changeset
    92
5ad98a77bacb First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2566
diff changeset
    93
/*
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    94
 * Prototypes.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    95
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    96
static BOOL CALLBACK EnumHapticsCallback(const DIDEVICEINSTANCE * pdidInstance, VOID * pContext);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    97
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    98
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
    99
/* 
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   100
 * Like SDL_SetError but for DX error codes.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   101
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   102
static void
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   103
DI_SetError(const char *str, HRESULT err)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   104
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   105
   SDL_SetError( "Haptic: %s - %s: %s", str,
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   106
                 DXGetErrorString9(err),
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   107
                 DXGetErrorDescription9(err));
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   108
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   109
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   110
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   111
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   112
 * Initializes the haptic subsystem.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   113
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   114
int
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   115
SDL_SYS_HapticInit(void)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   116
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   117
   HRESULT ret;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   118
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   119
   if (dinput != NULL) { /* Already open. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   120
      SDL_SetError("Haptic: SubSystem already open.");
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   121
      return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   122
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   123
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   124
   /* Clear all the memory. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   125
   SDL_memset(SDL_hapticlist, 0, sizeof(SDL_hapticlist));
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   126
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   127
   SDL_numhaptics = 0;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   128
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   129
   ret = CoInitialize(NULL);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   130
   if (FAILED(ret)) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   131
      DI_SetError("Coinitialize",ret);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   132
      return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   133
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   134
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   135
   ret = CoCreateInstance(&CLSID_DirectInput, NULL, CLSCTX_INPROC_SERVER,
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   136
                          &IID_IDirectInput, &dinput);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   137
   if (FAILED(ret)) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   138
      DI_SetError("CoCreateInstance",ret);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   139
      return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   140
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   141
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   142
   /* Because we used CoCreateInstance, we need to Initialize it, first. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   143
   ret = IDirectInput_Initialize(dinput, SDL_Instance, DIRECTINPUT_VERSION);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   144
   if (FAILED(ret)) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   145
      DI_SetError("Initializing DirectInput device",ret);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   146
      return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   147
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   148
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   149
   /* Look for haptic devices. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   150
   ret = IDirectInput_EnumDevices( dinput,
2568
5ad98a77bacb First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2566
diff changeset
   151
                                   DIDEVTYPE_DEVICE,
5ad98a77bacb First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2566
diff changeset
   152
                                   EnumHapticsCallback,
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   153
                                   NULL, DIEDFL_FORCEFEEDBACK | DIEDFL_ATTACHEDONLY);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   154
   if (FAILED(ret)) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   155
      DI_SetError("Enumerating DirectInput devices",ret);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   156
      return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   157
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   158
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   159
   return SDL_numhaptics;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   160
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   161
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   162
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   163
 * Callback to find the haptic devices.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   164
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   165
static BOOL CALLBACK
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   166
EnumHapticsCallback(const DIDEVICEINSTANCE * pdidInstance, VOID * pContext)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   167
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   168
   memcpy(&SDL_hapticlist[SDL_numhaptics].instance, pdidInstance,
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   169
         sizeof(DIDEVICEINSTANCE));
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   170
   SDL_numhaptics++;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   171
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   172
   if (SDL_numhaptics >= MAX_HAPTICS)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   173
      return DIENUM_STOP;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   174
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   175
   return DIENUM_CONTINUE;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   176
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   177
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   178
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   179
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   180
 * Return the name of a haptic device, does not need to be opened.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   181
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   182
const char *
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   183
SDL_SYS_HapticName(int index)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   184
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   185
   return SDL_hapticlist[index].instance.tszProductName;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   186
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   187
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   188
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   189
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   190
 * Callback to get all supported effects.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   191
 */
2570
53bb7d21928d Another patch for windows haptic.
Edgar Simo <bobbens@gmail.com>
parents: 2569
diff changeset
   192
/*
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   193
#define EFFECT_TEST(e,s)   \
2568
5ad98a77bacb First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2566
diff changeset
   194
if (pei->guid == (e))      \
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   195
   haptic->supported |= (s)
2570
53bb7d21928d Another patch for windows haptic.
Edgar Simo <bobbens@gmail.com>
parents: 2569
diff changeset
   196
*/
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   197
static BOOL CALLBACK
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   198
DI_EffectCallback(LPCDIEffectInfo pei, LPVOID pv)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   199
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   200
   /* Prepare the haptic device. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   201
   SDL_Haptic *haptic = (SDL_Haptic*) pv;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   202
   haptic->supported = 0;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   203
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   204
   /* Get supported. */
2569
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   205
   switch (pei->guid) {
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   206
      case GUID_Spring:
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   207
         haptic->supported |= SDL_HAPTIC_SPRING;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   208
         break;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   209
      case GUID_Damper:
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   210
         haptic->supported |= SDL_HAPTIC_DAMPER;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   211
         break;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   212
      case GUID_Inertia:
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   213
         haptic->supported |= SDL_HAPTIC_INERTIA;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   214
         break;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   215
      case GUID_Friction:
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   216
         haptic->supported |= SDL_HAPTIC_FRICTION;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   217
         break;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   218
      case GUID_ConstantForce:
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   219
         haptic->supported |= SDL_HAPTIC_CONSTANT;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   220
         break;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   221
      case GUID_CustomForce:
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   222
         haptic->supported |= SDL_HAPTIC_CUSTOM;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   223
         break;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   224
      case GUID_Sine:
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   225
         haptic->supported |= SDL_HAPTIC_SINE;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   226
         break;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   227
      case GUID_Square:
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   228
         haptic->supported |= SDL_HAPTIC_SQUARE;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   229
         break;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   230
      case GUID_Triangle:
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   231
         haptic->supported |= SDL_HAPTIC_TRIANGLE;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   232
         break;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   233
      case GUID_SawtoothUp:
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   234
         haptic->supported |= SDL_HAPTIC_SAWTOOTHUP;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   235
         break;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   236
      case GUID_SawtoothDown:
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   237
         haptic->supported |= SDL_HAPTIC_SAWTOOTHDOWN;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   238
         break;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   239
      case GUID_RampForce:
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   240
         haptic->supported |= SDL_HAPTIC_RAMP;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   241
         break;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   242
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   243
      default:
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   244
         break;
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   245
   }
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   246
/*
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   247
   EFFECT_TEST(GUID_Spring,         SDL_HAPTIC_SPRING);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   248
   EFFECT_TEST(GUID_Damper,         SDL_HAPTIC_DAMPER);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   249
   EFFECT_TEST(GUID_Inertia,        SDL_HAPTIC_INERTIA);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   250
   EFFECT_TEST(GUID_Friction,       SDL_HAPTIC_FRICTION);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   251
   EFFECT_TEST(GUID_ConstantForce,  SDL_HAPTIC_CONSTANT);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   252
   EFFECT_TEST(GUID_CustomForce,    SDL_HAPTIC_CUSTOM);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   253
   EFFECT_TEST(GUID_Sine,           SDL_HAPTIC_SINE);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   254
   EFFECT_TEST(GUID_Square,         SDL_HAPTIC_SQUARE);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   255
   EFFECT_TEST(GUID_Triangle,       SDL_HAPTIC_TRIANGLE);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   256
   EFFECT_TEST(GUID_SawtoothUp,     SDL_HAPTIC_SAWTOOTHUP);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   257
   EFFECT_TEST(GUID_SawtoothDown,   SDL_HAPTIC_SAWTOOTHDOWN);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   258
   EFFECT_TEST(GUID_RampForce,      SDL_HAPTIC_RAMP);
2569
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   259
*/
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   260
  
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   261
   /* Check for more. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   262
   return DIENUM_CONTINUE;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   263
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   264
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   265
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   266
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   267
 * Opens the haptic device from the file descriptor.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   268
 *
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   269
 *    Steps:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   270
 *       - Open temporary DirectInputDevice interface.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   271
 *       - Create DirectInputDevice2 interface.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   272
 *       - Release DirectInputDevice interface.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   273
 *       - Acquire exclusiveness.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   274
 *       - Reset actuators.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   275
 *       - Get supported featuers.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   276
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   277
static int
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   278
SDL_SYS_HapticOpenFromInstance(SDL_Haptic * haptic, DIDEVICEINSTANCE instance)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   279
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   280
   HRESULT ret;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   281
   LPDIRECTINPUTDEVICE device;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   282
   DIPROPDWORD dipdw;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   283
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   284
   /* Allocate the hwdata */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   285
   haptic->hwdata = (struct haptic_hwdata *)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   286
         SDL_malloc(sizeof(*haptic->hwdata));
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   287
   if (haptic->hwdata == NULL) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   288
      SDL_OutOfMemory();
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   289
      goto creat_err;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   290
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   291
   SDL_memset(haptic->hwdata, 0, sizeof(*haptic->hwdata));
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   292
  
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   293
   /* Open the device */
2569
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   294
   ret = IDirectInput_CreateDevice( dinput, &instance.guidInstance,
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   295
                                    &device, NULL );
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   296
   if (FAILED(ret)) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   297
      DI_SetError("Creating DirectInput device",ret);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   298
      goto creat_err;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   299
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   300
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   301
   /* Now get the IDirectInputDevice2 interface, instead. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   302
   ret = IDirectInputDevice_QueryInterface( device,
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   303
                                            &IID_IDirectInputDevice2,
2568
5ad98a77bacb First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2566
diff changeset
   304
                                            (LPVOID *) &haptic->hwdata->device );
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   305
   /* Done with the temporary one now. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   306
   IDirectInputDevice_Release(device);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   307
   if (FAILED(ret)) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   308
      DI_SetError("Querying DirectInput interface",ret);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   309
      goto creat_err;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   310
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   311
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   312
   /* Acquire the device. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   313
   ret = IDirectInputDevice2_Acquire(haptic->hwdata->device);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   314
   if (FAILED(ret)) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   315
      DI_SetError("Acquiring DirectInput device",ret);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   316
      goto query_err;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   317
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   318
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   319
   /* Grab it exclusively to use force feedback stuff. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   320
   ret =IDirectInputDevice2_SetCooperativeLevel( haptic->hwdata->device,
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   321
                                                 SDL_Window,
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   322
                                                 DISCL_EXCLUSIVE | DISCL_BACKGROUND );
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   323
   if (FAILED(ret)) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   324
      DI_SetError("Setting cooperative level to exclusive",ret);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   325
      goto acquire_err;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   326
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   327
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   328
   /* Reset all actuators - just in case. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   329
   ret = IDirectInputDevice2_SendForceFeedbackCommand( haptic->hwdata->device,
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   330
                                                       DISFFC_RESET );
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   331
   if (FAILED(ret)) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   332
      DI_SetError("Resetting device",ret);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   333
      goto acquire_err;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   334
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   335
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   336
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   337
   /* Enabling actuators. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   338
   ret = IDirectInputDevice2_SendForceFeedbackCommand( haptic->hwdata->device,
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   339
                                                       DISFFC_SETACTUATORSON );
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   340
   if (FAILED(ret)) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   341
      DI_SetError("Enabling actuators",ret);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   342
      goto acquire_err;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   343
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   344
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   345
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   346
   /* Get capabilities. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   347
   ret = IDirectInputDevice2_GetCapabilities( haptic->hwdata->device,
2569
806919b319d4 Another set of fixes to try to get haptic subsystem compiling on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2568
diff changeset
   348
                                              &haptic->hwdata->capabilities );
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   349
   if (FAILED(ret)) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   350
      DI_SetError("Getting device capabilities",ret);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   351
      goto acquire_err;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   352
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   353
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   354
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   355
   /* Get supported effects. */
2568
5ad98a77bacb First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2566
diff changeset
   356
   ret = IDirectInputDevice2_EnumEffects( haptic->hwdata->device, 
5ad98a77bacb First attempt to fix compilation on windows.
Edgar Simo <bobbens@gmail.com>
parents: 2566
diff changeset
   357
                                          DI_EffectCallback, haptic, DIEFT_ALL );
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   358
   if (FAILED(ret)) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   359
      DI_SetError("Enumerating supported effects",ret);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   360
      goto acquire_err;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   361
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   362
   if (haptic->supported == 0) { /* Error since device supports nothing. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   363
      SDL_SetError("Haptic: Internal error on finding supported effects.");
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   364
      goto acquire_err;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   365
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   366
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   367
   /* Check autogain and autocenter. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   368
   dipdw.diph.dwSize       = sizeof(DIPROPDWORD); 
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   369
   dipdw.diph.dwHeaderSize = sizeof(DIPROPHEADER); 
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   370
   dipdw.diph.dwObj        = 0;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   371
   dipdw.diph.dwHow        = DIPH_DEVICE;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   372
   dipdw.dwData            = 10000;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   373
   ret = IDirectInputDevice2_SetProperty( haptic->hwdata->device,        
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   374
                                          DIPROP_FFGAIN, &dipdw.diph );
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   375
   if (FAILED(ret)) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   376
      if (ret != DIERR_UNSUPPORTED) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   377
         DI_SetError("Checking gain",ret);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   378
         goto acquire_err;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   379
      }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   380
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   381
   else { /* Gain is supported. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   382
      haptic->supported |= SDL_HAPTIC_GAIN;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   383
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   384
   dipdw.dwData            = DIPROPAUTOCENTER_OFF;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   385
   ret = IDirectInputDevice2_SetProperty( haptic->hwdata->device,
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   386
                                          DIPROP_AUTOCENTER, &dipdw.diph );
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   387
   if (FAILED(ret)) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   388
      if (ret != DIERR_UNSUPPORTED) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   389
         DI_SetError("Checking autocenter",ret);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   390
         goto acquire_err;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   391
      }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   392
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   393
   else { /* Autocenter is supported. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   394
      haptic->supported |= SDL_HAPTIC_AUTOCENTER;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   395
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   396
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   397
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   398
   /* Check maximum effects. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   399
   haptic->neffects = 128; /* TODO actually figure this out. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   400
   haptic->nplaying = 128;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   401
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   402
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   403
   /* Prepare effects memory. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   404
   haptic->effects = (struct haptic_effect *)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   405
         SDL_malloc(sizeof(struct haptic_effect) * haptic->neffects);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   406
   if (haptic->effects == NULL) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   407
      SDL_OutOfMemory();
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   408
      goto acquire_err;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   409
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   410
   /* Clear the memory */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   411
   SDL_memset(haptic->effects, 0,
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   412
         sizeof(struct haptic_effect) * haptic->neffects);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   413
   
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   414
   return 0;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   415
   
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   416
   /* Error handling */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   417
acquire_err:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   418
   IDirectInputDevice2_Unacquire(haptic->hwdata->device);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   419
query_err:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   420
   IDirectInputDevice2_Release(haptic->hwdata->device);   
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   421
creat_err:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   422
   if (haptic->hwdata != NULL) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   423
      free(haptic->hwdata);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   424
      haptic->hwdata = NULL;                                              
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   425
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   426
   return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   427
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   428
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   429
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   430
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   431
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   432
 * Opens a haptic device for usage.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   433
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   434
int
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   435
SDL_SYS_HapticOpen(SDL_Haptic * haptic)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   436
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   437
   return SDL_SYS_HapticOpenFromInstance( haptic,
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   438
         SDL_hapticlist[haptic->index].instance );
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   439
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   440
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   441
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   442
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   443
 * Opens a haptic device from first mouse it finds for usage.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   444
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   445
int
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   446
SDL_SYS_HapticMouse(void)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   447
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   448
   return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   449
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   450
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   451
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   452
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   453
 * Checks to see if a joystick has haptic features.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   454
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   455
int
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   456
SDL_SYS_JoystickIsHaptic(SDL_Joystick * joystick)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   457
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   458
   return SDL_FALSE;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   459
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   460
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   461
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   462
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   463
 * Checks to see if the haptic device and joystick and in reality the same.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   464
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   465
int
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   466
SDL_SYS_JoystickSameHaptic(SDL_Haptic * haptic, SDL_Joystick * joystick)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   467
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   468
   return 0;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   469
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   470
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   471
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   472
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   473
 * Opens a SDL_Haptic from a SDL_Joystick.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   474
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   475
int
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   476
SDL_SYS_HapticOpenFromJoystick(SDL_Haptic * haptic, SDL_Joystick * joystick)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   477
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   478
   return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   479
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   480
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   481
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   482
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   483
 * Closes the haptic device.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   484
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   485
void
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   486
SDL_SYS_HapticClose(SDL_Haptic * haptic)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   487
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   488
   if (haptic->hwdata) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   489
2561
3696b9ce8a37 Correctness patch, it's up to the SDL_haptic.c to clean up effects, not SDL_syshaptic.c.
Edgar Simo <bobbens@gmail.com>
parents: 2551
diff changeset
   490
      /* Free effects. */
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   491
      SDL_free(haptic->effects);
2561
3696b9ce8a37 Correctness patch, it's up to the SDL_haptic.c to clean up effects, not SDL_syshaptic.c.
Edgar Simo <bobbens@gmail.com>
parents: 2551
diff changeset
   492
      haptic->effects = NULL;
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   493
      haptic->neffects = 0;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   494
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   495
      /* Clean up */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   496
      IDirectInputDevice2_Unacquire(haptic->hwdata->device);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   497
      IDirectInputDevice2_Release(haptic->hwdata->device);   
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   498
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   499
      /* Free */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   500
      SDL_free(haptic->hwdata);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   501
      haptic->hwdata = NULL;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   502
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   503
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   504
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   505
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   506
/* 
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   507
 * Clean up after system specific haptic stuff
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   508
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   509
void
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   510
SDL_SYS_HapticQuit(void)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   511
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   512
   IDirectInput_Release(dinput);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   513
   dinput = NULL;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   514
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   515
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   516
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   517
/*
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   518
 * Converts an SDL trigger button to an DIEFFECT trigger button.
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   519
 */
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   520
static DWORD
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   521
DIGetTriggerButton( Uint16 button )
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   522
{
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   523
   DWORD dwTriggerButton;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   524
   
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   525
   dwTriggerButton = DIEB_NOTRIGGER;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   526
   
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   527
   if (button != 0) {
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   528
      dwTriggerButton = DIJOFS_BUTTON(button - 1);
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   529
   }                                                                      
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   530
                                                                          
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   531
   return dwTriggerButton;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   532
}
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   533
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   534
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   535
/*
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   536
 * Sets the direction.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   537
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   538
static int
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   539
SDL_SYS_SetDirection( DIEFFECT * effect, SDL_HapticDirection *dir, int naxes )
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   540
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   541
   LONG *rglDir;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   542
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   543
   /* Handle no axes a part. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   544
   if (naxes == 0) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   545
      effect->rglDirection = NULL;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   546
      return 0;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   547
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   548
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   549
   /* Has axes. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   550
   rglDir = SDL_malloc( sizeof(LONG) * naxes );
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   551
   if (rglDir == NULL) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   552
      SDL_OutOfMemory();
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   553
      return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   554
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   555
   SDL_memset( rglDir, 0, sizeof(LONG) * naxes );
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   556
   effect->rglDirection = rglDir;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   557
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   558
   switch (dir->type) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   559
      case SDL_HAPTIC_POLAR:
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   560
         effect->dwFlags |= DIEFF_POLAR;
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   561
         rglDir[0] = dir->dir[0];
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   562
         return 0;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   563
      case SDL_HAPTIC_CARTESIAN:
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   564
         effect->dwFlags |= DIEFF_CARTESIAN;
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   565
         rglDir[0] = dir->dir[0];
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   566
         rglDir[1] = dir->dir[1];
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   567
         rglDir[2] = dir->dir[2];
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   568
         return 0;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   569
      case SDL_HAPTIC_SPHERICAL:
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   570
         effect->dwFlags |= DIEFF_SPHERICAL;
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   571
         rglDir[0] = dir->dir[0];
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   572
         rglDir[1] = dir->dir[1];
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   573
         rglDir[2] = dir->dir[2];
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   574
         return 0;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   575
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   576
      default:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   577
         SDL_SetError("Haptic: Unknown direction type.");
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   578
         return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   579
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   580
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   581
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   582
#define CONVERT(x)   (((x)*10000) / 0xFFFF )
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   583
/*
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   584
 * Creates the DIEFFECT from a SDL_HapticEffect.
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   585
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   586
static int
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   587
SDL_SYS_ToDIEFFECT( SDL_Haptic * haptic, DIEFFECT * dest, SDL_HapticEffect * src )
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   588
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   589
   int i;
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   590
   DICONSTANTFORCE *constant;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   591
   DIPERIODIC *periodic;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   592
   DICONDITION *condition; /* Actually an array of conditions - one per axis. */
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   593
   DIRAMPFORCE *ramp;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   594
   DICUSTOMFORCE *custom;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   595
   DIENVELOPE *envelope;
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   596
   SDL_HapticConstant *hap_constant;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   597
   SDL_HapticPeriodic *hap_periodic;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   598
   SDL_HapticCondition *hap_condition;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   599
   SDL_HapticRamp *hap_ramp;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   600
   SDL_HapticCustom *hap_custom;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   601
   DWORD *axes;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   602
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   603
   /* Set global stuff. */
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   604
   SDL_memset(dest, 0, sizeof(DIEFFECT));
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   605
   dest->dwSize = sizeof(DIEFFECT); /* Set the structure size. */
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   606
   dest->dwSamplePeriod = 0; /* Not used by us. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   607
   dest->dwGain = 10000; /* Gain is set globally, not locally. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   608
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   609
   /* Envelope. */
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   610
   envelope = SDL_malloc( sizeof(DIENVELOPE) );
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   611
   if (envelope == NULL) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   612
      SDL_OutOfMemory();
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   613
      return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   614
   }
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   615
   SDL_memset(envelope, 0, sizeof(DIENVELOPE));
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   616
   dest->lpEnvelope = envelope;
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   617
   envelope->dwSize = sizeof(DIENVELOPE); /* Always should be this. */
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   618
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   619
   /* Axes. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   620
   dest->cAxes = haptic->naxes;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   621
   if (dest->cAxes > 0) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   622
      axes = SDL_malloc(sizeof(DWORD) * dest->cAxes);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   623
      if (axes == NULL) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   624
         SDL_OutOfMemory();
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   625
         return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   626
      }
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   627
      axes[0] = DIJOFS_X; /* Always at least one axis. */
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   628
      if (dest->cAxes > 1) {
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   629
         axes[1] = DIJOFS_Y;
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   630
      }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   631
      if (dest->cAxes > 2) {
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   632
         axes[2] = DIJOFS_Z;
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   633
      }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   634
      dest->rgdwAxes = axes;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   635
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   636
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   637
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   638
   /* The big type handling switch, even bigger then linux's version. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   639
   switch (src->type) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   640
      case SDL_HAPTIC_CONSTANT:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   641
         hap_constant = &src->constant;
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   642
         constant = SDL_malloc( sizeof(DICONSTANTFORCE) );
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   643
         if (constant == NULL) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   644
            SDL_OutOfMemory();
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   645
            return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   646
         }
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   647
         SDL_memset(constant, 0, sizeof(DICONSTANTFORCE));
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   648
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   649
         /* Specifics */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   650
         constant->lMagnitude = CONVERT(hap_constant->level);
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   651
         dest->cbTypeSpecificParams = sizeof(DICONSTANTFORCE); 
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   652
         dest->lpvTypeSpecificParams = constant;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   653
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   654
         /* Generics */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   655
         dest->dwDuration = hap_constant->length * 1000; /* In microseconds. */
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   656
         dest->dwTriggerButton = DIGetTriggerButton(hap_constant->button);
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   657
         dest->dwTriggerRepeatInterval = hap_constant->interval;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   658
         dest->dwStartDelay = hap_constant->delay * 1000; /* In microseconds. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   659
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   660
         /* Direction. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   661
         if (SDL_SYS_SetDirection(dest, &hap_constant->direction, dest->cAxes) < 0) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   662
            return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   663
         }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   664
         
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   665
         /* Envelope */
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   666
         if ((hap_constant->attack_length==0) && (hap_constant->fade_length==0)) {
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   667
            SDL_free(dest->lpEnvelope);
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   668
            dest->lpEnvelope = NULL;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   669
         }
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   670
         else {
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   671
            envelope->dwAttackLevel = CONVERT(hap_constant->attack_level);
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   672
            envelope->dwAttackTime = hap_constant->attack_length * 1000;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   673
            envelope->dwFadeLevel = CONVERT(hap_constant->fade_level);
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   674
            envelope->dwFadeTime = hap_constant->fade_length * 1000;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   675
         }
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   676
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   677
         break;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   678
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   679
      case SDL_HAPTIC_SINE:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   680
      case SDL_HAPTIC_SQUARE:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   681
      case SDL_HAPTIC_TRIANGLE:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   682
      case SDL_HAPTIC_SAWTOOTHUP:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   683
      case SDL_HAPTIC_SAWTOOTHDOWN:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   684
         hap_periodic = &src->periodic;
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   685
         periodic = SDL_malloc(sizeof(DIPERIODIC));
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   686
         if (periodic == NULL) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   687
            SDL_OutOfMemory();
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   688
            return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   689
         }
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   690
         SDL_memset(periodic, 0, sizeof(DIPERIODIC));
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   691
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   692
         /* Specifics */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   693
         periodic->dwMagnitude = CONVERT(hap_periodic->magnitude);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   694
         periodic->lOffset = CONVERT(hap_periodic->offset);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   695
         periodic->dwPhase = hap_periodic->phase;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   696
         periodic->dwPeriod = hap_periodic->period * 1000;
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   697
         dest->cbTypeSpecificParams = sizeof(DIPERIODIC);
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   698
         dest->lpvTypeSpecificParams = periodic;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   699
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   700
         /* Generics */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   701
         dest->dwDuration = hap_periodic->length * 1000; /* In microseconds. */
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   702
         dest->dwTriggerButton = DIGetTriggerButton(hap_periodic->button);
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   703
         dest->dwTriggerRepeatInterval = hap_periodic->interval;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   704
         dest->dwStartDelay = hap_periodic->delay * 1000; /* In microseconds. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   705
         
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   706
         /* Direction. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   707
         if (SDL_SYS_SetDirection(dest, &hap_periodic->direction, dest->cAxes) < 0) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   708
            return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   709
         }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   710
         
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   711
         /* Envelope */
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   712
         if ((hap_periodic->attack_length==0) && (hap_periodic->fade_length==0)) {
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   713
            SDL_free(dest->lpEnvelope);
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   714
            dest->lpEnvelope = NULL;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   715
         }
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   716
         else {
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   717
            envelope->dwAttackLevel = CONVERT(hap_periodic->attack_level);
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   718
            envelope->dwAttackTime = hap_periodic->attack_length * 1000;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   719
            envelope->dwFadeLevel = CONVERT(hap_periodic->fade_level);
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   720
            envelope->dwFadeTime = hap_periodic->fade_length * 1000;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   721
         }
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   722
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   723
         break;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   724
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   725
      case SDL_HAPTIC_SPRING:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   726
      case SDL_HAPTIC_DAMPER:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   727
      case SDL_HAPTIC_INERTIA:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   728
      case SDL_HAPTIC_FRICTION:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   729
         hap_condition = &src->condition;
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   730
         condition = SDL_malloc(sizeof(DICONDITION) * dest->cAxes);
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   731
         if (condition == NULL) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   732
            SDL_OutOfMemory();
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   733
            return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   734
         }
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   735
         SDL_memset(condition, 0, sizeof(DICONDITION));
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   736
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   737
         /* Specifics */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   738
         for (i=0; i<dest->cAxes; i++) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   739
            condition[i].lOffset = CONVERT(hap_condition->center[i]);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   740
            condition[i].lPositiveCoefficient = CONVERT(hap_condition->right_coeff[i]);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   741
            condition[i].lNegativeCoefficient = CONVERT(hap_condition->left_coeff[i]);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   742
            condition[i].dwPositiveSaturation = CONVERT(hap_condition->right_sat[i]);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   743
            condition[i].dwNegativeSaturation = CONVERT(hap_condition->left_sat[i]);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   744
            condition[i].lDeadBand = CONVERT(hap_condition->deadband[i]);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   745
         }
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   746
         dest->cbTypeSpecificParams = sizeof(DICONDITION) * dest->cAxes;
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   747
         dest->lpvTypeSpecificParams = condition;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   748
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   749
         /* Generics */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   750
         dest->dwDuration = hap_condition->length * 1000; /* In microseconds. */
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   751
         dest->dwTriggerButton = DIGetTriggerButton(hap_condition->button);
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   752
         dest->dwTriggerRepeatInterval = hap_condition->interval;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   753
         dest->dwStartDelay = hap_condition->delay * 1000; /* In microseconds. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   754
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   755
         /* Direction. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   756
         if (SDL_SYS_SetDirection(dest, &hap_condition->direction, dest->cAxes) < 0) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   757
            return -1;                
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   758
         }                            
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   759
                                      
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   760
         /* Envelope */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   761
/* TODO Check is envelope actually used.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   762
         envelope->dwAttackLevel = CONVERT(hap_condition->attack_level);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   763
         envelope->dwAttackTime = hap_condition->attack_length * 1000;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   764
         envelope->dwFadeLevel = CONVERT(hap_condition->fade_level);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   765
         envelope->dwFadeTime = hap_condition->fade_length * 1000;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   766
*/
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   767
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   768
         break;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   769
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   770
      case SDL_HAPTIC_RAMP:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   771
         hap_ramp = &src->ramp;
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   772
         ramp = SDL_malloc(sizeof(DIRAMPFORCE));
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   773
         if (ramp == NULL) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   774
            SDL_OutOfMemory();
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   775
            return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   776
         }
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   777
         SDL_memset(ramp, 0, sizeof(DIRAMPFORCE));
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   778
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   779
         /* Specifics */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   780
         ramp->lStart = CONVERT(hap_ramp->start);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   781
         ramp->lEnd = CONVERT(hap_ramp->end);
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   782
         dest->cbTypeSpecificParams = sizeof(DIRAMPFORCE);
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   783
         dest->lpvTypeSpecificParams = ramp;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   784
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   785
         /* Generics */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   786
         dest->dwDuration = hap_ramp->length * 1000; /* In microseconds. */
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   787
         dest->dwTriggerButton = DIGetTriggerButton(hap_ramp->button);
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   788
         dest->dwTriggerRepeatInterval = hap_ramp->interval;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   789
         dest->dwStartDelay = hap_ramp->delay * 1000; /* In microseconds. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   790
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   791
         /* Direction. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   792
         if (SDL_SYS_SetDirection(dest, &hap_ramp->direction, dest->cAxes) < 0) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   793
            return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   794
         }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   795
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   796
         /* Envelope */
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   797
         if ((hap_ramp->attack_length==0) && (hap_ramp->fade_length==0)) {
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   798
            SDL_free(dest->lpEnvelope);
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   799
            dest->lpEnvelope = NULL;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   800
         }
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   801
         else {
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   802
            envelope->dwAttackLevel = CONVERT(hap_ramp->attack_level);
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   803
            envelope->dwAttackTime = hap_ramp->attack_length * 1000;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   804
            envelope->dwFadeLevel = CONVERT(hap_ramp->fade_level);
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   805
            envelope->dwFadeTime = hap_ramp->fade_length * 1000;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   806
         }
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   807
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   808
         break;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   809
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   810
      case SDL_HAPTIC_CUSTOM:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   811
         hap_custom = &src->custom;
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   812
         custom = SDL_malloc(sizeof(DICUSTOMFORCE));
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   813
         if (custom == NULL) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   814
            SDL_OutOfMemory();
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   815
            return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   816
         }
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   817
         SDL_memset(custom, 0, sizeof(DICUSTOMFORCE));
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   818
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   819
         /* Specifics */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   820
         custom->cChannels = hap_custom->channels;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   821
         custom->dwSamplePeriod = hap_custom->period * 1000;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   822
         custom->cSamples = hap_custom->samples;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   823
         custom->rglForceData = SDL_malloc(sizeof(LONG)*custom->cSamples*custom->cChannels);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   824
         for (i=0; i<hap_custom->samples*hap_custom->channels; i++) { /* Copy data. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   825
            custom->rglForceData[i] = CONVERT(hap_custom->data[i]);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   826
         }
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   827
         dest->cbTypeSpecificParams = sizeof(DICUSTOMFORCE);
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   828
         dest->lpvTypeSpecificParams = custom;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   829
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   830
         /* Generics */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   831
         dest->dwDuration = hap_custom->length * 1000; /* In microseconds. */
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   832
         dest->dwTriggerButton = DIGetTriggerButton(hap_custom->button);
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   833
         dest->dwTriggerRepeatInterval = hap_custom->interval;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   834
         dest->dwStartDelay = hap_custom->delay * 1000; /* In microseconds. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   835
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   836
         /* Direction. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   837
         if (SDL_SYS_SetDirection(dest, &hap_custom->direction, dest->cAxes) < 0) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   838
            return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   839
         }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   840
         
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   841
         /* Envelope */
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   842
         if ((hap_custom->attack_length==0) && (hap_custom->fade_length==0)) {
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   843
            SDL_free(dest->lpEnvelope);
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   844
            dest->lpEnvelope = NULL;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   845
         }
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   846
         else {
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   847
            envelope->dwAttackLevel = CONVERT(hap_custom->attack_level);
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   848
            envelope->dwAttackTime = hap_custom->attack_length * 1000;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   849
            envelope->dwFadeLevel = CONVERT(hap_custom->fade_level);
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   850
            envelope->dwFadeTime = hap_custom->fade_length * 1000;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   851
         }
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   852
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   853
         break;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   854
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   855
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   856
      default:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   857
         SDL_SetError("Haptic: Unknown effect type.");
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   858
         return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   859
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   860
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   861
   return 0;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   862
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   863
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   864
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   865
/*
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   866
 * Frees an DIEFFECT allocated by SDL_SYS_ToDIEFFECT.
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   867
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   868
static void
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   869
SDL_SYS_HapticFreeDIEFFECT( DIEFFECT * effect, int type )
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   870
{
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   871
   DICUSTOMFORCE *custom;
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   872
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   873
   if (effect->lpEnvelope != NULL) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   874
      SDL_free(effect->lpEnvelope);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   875
      effect->lpEnvelope = NULL;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   876
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   877
   if (effect->rgdwAxes != NULL) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   878
      SDL_free(effect->rgdwAxes);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   879
      effect->rgdwAxes = NULL;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   880
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   881
   if (effect->lpvTypeSpecificParams != NULL) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   882
      if (type == SDL_HAPTIC_CUSTOM) { /* Must free the custom data. */
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   883
         custom = (DICUSTOMFORCE*) effect->lpvTypeSpecificParams;
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   884
         SDL_free(custom->rglForceData);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   885
         custom->rglForceData = NULL;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   886
      }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   887
      SDL_free(effect->lpvTypeSpecificParams);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   888
      effect->lpvTypeSpecificParams = NULL;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   889
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   890
   if (effect->rglDirection != NULL) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   891
      SDL_free(effect->rglDirection);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   892
      effect->rglDirection = NULL;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   893
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   894
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   895
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   896
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   897
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   898
 * Gets the effect type from the generic SDL haptic effect wrapper.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   899
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   900
REFGUID
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   901
SDL_SYS_HapticEffectType(struct haptic_effect * effect)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   902
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   903
   switch (effect->effect.type) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   904
      case SDL_HAPTIC_CONSTANT:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   905
         return GUID_ConstantForce;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   906
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   907
      case SDL_HAPTIC_RAMP:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   908
         return GUID_RampForce;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   909
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   910
      case SDL_HAPTIC_SQUARE:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   911
         return GUID_Square;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   912
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   913
      case SDL_HAPTIC_SINE:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   914
         return GUID_Sine;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   915
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   916
      case SDL_HAPTIC_TRIANGLE:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   917
         return GUID_Triangle;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   918
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   919
      case SDL_HAPTIC_SAWTOOTHUP:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   920
         return GUID_SawtoothUp;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   921
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   922
      case SDL_HAPTIC_SAWTOOTHDOWN:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   923
         return GUID_SawtoothDown;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   924
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   925
      case SDL_HAPTIC_SPRING:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   926
         return GUID_Spring;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   927
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   928
      case SDL_HAPTIC_DAMPER:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   929
         return GUID_Damper;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   930
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   931
      case SDL_HAPTIC_INERTIA:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   932
         return GUID_Inertia;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   933
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   934
      case SDL_HAPTIC_FRICTION:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   935
         return GUID_Friction;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   936
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   937
      case SDL_HAPTIC_CUSTOM:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   938
         return GUID_CustomForce;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   939
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   940
      default:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   941
         SDL_SetError("Haptic: Unknown effect type.");
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   942
         return NULL;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   943
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   944
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   945
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   946
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   947
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   948
 * Creates a new haptic effect.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   949
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   950
int
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   951
SDL_SYS_HapticNewEffect(SDL_Haptic * haptic, struct haptic_effect * effect,
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   952
      SDL_HapticEffect * base)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   953
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   954
   HRESULT ret;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   955
   REFGUID type;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   956
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   957
   /* Alloc the effect. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   958
   effect->hweffect = (struct haptic_hweffect *)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   959
         SDL_malloc(sizeof(struct haptic_hweffect));
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   960
   if (effect->hweffect == NULL) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   961
      SDL_OutOfMemory();
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   962
      goto err_hweffect;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   963
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   964
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   965
   /* Get the type. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   966
   type = SDL_SYS_HapticEffectType(effect);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   967
   if (type == NULL) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   968
      goto err_hweffect;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   969
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   970
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   971
   /* Get the effect. */
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   972
   if (SDL_SYS_ToDIEFFECT(haptic, &effect->hweffect->effect, base) < 0) {
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   973
      goto err_effectdone;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   974
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   975
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   976
   /* Create the actual effect. */
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   977
   ret = IDirectInputDevice2_CreateEffect(haptic->hwdata->device, type,
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   978
         &effect->hweffect->effect, &effect->hweffect->ref, NULL);
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   979
   if (FAILED(ret)) {
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   980
      DI_SetError("Unable to create effect",ret);
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   981
      goto err_effectdone;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   982
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   983
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   984
   return 0;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   985
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   986
err_effectdone:
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
   987
   SDL_SYS_HapticFreeDIEFFECT(&effect->hweffect->effect, base->type);
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   988
err_hweffect:
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   989
   if (effect->hweffect != NULL) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   990
      SDL_free(effect->hweffect);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   991
      effect->hweffect = NULL;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   992
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   993
   return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   994
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   995
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   996
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   997
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   998
 * Updates an effect.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
   999
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1000
int
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1001
SDL_SYS_HapticUpdateEffect(SDL_Haptic * haptic,
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1002
      struct haptic_effect * effect, SDL_HapticEffect * data)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1003
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1004
   HRESULT ret;
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1005
   DWORD flags;
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1006
   DIEFFECT temp;
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1007
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1008
   /* Get the effect. */
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1009
   SDL_memset(&temp, 0, sizeof(DIEFFECT));
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1010
   if (SDL_SYS_ToDIEFFECT(haptic, &temp, data) < 0) {
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1011
      goto err_update;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1012
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1013
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1014
   /* Set the flags.  Might be worthwhile to diff temp with loaded effect and
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1015
    *  only change those parameters. */
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1016
   flags = DIEP_DIRECTION | 
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1017
           DIEP_DURATION |
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1018
           DIEP_ENVELOPE |
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1019
           DIEP_STARTDELAY |
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1020
           DIEP_TRIGGERBUTTON |
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1021
           DIEP_TRIGGERREPEATINTERVAL |
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1022
           DIEP_TYPESPECIFICPARAMS;
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1023
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1024
   /* Create the actual effect. */
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1025
   ret = IDirectInputDevice2_SetParameters(effect->hweffect->ref, &temp, flags);
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1026
   if (ret != FF_OK) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1027
      SDL_SetError("Haptic: Unable to update effect: %s.", FFStrError(ret));
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1028
      goto err_update;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1029
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1030
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1031
   /* Copy it over. */
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1032
   SDL_SYS_HapticFreeDIEFFECT(&effect->hweffect->effect, data->type);
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1033
   SDL_memcpy(&effect->hweffect->effect, &temp, sizeof(DIEFFECT));
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1034
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1035
   return 0;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1036
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1037
err_update:
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1038
   SDL_SYS_HapticFreeDIEFFECT(&temp, data->type);
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1039
   return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1040
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1041
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1042
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1043
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1044
 * Runs an effect.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1045
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1046
int
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1047
SDL_SYS_HapticRunEffect(SDL_Haptic * haptic, struct haptic_effect * effect,
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1048
                        Uint32 iterations)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1049
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1050
   HRESULT ret;
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1051
   DWORD iter;
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1052
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1053
   /* Check if it's infinite. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1054
   if (iterations == SDL_HAPTIC_INFINITY) {
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1055
      iter = INFINITE;
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1056
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1057
   else
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1058
      iter = iterations;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1059
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1060
   /* Run the effect. */
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1061
   ret = IDirectInputEffect_Start( effect->hweffect->ref, iter, 0 );
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1062
   if (FAILED(ret)) {
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1063
      DI_SetError("Running the effect",ret);
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1064
      return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1065
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1066
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1067
   return 0;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1068
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1069
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1070
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1071
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1072
 * Stops an effect.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1073
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1074
int
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1075
SDL_SYS_HapticStopEffect(SDL_Haptic * haptic, struct haptic_effect * effect)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1076
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1077
   HRESULT ret;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1078
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1079
   ret = IDirectInputEffect_Stop(effect->hweffect->ref);
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1080
   if (FAILED(ret)) {
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1081
      DI_SetError("Unable to stop effect",ret);
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1082
      return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1083
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1084
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1085
   return 0;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1086
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1087
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1088
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1089
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1090
 * Frees the effect.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1091
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1092
void
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1093
SDL_SYS_HapticDestroyEffect(SDL_Haptic * haptic, struct haptic_effect * effect)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1094
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1095
   HRESULT ret;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1096
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1097
   ret = IDirectInputEffect_Unload(effect->hweffect->ref);
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1098
   if (FAILED(ret)) {
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1099
      DI_SetError("Removing effect from the device",ret);
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1100
   }
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1101
   SDL_SYS_HapticFreeDIEFFECT(&effect->hweffect->effect, effect->effect.type);   
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1102
   SDL_free(effect->hweffect);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1103
   effect->hweffect = NULL;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1104
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1105
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1106
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1107
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1108
 * Gets the status of a haptic effect.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1109
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1110
int
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1111
SDL_SYS_HapticGetEffectStatus(SDL_Haptic * haptic, struct haptic_effect * effect)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1112
{
2566
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1113
   SDL_SetError("Haptic: Status not supported.");
94ff09afa478 Basic haptic support for windows should work. Needs testing (probably won't compile).
Edgar Simo <bobbens@gmail.com>
parents: 2561
diff changeset
  1114
   return -1;
2551
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1115
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1116
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1117
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1118
/*
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1119
 * Sets the gain.
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1120
 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1121
int
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1122
SDL_SYS_HapticSetGain(SDL_Haptic * haptic, int gain)
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1123
{
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1124
   HRESULT ret;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1125
   DIPROPDWORD dipdw;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1126
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1127
   /* Create the weird structure thingy. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1128
   dipdw.diph.dwSize       = sizeof(DIPROPDWORD);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1129
   dipdw.diph.dwHeaderSize = sizeof(DIPROPHEADER);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1130
   dipdw.diph.dwObj        = 0;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1131
   dipdw.diph.dwHow        = DIPH_DEVICE;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1132
   dipdw.dwData            = gain * 100; /* 0 to 10,000 */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1133
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1134
   /* Try to set the autocenter. */
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1135
   ret = IDirectInputDevice2_SetProperty( haptic->hwdata->device,
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1136
                                          DIPROP_FFGAIN, &dipdw.diph );
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1137
   if (FAILED(ret)) {
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1138
      DI_SetError("Setting gain",ret);
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1139
      return -1;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1140
   }
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1141
  
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1142
   return 0;
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bobbens@gmail.com>
parents:
diff changeset
  1143
}
f010e1d4e431 First version of the windows haptic port, won't compile yet.
Edgar Simo <bo