From 66a31e22820d927e9dd857ab1573eb3f2844005a Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Mon, 2 Sep 2024 17:45:10 +0200 Subject: [PATCH] update bitblt hook --- src/winapi_hooks.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/winapi_hooks.c b/src/winapi_hooks.c index 9b713cf..2c3e874 100644 --- a/src/winapi_hooks.c +++ b/src/winapi_hooks.c @@ -1027,7 +1027,22 @@ BOOL WINAPI fake_BitBlt( { HWND hwnd = WindowFromDC(hdc); - if (g_ddraw.ref && g_ddraw.hwnd && hwnd == g_ddraw.hwnd) + char class_name[MAX_PATH] = { 0 }; + + if (g_ddraw.ref && g_ddraw.hwnd && hwnd && hwnd != g_ddraw.hwnd) + { + GetClassNameA(hwnd, class_name, sizeof(class_name) - 1); + } + + if (g_ddraw.ref && g_ddraw.hwnd && + (hwnd == g_ddraw.hwnd || + (g_config.fixchilds && IsChild(g_ddraw.hwnd, hwnd) && + (g_config.fixchilds == FIX_CHILDS_DETECT_HIDE || + strcmp(class_name, "VideoRenderer") == 0 || + strcmp(class_name, "AVI Window") == 0 || + strcmp(class_name, "MCIAVI") == 0 || + strcmp(class_name, "AVIWnd32") == 0 || + strcmp(class_name, "MCIWndClass") == 0)))) { if (g_ddraw.primary && (g_ddraw.primary->bpp == 16 || g_ddraw.primary->bpp == 32 || g_ddraw.primary->palette)) { @@ -1036,11 +1051,14 @@ BOOL WINAPI fake_BitBlt( if (primary_dc) { + POINT pt = { 0 }; + real_MapWindowPoints(hwnd, g_ddraw.hwnd, &pt, 1); + int result = real_BitBlt( primary_dc, - x, - y, + x + pt.x, + y + pt.y, cx, cy, hdcSrc,