From b162629546951c98fffe92c44748c74806a4caf6 Mon Sep 17 00:00:00 2001 From: stfx Date: Wed, 8 Jul 2020 17:28:34 +0200 Subject: [PATCH] cmake: Fix building with -DSDL_HAPTIC=Off --- CMakeLists.txt | 3 +-- src/haptic/windows/SDL_windowshaptic_c.h | 2 ++ src/joystick/windows/SDL_windowsjoystick.c | 8 ++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 33d505530cc6f..1bbe2b065e033 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 5f00b7e114a87..9048663f422ef 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 1b016f2aaa6c2..b008dbce36a20 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);