1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-24 17:49:52 +01:00

update SetDIBitsToDevice hook

This commit is contained in:
FunkyFr3sh 2024-09-02 17:48:18 +02:00
parent 66a31e2282
commit 056c0750b2

View File

@ -1120,7 +1120,22 @@ int WINAPI fake_SetDIBitsToDevice(
{ {
HWND hwnd = WindowFromDC(hdc); 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)) if (g_ddraw.primary && (g_ddraw.primary->bpp == 16 || g_ddraw.primary->bpp == 32 || g_ddraw.primary->palette))
{ {
@ -1129,19 +1144,22 @@ int WINAPI fake_SetDIBitsToDevice(
if (primary_dc) if (primary_dc)
{ {
POINT pt = { 0 };
real_MapWindowPoints(hwnd, g_ddraw.hwnd, &pt, 1);
int result = int result =
real_SetDIBitsToDevice( real_SetDIBitsToDevice(
primary_dc, primary_dc,
xDest, xDest + pt.x,
yDest, yDest + pt.y,
w, w,
h, h,
xSrc, xSrc,
ySrc, ySrc,
StartScan, StartScan,
cLines, cLines,
lpvBits, lpvBits,
lpbmi, lpbmi,
ColorUse); ColorUse);
dds_ReleaseDC(g_ddraw.primary, primary_dc); dds_ReleaseDC(g_ddraw.primary, primary_dc);