diff --git a/src/mouse.c b/src/mouse.c index 3e0d0ac..df05989 100644 --- a/src/mouse.c +++ b/src/mouse.c @@ -168,6 +168,9 @@ LRESULT CALLBACK mouse_gm_hook_proc(int code, WPARAM wParam, LPARAM lParam) x = min(x, g_ddraw.width - 1); y = min(y, g_ddraw.height - 1); + InterlockedExchange((LONG*)&g_ddraw.cursor.x, x); + InterlockedExchange((LONG*)&g_ddraw.cursor.y, y); + msg->lParam = MAKELPARAM(x, y); break; diff --git a/src/winapi_hooks.c b/src/winapi_hooks.c index f931f96..a7e22cc 100644 --- a/src/winapi_hooks.c +++ b/src/winapi_hooks.c @@ -675,12 +675,8 @@ void HandleMessage(LPMSG lpMsg, HWND hWnd) { // Does not work with 'New Robinson' lpMsg->message = (UINT)MAKELONG(WM_NULL, HIWORD(lpMsg->message)); - break; } - InterlockedExchange((LONG*)&g_ddraw.cursor.x, GET_X_LPARAM(lpMsg->lParam)); - InterlockedExchange((LONG*)&g_ddraw.cursor.y, GET_Y_LPARAM(lpMsg->lParam)); - break; } } diff --git a/src/wndproc.c b/src/wndproc.c index c0993b1..cc87bd2 100644 --- a/src/wndproc.c +++ b/src/wndproc.c @@ -816,9 +816,6 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam return 0; } - InterlockedExchange((LONG*)&g_ddraw.cursor.x, GET_X_LPARAM(lParam)); - InterlockedExchange((LONG*)&g_ddraw.cursor.y, GET_Y_LPARAM(lParam)); - break; } case WM_PARENTNOTIFY: