1.1 --- a/src/haptic/darwin/SDL_syshaptic.c Tue May 26 12:03:51 2015 -0400
1.2 +++ b/src/haptic/darwin/SDL_syshaptic.c Tue May 26 12:47:03 2015 -0400
1.3 @@ -771,18 +771,18 @@
1.4 SDL_SYS_ToFFEFFECT(SDL_Haptic * haptic, FFEFFECT * dest, SDL_HapticEffect * src)
1.5 {
1.6 int i;
1.7 - FFCONSTANTFORCE *constant;
1.8 - FFPERIODIC *periodic;
1.9 - FFCONDITION *condition; /* Actually an array of conditions - one per axis. */
1.10 - FFRAMPFORCE *ramp;
1.11 - FFCUSTOMFORCE *custom;
1.12 - FFENVELOPE *envelope;
1.13 - SDL_HapticConstant *hap_constant;
1.14 - SDL_HapticPeriodic *hap_periodic;
1.15 - SDL_HapticCondition *hap_condition;
1.16 - SDL_HapticRamp *hap_ramp;
1.17 - SDL_HapticCustom *hap_custom;
1.18 - DWORD *axes;
1.19 + FFCONSTANTFORCE *constant = NULL;
1.20 + FFPERIODIC *periodic = NULL;
1.21 + FFCONDITION *condition = NULL; /* Actually an array of conditions - one per axis. */
1.22 + FFRAMPFORCE *ramp = NULL;
1.23 + FFCUSTOMFORCE *custom = NULL;
1.24 + FFENVELOPE *envelope = NULL;
1.25 + SDL_HapticConstant *hap_constant = NULL;
1.26 + SDL_HapticPeriodic *hap_periodic = NULL;
1.27 + SDL_HapticCondition *hap_condition = NULL;
1.28 + SDL_HapticRamp *hap_ramp = NULL;
1.29 + SDL_HapticCustom *hap_custom = NULL;
1.30 + DWORD *axes = NULL;
1.31
1.32 /* Set global stuff. */
1.33 SDL_memset(dest, 0, sizeof(FFEFFECT));
1.34 @@ -911,26 +911,29 @@
1.35 case SDL_HAPTIC_DAMPER:
1.36 case SDL_HAPTIC_INERTIA:
1.37 case SDL_HAPTIC_FRICTION:
1.38 - hap_condition = &src->condition;
1.39 - condition = SDL_malloc(sizeof(FFCONDITION) * dest->cAxes);
1.40 - if (condition == NULL) {
1.41 - return SDL_OutOfMemory();
1.42 - }
1.43 - SDL_memset(condition, 0, sizeof(FFCONDITION));
1.44 + if (dest->cAxes > 0) {
1.45 + hap_condition = &src->condition;
1.46 + condition = SDL_malloc(sizeof(FFCONDITION) * dest->cAxes);
1.47 + if (condition == NULL) {
1.48 + return SDL_OutOfMemory();
1.49 + }
1.50 + SDL_memset(condition, 0, sizeof(FFCONDITION));
1.51
1.52 - /* Specifics */
1.53 - for (i = 0; i < dest->cAxes; i++) {
1.54 - condition[i].lOffset = CONVERT(hap_condition->center[i]);
1.55 - condition[i].lPositiveCoefficient =
1.56 - CONVERT(hap_condition->right_coeff[i]);
1.57 - condition[i].lNegativeCoefficient =
1.58 - CONVERT(hap_condition->left_coeff[i]);
1.59 - condition[i].dwPositiveSaturation =
1.60 - CCONVERT(hap_condition->right_sat[i] / 2);
1.61 - condition[i].dwNegativeSaturation =
1.62 - CCONVERT(hap_condition->left_sat[i] / 2);
1.63 - condition[i].lDeadBand = CCONVERT(hap_condition->deadband[i] / 2);
1.64 + /* Specifics */
1.65 + for (i = 0; i < dest->cAxes; i++) {
1.66 + condition[i].lOffset = CONVERT(hap_condition->center[i]);
1.67 + condition[i].lPositiveCoefficient =
1.68 + CONVERT(hap_condition->right_coeff[i]);
1.69 + condition[i].lNegativeCoefficient =
1.70 + CONVERT(hap_condition->left_coeff[i]);
1.71 + condition[i].dwPositiveSaturation =
1.72 + CCONVERT(hap_condition->right_sat[i] / 2);
1.73 + condition[i].dwNegativeSaturation =
1.74 + CCONVERT(hap_condition->left_sat[i] / 2);
1.75 + condition[i].lDeadBand = CCONVERT(hap_condition->deadband[i] / 2);
1.76 + }
1.77 }
1.78 +
1.79 dest->cbTypeSpecificParams = sizeof(FFCONDITION) * dest->cAxes;
1.80 dest->lpvTypeSpecificParams = condition;
1.81