From db782fe04a34319b249c91d6af751689f9e2ddf6 Mon Sep 17 00:00:00 2001 From: Ivan Leo Date: Fri, 22 Sep 2006 19:36:07 +0100 Subject: [PATCH] dinput: Add some error checks to mouse.c. --- dlls/dinput/mouse.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/dlls/dinput/mouse.c b/dlls/dinput/mouse.c index dff65df85ad..aae5e9af572 100644 --- a/dlls/dinput/mouse.c +++ b/dlls/dinput/mouse.c @@ -551,12 +551,13 @@ static LRESULT CALLBACK dinput_mouse_hook( int code, WPARAM wparam, LPARAM lpara return CallNextHookEx( 0, code, wparam, lparam ); } -static void dinput_window_check(SysMouseImpl* This) { +static BOOL dinput_window_check(SysMouseImpl* This) { RECT rect; DWORD centerX, centerY; - + /* make sure the window hasn't moved */ - GetWindowRect(This->win, &rect); + if(!GetWindowRect(This->win, &rect)) + return FALSE; centerX = (rect.right - rect.left) / 2; centerY = (rect.bottom - rect.top ) / 2; if (This->win_centerX != centerX || This->win_centerY != centerY) { @@ -566,6 +567,7 @@ static void dinput_window_check(SysMouseImpl* This) { This->mapped_center.x = This->win_centerX; This->mapped_center.y = This->win_centerY; MapWindowPoints(This->win, HWND_DESKTOP, &This->mapped_center, 1); + return TRUE; } @@ -700,7 +702,8 @@ static HRESULT WINAPI SysMouseAImpl_GetDeviceState( /* Check if we need to do a mouse warping */ if (This->need_warp == WARP_NEEDED && (GetCurrentTime() - This->last_warped > 10)) { - dinput_window_check(This); + if(!dinput_window_check(This)) + return DIERR_GENERIC; TRACE("Warping mouse to %ld - %ld\n", This->mapped_center.x, This->mapped_center.y); SetCursorPos( This->mapped_center.x, This->mapped_center.y ); This->last_warped = GetCurrentTime(); @@ -794,7 +797,8 @@ static HRESULT WINAPI SysMouseAImpl_GetDeviceData(LPDIRECTINPUTDEVICE8A iface, /* Check if we need to do a mouse warping */ if (This->need_warp == WARP_NEEDED && (GetCurrentTime() - This->last_warped > 10)) { - dinput_window_check(This); + if(!dinput_window_check(This)) + return DIERR_GENERIC; TRACE("Warping mouse to %ld - %ld\n", This->mapped_center.x, This->mapped_center.y); SetCursorPos( This->mapped_center.x, This->mapped_center.y ); This->last_warped = GetCurrentTime();