From 97a529b1d817aff085777d1bc25272fad60b60b2 Mon Sep 17 00:00:00 2001 From: Marcel Admiraal Date: Fri, 29 May 2020 10:15:43 +0100 Subject: [PATCH] Do not probe joypads if DirectInput cannot be initialized. --- platform/windows/joypad_windows.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/platform/windows/joypad_windows.cpp b/platform/windows/joypad_windows.cpp index 50f090d2b00..20662ec5911 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() {