mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-06-11 16:49:28 +02:00
ControllerInterface/Win32: Prevent devcies from losing their "id" on a hotplug event.
This commit is contained in:
@ -3,9 +3,11 @@
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "InputCommon/ControllerInterface/DInput/DInput.h"
|
||||
#include "Common/StringUtil.h"
|
||||
#include "InputCommon/ControllerInterface/ControllerInterface.h"
|
||||
|
||||
#include "Common/Logging/Log.h"
|
||||
#include "Common/StringUtil.h"
|
||||
|
||||
#include "InputCommon/ControllerInterface/ControllerInterface.h"
|
||||
#include "InputCommon/ControllerInterface/DInput/DInputJoystick.h"
|
||||
#include "InputCommon/ControllerInterface/DInput/DInputKeyboardMouse.h"
|
||||
|
||||
@ -40,25 +42,32 @@ std::string GetDeviceName(const LPDIRECTINPUTDEVICE8 device)
|
||||
{
|
||||
result = StripSpaces(UTF16ToUTF8(str.wsz));
|
||||
}
|
||||
else
|
||||
{
|
||||
ERROR_LOG(PAD, "GetProperty(DIPROP_PRODUCTNAME) failed.");
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void PopulateDevices(HWND hwnd)
|
||||
{
|
||||
g_controller_interface.RemoveDevice([](const auto* dev) { return dev->GetSource() == "DInput"; });
|
||||
// Remove unplugged devices.
|
||||
g_controller_interface.RemoveDevice(
|
||||
[](const auto* dev) { return dev->GetSource() == DINPUT_SOURCE_NAME && !dev->IsValid(); });
|
||||
|
||||
IDirectInput8* idi8;
|
||||
if (FAILED(DirectInput8Create(GetModuleHandle(nullptr), DIRECTINPUT_VERSION, IID_IDirectInput8,
|
||||
(LPVOID*)&idi8, nullptr)))
|
||||
{
|
||||
ERROR_LOG(PAD, "DirectInput8Create failed.");
|
||||
return;
|
||||
}
|
||||
|
||||
InitKeyboardMouse(idi8, hwnd);
|
||||
InitKeyboardMouse(idi8);
|
||||
InitJoystick(idi8, hwnd);
|
||||
|
||||
idi8->Release();
|
||||
}
|
||||
}
|
||||
}
|
||||
} // namespace DInput
|
||||
} // namespace ciface
|
||||
|
Reference in New Issue
Block a user