diff --git a/Externals/WiiUse/Win32/wiiuse.dll b/Externals/WiiUse/Win32/wiiuse.dll index 9f46d61707..97f0289ca6 100644 Binary files a/Externals/WiiUse/Win32/wiiuse.dll and b/Externals/WiiUse/Win32/wiiuse.dll differ diff --git a/Externals/WiiUse/Win32/wiiuse.lib b/Externals/WiiUse/Win32/wiiuse.lib index 9848aa48e9..e83372d929 100644 Binary files a/Externals/WiiUse/Win32/wiiuse.lib and b/Externals/WiiUse/Win32/wiiuse.lib differ diff --git a/Externals/WiiUse/X64/wiiuse.dll b/Externals/WiiUse/X64/wiiuse.dll index 4f90a44261..26d6485403 100644 Binary files a/Externals/WiiUse/X64/wiiuse.dll and b/Externals/WiiUse/X64/wiiuse.dll differ diff --git a/Externals/WiiUse/X64/wiiuse.lib b/Externals/WiiUse/X64/wiiuse.lib index 432b14d5d9..9e6b440dbb 100644 Binary files a/Externals/WiiUse/X64/wiiuse.lib and b/Externals/WiiUse/X64/wiiuse.lib differ diff --git a/Externals/WiiUseSrc/Src/io_win.c b/Externals/WiiUseSrc/Src/io_win.c index dd0ee18df1..0d345c7ab3 100644 --- a/Externals/WiiUseSrc/Src/io_win.c +++ b/Externals/WiiUseSrc/Src/io_win.c @@ -103,7 +103,7 @@ int wiiuse_find(struct wiimote_t** wm, int max_wiimotes, int timeout) { /* this is a wiimote */ wm[found]->dev_handle = dev; - wm[found]->hid_overlap.hEvent = CreateEvent(NULL, 1, 1, ""); + wm[found]->hid_overlap.hEvent = CreateEvent(NULL, 1, 1, L""); wm[found]->hid_overlap.Offset = 0; wm[found]->hid_overlap.OffsetHigh = 0; @@ -198,14 +198,16 @@ int wiiuse_io_read(struct wiimote_t* wm) { WIIUSE_WARNING("A wait error occured on reading from wiimote %i.", wm->unid); return 0; } - // Move the data over one, so we can add back in 0xa2 - memcpy(wm->event_buf[1], &wm->event_buf, sizeof(wm->event_buf)); - wm->event_buf[0] = 0xa2; // Put back in the crazy Data that Windows strips out if (!GetOverlappedResult(wm->dev_handle, &wm->hid_overlap, &b, 0)) return 0; } + // This needs to be done even if ReadFile fails, essential during init + // Move the data over one, so we can add back in 0xa2 + memcpy(wm->event_buf + 1, wm->event_buf, sizeof(wm->event_buf) - 1); + wm->event_buf[0] = 0xa2; // Put back in the crazy Data that Windows strips out + ResetEvent(wm->hid_overlap.hEvent); return 1; }