diff --git a/CMakeLists.txt b/CMakeLists.txt index 33d505530..1bbe2b065 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -404,6 +404,7 @@ file(GLOB SOURCE_FILES ${SDL2_SOURCE_DIR}/src/dynapi/*.c ${SDL2_SOURCE_DIR}/src/events/*.c ${SDL2_SOURCE_DIR}/src/file/*.c + ${SDL2_SOURCE_DIR}/src/haptic/*.c ${SDL2_SOURCE_DIR}/src/libm/*.c ${SDL2_SOURCE_DIR}/src/locale/*.c ${SDL2_SOURCE_DIR}/src/power/*.c @@ -878,8 +879,6 @@ if(SDL_HAPTIC) # Haptic requires some private functions from the joystick subsystem. message_error("SDL_HAPTIC requires SDL_JOYSTICK, which is not enabled") endif() - file(GLOB HAPTIC_SOURCES ${SDL2_SOURCE_DIR}/src/haptic/*.c) - set(SOURCE_FILES ${SOURCE_FILES} ${HAPTIC_SOURCES}) endif() diff --git a/src/haptic/windows/SDL_windowshaptic_c.h b/src/haptic/windows/SDL_windowshaptic_c.h index 5f00b7e11..9048663f4 100644 --- a/src/haptic/windows/SDL_windowshaptic_c.h +++ b/src/haptic/windows/SDL_windowshaptic_c.h @@ -50,6 +50,7 @@ struct haptic_hwdata /* * Haptic system effect data. */ +#if SDL_HAPTIC_DINPUT || SDL_HAPTIC_XINPUT struct haptic_hweffect { #if SDL_HAPTIC_DINPUT @@ -60,6 +61,7 @@ struct haptic_hweffect XINPUT_VIBRATION vibration; #endif }; +#endif /* * List of available haptic devices. diff --git a/src/joystick/windows/SDL_windowsjoystick.c b/src/joystick/windows/SDL_windowsjoystick.c index 1b016f2aa..b008dbce3 100644 --- a/src/joystick/windows/SDL_windowsjoystick.c +++ b/src/joystick/windows/SDL_windowsjoystick.c @@ -359,9 +359,13 @@ WINDOWS_JoystickDetect(void) JoyStick_DeviceData *pListNext = NULL; if (pCurList->bXInputDevice) { +#if SDL_HAPTIC_XINPUT SDL_XINPUT_MaybeRemoveDevice(pCurList->XInputUserId); +#endif } else { +#if SDL_HAPTIC_DINPUT SDL_DINPUT_MaybeRemoveDevice(&pCurList->dxdevice); +#endif } SDL_PrivateJoystickRemoved(pCurList->nInstanceID); @@ -380,9 +384,13 @@ WINDOWS_JoystickDetect(void) while (pNewJoystick) { if (pNewJoystick->send_add_event) { if (pNewJoystick->bXInputDevice) { +#if SDL_HAPTIC_XINPUT SDL_XINPUT_MaybeAddDevice(pNewJoystick->XInputUserId); +#endif } else { +#if SDL_HAPTIC_DINPUT SDL_DINPUT_MaybeAddDevice(&pNewJoystick->dxdevice); +#endif } SDL_PrivateJoystickAdded(pNewJoystick->nInstanceID);