From 42d13edb92ad3175f3d0013388741a7465c0b7e3 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Tue, 9 Oct 2018 09:16:00 +0200 Subject: [PATCH] fix d3d9 automatic cursor lock on alt+tab --- ddraw.rc | 2 +- inc/main.h | 1 + src/main.c | 11 +++++++++++ src/render_d3d9.c | 3 +++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ddraw.rc b/ddraw.rc index 06a785d..b80dfc6 100644 --- a/ddraw.rc +++ b/ddraw.rc @@ -2,7 +2,7 @@ #define vxstr(a,b,c,d) str(a##.##b##.##c##.##d) #define str(s) #s -#define VERSION 1,2,0,5 +#define VERSION 1,2,0,6 1 VERSIONINFO FILEVERSION VERSION diff --git a/inc/main.h b/inc/main.h index 7fdee3f..a29e9f5 100644 --- a/inc/main.h +++ b/inc/main.h @@ -26,6 +26,7 @@ #define WM_AUTORENDERER WM_USER+111 #define WM_WINEFULLSCREEN WM_USER+112 +#define WM_D3D9FULLSCREEN WM_USER+113 extern BOOL ShowDriverWarning; diff --git a/src/main.c b/src/main.c index 796f6f6..b153288 100644 --- a/src/main.c +++ b/src/main.c @@ -570,6 +570,17 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) switch(uMsg) { + case WM_D3D9FULLSCREEN: + { + if (!ddraw->windowed) + { + if (GetSystemMetrics(SM_CYSCREEN) == ddraw->render.mode.dmPelsHeight && + GetSystemMetrics(SM_CXSCREEN) == ddraw->render.mode.dmPelsWidth && + GetForegroundWindow() == ddraw->hWnd) + mouse_lock(); + } + break; + } case WM_WINDOWPOSCHANGED: { WINDOWPOS *pos = (WINDOWPOS *)lParam; diff --git a/src/render_d3d9.c b/src/render_d3d9.c index 5bd3e00..3bedaf7 100644 --- a/src/render_d3d9.c +++ b/src/render_d3d9.c @@ -242,7 +242,10 @@ static void Render() Sleep(500); if (!InterlockedExchangeAdd(&ddraw->minimized, 0) && CreateDirect3D()) + { active = TRUE; + PostMessage(ddraw->hWnd, WM_D3D9FULLSCREEN, 0, 0); + } continue; }