From 9842dbc8014a2ce6da549316893ead08fd36738b Mon Sep 17 00:00:00 2001 From: Edgar Simo Date: Wed, 6 Aug 2008 09:52:51 +0000 Subject: [PATCH] This should hopefully allow initailizing the joystick/haptic subsystems without calling SetVideoMode first. --- src/haptic/win32/SDL_syshaptic.c | 9 +++++++-- src/joystick/win32/SDL_dxjoystick.c | 8 ++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/haptic/win32/SDL_syshaptic.c b/src/haptic/win32/SDL_syshaptic.c index dd7911ba0..63812c406 100644 --- a/src/haptic/win32/SDL_syshaptic.c +++ b/src/haptic/win32/SDL_syshaptic.c @@ -91,7 +91,6 @@ static LPDIRECTINPUT dinput = NULL; /* * External stuff. */ -extern HINSTANCE SDL_Instance; extern HWND SDL_HelperWindow; @@ -146,6 +145,7 @@ int SDL_SYS_HapticInit(void) { HRESULT ret; + HINSTANCE instance; if (dinput != NULL) { /* Already open. */ SDL_SetError("Haptic: SubSystem already open."); @@ -171,7 +171,12 @@ SDL_SYS_HapticInit(void) } /* Because we used CoCreateInstance, we need to Initialize it, first. */ - ret = IDirectInput_Initialize(dinput, SDL_Instance, DIRECTINPUT_VERSION); + instance = GetModuleHandle(NULL); + if (instance == NULL) { + SDL_SetError("GetModuleHandle() failed with error code %d.", GetLastError()); + return -1; + } + ret = IDirectInput_Initialize(dinput, instance, DIRECTINPUT_VERSION); if (FAILED(ret)) { DI_SetError("Initializing DirectInput device",ret); return -1; diff --git a/src/joystick/win32/SDL_dxjoystick.c b/src/joystick/win32/SDL_dxjoystick.c index c633577d9..ffd798164 100644 --- a/src/joystick/win32/SDL_dxjoystick.c +++ b/src/joystick/win32/SDL_dxjoystick.c @@ -52,7 +52,6 @@ #define JOY_AXIS_THRESHOLD (((AXIS_MAX)-(AXIS_MIN))/100) /* 1% motion */ /* external variables referenced. */ -extern HINSTANCE SDL_Instance; extern HWND SDL_HelperWindow; @@ -117,8 +116,13 @@ SDL_SYS_JoystickInit(void) } /* Because we used CoCreateInstance, we need to Initialize it, first. */ + instance = GetModuleHandle(NULL); + if (instance == NULL) { + SDL_SetError("GetModuleHandle() failed with error code %d.", GetLastError()); + return (-1); + } result = - IDirectInput_Initialize(dinput, SDL_Instance, DIRECTINPUT_VERSION); + IDirectInput_Initialize(dinput, instance, DIRECTINPUT_VERSION); if (FAILED(result)) { SetDIerror("IDirectInput::Initialize", result);