From c1a5a3895b53462bb5fa8feac57a1b240538e780 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Mon, 9 Sep 2024 15:23:31 +0200 Subject: [PATCH] don't update cursor pos in mouse hook --- src/mouse.c | 3 --- src/winapi_hooks.c | 4 ++++ src/wndproc.c | 3 +++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/mouse.c b/src/mouse.c index df05989..3e0d0ac 100644 --- a/src/mouse.c +++ b/src/mouse.c @@ -168,9 +168,6 @@ 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 a7e22cc..f931f96 100644 --- a/src/winapi_hooks.c +++ b/src/winapi_hooks.c @@ -675,8 +675,12 @@ 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 cc87bd2..c0993b1 100644 --- a/src/wndproc.c +++ b/src/wndproc.c @@ -816,6 +816,9 @@ 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: