Simplify winraw_callback

This commit is contained in:
twinaphex 2020-08-29 19:43:53 +02:00
parent d9bfd4c38f
commit 3ff521ab0b

View File

@ -434,7 +434,6 @@ static void winraw_update_mouse_state(winraw_mouse_t *mouse, RAWMOUSE *state)
static LRESULT CALLBACK winraw_callback(HWND wnd, UINT msg, WPARAM wpar, LPARAM lpar) static LRESULT CALLBACK winraw_callback(HWND wnd, UINT msg, WPARAM wpar, LPARAM lpar)
{ {
UINT r;
unsigned i; unsigned i;
static uint8_t data[1024]; static uint8_t data[1024];
RAWINPUT *ri = (RAWINPUT*)data; RAWINPUT *ri = (RAWINPUT*)data;
@ -443,24 +442,24 @@ static LRESULT CALLBACK winraw_callback(HWND wnd, UINT msg, WPARAM wpar, LPARAM
if (msg != WM_INPUT) if (msg != WM_INPUT)
return DefWindowProcA(wnd, msg, wpar, lpar); return DefWindowProcA(wnd, msg, wpar, lpar);
/* app is in the background */ if (
if (GET_RAWINPUT_CODE_WPARAM(wpar) != RIM_INPUT) GET_RAWINPUT_CODE_WPARAM(wpar) != RIM_INPUT /* app is in the background */
goto end; || GetRawInputData((HRAWINPUT)lpar, RID_INPUT,
data, &size, sizeof(RAWINPUTHEADER)) == (UINT)-1)
r = GetRawInputData((HRAWINPUT)lpar, RID_INPUT,
data, &size, sizeof(RAWINPUTHEADER));
if (r == (UINT)-1)
goto end;
if (ri->header.dwType == RIM_TYPEKEYBOARD)
{ {
DefWindowProcA(wnd, msg, wpar, lpar);
return 0;
}
switch (ri->header.dwType)
{
case RIM_TYPEKEYBOARD:
if (ri->data.keyboard.Message == WM_KEYDOWN) if (ri->data.keyboard.Message == WM_KEYDOWN)
g_keyboard->keys[ri->data.keyboard.VKey] = 1; g_keyboard->keys[ri->data.keyboard.VKey] = 1;
else if (ri->data.keyboard.Message == WM_KEYUP) else if (ri->data.keyboard.Message == WM_KEYUP)
g_keyboard->keys[ri->data.keyboard.VKey] = 0; g_keyboard->keys[ri->data.keyboard.VKey] = 0;
} break;
else if (ri->header.dwType == RIM_TYPEMOUSE) case RIM_TYPEMOUSE:
{
for (i = 0; i < g_mouse_cnt; ++i) for (i = 0; i < g_mouse_cnt; ++i)
{ {
if (g_mice[i].hnd == ri->header.hDevice) if (g_mice[i].hnd == ri->header.hDevice)
@ -469,9 +468,9 @@ static LRESULT CALLBACK winraw_callback(HWND wnd, UINT msg, WPARAM wpar, LPARAM
break; break;
} }
} }
break;
} }
end:
DefWindowProcA(wnd, msg, wpar, lpar); DefWindowProcA(wnd, msg, wpar, lpar);
return 0; return 0;
} }