summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Admiraal <madmiraal@users.noreply.github.com>2020-05-29 10:15:43 +0100
committerMarcel Admiraal <madmiraal@users.noreply.github.com>2020-05-29 12:07:07 +0100
commit97a529b1d817aff085777d1bc25272fad60b60b2 (patch)
tree37e42bd3b512f957a8ae3b3925a4467f2b4fb0e9
parentd19257eb2ba6cf275a1a7be23f66054afa235df3 (diff)
Do not probe joypads if DirectInput cannot be initialized.
-rw-r--r--platform/windows/joypad_windows.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/platform/windows/joypad_windows.cpp b/platform/windows/joypad_windows.cpp
index 50f090d2b0..20662ec591 100644
--- a/platform/windows/joypad_windows.cpp
+++ b/platform/windows/joypad_windows.cpp
@@ -67,13 +67,16 @@ JoypadWindows::JoypadWindows(HWND *hwnd) {
for (int i = 0; i < JOYPADS_MAX; i++)
attached_joypads[i] = false;
- HRESULT result;
- result = DirectInput8Create(GetModuleHandle(nullptr), DIRECTINPUT_VERSION, IID_IDirectInput8, (void **)&dinput, nullptr);
- if (FAILED(result)) {
- printf("Couldn't initialize DirectInput: %ld\n", result);
- printf("Rebooting your PC may solve this issue.\n");
+ HRESULT result = DirectInput8Create(GetModuleHandle(nullptr), DIRECTINPUT_VERSION, IID_IDirectInput8, (void **)&dinput, nullptr);
+ if (result == DI_OK) {
+ probe_joypads();
+ } else {
+ ERR_PRINT("Couldn't initialize DirectInput. Error: " + itos(result));
+ if (result == DIERR_OUTOFMEMORY) {
+ ERR_PRINT("The Windows DirectInput subsystem could not allocate sufficient memory.");
+ ERR_PRINT("Rebooting your PC may solve this issue.");
+ }
}
- probe_joypads();
}
JoypadWindows::~JoypadWindows() {