mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 05:47:56 -07:00
WiimoteNew: Made emulated wiimote return read error when motion plus register area is read.(Fixes "Sonic the Hedgehog 4" input, perhaps others) GCPad/WiimoteNew: Made DirectInput use the Dolphin window hwnd for SetCoopLevel instead of GetForegroundWindow.(attempt to fix issue where gamepads sometimes don't work until "Refresh" is pressed)
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6269 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
7733b84bc1
commit
de3ad37299
@ -71,7 +71,7 @@ void Init(std::vector<ControllerInterface::Device*>& devices, HWND hwnd)
|
|||||||
InitKeyboardMouse(idi8, devices, hwnd);
|
InitKeyboardMouse(idi8, devices, hwnd);
|
||||||
#endif
|
#endif
|
||||||
#ifdef CIFACE_USE_DINPUT_JOYSTICK
|
#ifdef CIFACE_USE_DINPUT_JOYSTICK
|
||||||
InitJoystick(idi8, devices/*, hwnd*/);
|
InitJoystick(idi8, devices, hwnd);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
idi8->Release();
|
idi8->Release();
|
||||||
|
@ -142,7 +142,7 @@ LCleanup:
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void InitJoystick( IDirectInput8* const idi8, std::vector<ControllerInterface::Device*>& devices/*, HWND hwnd*/ )
|
void InitJoystick(IDirectInput8* const idi8, std::vector<ControllerInterface::Device*>& devices, HWND hwnd)
|
||||||
{
|
{
|
||||||
std::list<DIDEVICEINSTANCE> joysticks;
|
std::list<DIDEVICEINSTANCE> joysticks;
|
||||||
idi8->EnumDevices( DI8DEVCLASS_GAMECTRL, DIEnumDevicesCallback, (LPVOID)&joysticks, DIEDFL_ATTACHEDONLY );
|
idi8->EnumDevices( DI8DEVCLASS_GAMECTRL, DIEnumDevicesCallback, (LPVOID)&joysticks, DIEDFL_ATTACHEDONLY );
|
||||||
@ -171,8 +171,7 @@ void InitJoystick( IDirectInput8* const idi8, std::vector<ControllerInterface::D
|
|||||||
{
|
{
|
||||||
if (SUCCEEDED(js_device->SetDataFormat(&c_dfDIJoystick)))
|
if (SUCCEEDED(js_device->SetDataFormat(&c_dfDIJoystick)))
|
||||||
{
|
{
|
||||||
// using foregroundwindow seems like a hack
|
if (FAILED(js_device->SetCooperativeLevel(GetAncestor(hwnd, GA_ROOT), DISCL_BACKGROUND | DISCL_EXCLUSIVE)))
|
||||||
if (FAILED(js_device->SetCooperativeLevel(GetForegroundWindow(), DISCL_BACKGROUND | DISCL_EXCLUSIVE)))
|
|
||||||
{
|
{
|
||||||
//PanicAlert("SetCooperativeLevel(DISCL_EXCLUSIVE) failed!");
|
//PanicAlert("SetCooperativeLevel(DISCL_EXCLUSIVE) failed!");
|
||||||
// fall back to non-exclusive mode, with no rumble
|
// fall back to non-exclusive mode, with no rumble
|
||||||
|
@ -21,7 +21,7 @@ namespace ciface
|
|||||||
namespace DInput
|
namespace DInput
|
||||||
{
|
{
|
||||||
|
|
||||||
void InitJoystick( IDirectInput8* const idi8, std::vector<ControllerInterface::Device*>& devices/*, HWND hwnd*/ );
|
void InitJoystick(IDirectInput8* const idi8, std::vector<ControllerInterface::Device*>& devices, HWND hwnd);
|
||||||
|
|
||||||
class Joystick : public ControllerInterface::Device
|
class Joystick : public ControllerInterface::Device
|
||||||
{
|
{
|
||||||
|
@ -434,6 +434,10 @@ void Wiimote::ReadData(const wm_read_data* const rd)
|
|||||||
// motion plus
|
// motion plus
|
||||||
case 0xa6 :
|
case 0xa6 :
|
||||||
{
|
{
|
||||||
|
// emulated motion plus is not yet supported
|
||||||
|
// return read error
|
||||||
|
size = 0;
|
||||||
|
|
||||||
// motion plus crap copied from old wiimote plugin
|
// motion plus crap copied from old wiimote plugin
|
||||||
//block[0xFC] = 0xA6;
|
//block[0xFC] = 0xA6;
|
||||||
//block[0xFD] = 0x20;
|
//block[0xFD] = 0x20;
|
||||||
|
Loading…
Reference in New Issue
Block a user