From 09ac6acd98e359bbe5586bae95c433b36a9d247c Mon Sep 17 00:00:00 2001 From: gho tik Date: Wed, 13 Jul 2016 12:46:31 -0400 Subject: [PATCH] v2_03_76_src Former-commit-id: de16aed276acc5dbc8558b60cb9f7524446d2868 --- build/dxwnd.dll | 2 +- build/dxwnd.exe | 4 +- build/dxwnd.ini | 41 ------------------ build/exports/Dethkarz.dxw | 31 +++++++++++++ build/exports/End of Twilight.dxw | 31 +++++++++++++ build/exports/GP 500.dxw | 31 +++++++++++++ .../exports/Hot Chix 'n' Gear Stix (demo).dxw | 31 +++++++++++++ .../exports/MoonBase Commander (640x480).dxw | 31 +++++++++++++ build/exports/SuperChix'76 (demo).dxw | 31 +++++++++++++ build/exports/Tone Rebellion Leviathan.dxw | 31 +++++++++++++ ...² Sapore e il magico sapore della pizza.dxw | 31 +++++++++++++ build/exports/Warlords Battlecry 3 (GOG).dxw | 31 +++++++++++++ build/exports/Yu No (english patch).dxw | 31 +++++++++++++ build/exports/dxwnd.reg | 19 ++++++++ build/readme-relnotes.txt | 12 ++++- dll/ddraw.cpp | 12 ++++- dll/dxhook.cpp | 22 +--------- dll/dxwcore.cpp | 24 +++++----- dll/dxwnd.cpp | 2 +- dll/dxwnd.vs2008.suo | Bin 814592 -> 814592 bytes dll/gdi32.cpp | 23 +++++----- dll/user32.cpp | 35 ++++++--------- host/TabSysLibs.cpp | 2 - host/TargetDlg.cpp | 2 - host/TargetDlg.h | 2 - host/dxwndhost.aps | Bin 209648 -> 240312 bytes host/dxwndhost.rc | Bin 126072 -> 125512 bytes host/dxwndhost.vs2008.suo | Bin 236544 -> 236544 bytes host/dxwndhost.vs2008.vcproj | 10 ++--- host/dxwndhostView.cpp | 31 ++++++++----- host/dxwndhostView.h | 2 +- host/resource | Bin 46274 -> 46282 bytes 32 files changed, 425 insertions(+), 130 deletions(-) delete mode 100644 build/dxwnd.ini create mode 100644 build/exports/Dethkarz.dxw create mode 100644 build/exports/End of Twilight.dxw create mode 100644 build/exports/GP 500.dxw create mode 100644 build/exports/Hot Chix 'n' Gear Stix (demo).dxw create mode 100644 build/exports/MoonBase Commander (640x480).dxw create mode 100644 build/exports/SuperChix'76 (demo).dxw create mode 100644 build/exports/Tone Rebellion Leviathan.dxw create mode 100644 build/exports/Totò Sapore e il magico sapore della pizza.dxw create mode 100644 build/exports/Warlords Battlecry 3 (GOG).dxw create mode 100644 build/exports/Yu No (english patch).dxw create mode 100644 build/exports/dxwnd.reg diff --git a/build/dxwnd.dll b/build/dxwnd.dll index 8538e43..1220791 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3a374cec9f980973164610e2661704aa5658ea7e19901b5e61aa72207c7624b3 +oid sha256:e285a1e111688d9564456ef3cba3955cbf10fd56e711280c3da2c5028c4b734e size 660480 diff --git a/build/dxwnd.exe b/build/dxwnd.exe index 90384f5..c993d91 100644 --- a/build/dxwnd.exe +++ b/build/dxwnd.exe @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d041afd6e18a75dc3b7316a913318827696603e87d9f8e6a06da4da57ccdbf53 -size 643072 +oid sha256:45173c58df52cbfe63834fb949adf1dc91809a0fce0acdad63069e1c7a20d71a +size 642560 diff --git a/build/dxwnd.ini b/build/dxwnd.ini deleted file mode 100644 index 999b7b8..0000000 --- a/build/dxwnd.ini +++ /dev/null @@ -1,41 +0,0 @@ -[target] -title0=Mechwarrior 3 (high res) -path0=D:\Games\Mechwarrior 3 - RIP\Mech3.exe -launchpath0= -module0= -opengllib0= -notes0= -registry0=\n[HKEY_LOCAL_MACHINE\Software]\n[HKEY_LOCAL_MACHINE\Software\MicroProse]\n[HKEY_LOCAL_MACHINE\Software\MicroProse\MechWarrior 3 EP1]\n[HKEY_LOCAL_MACHINE\Software\MicroProse\MechWarrior 3 EP1\1.0]\n"Program"="..\\"\n"Version"="1.0"\n"InstallOptions"=dword:00050707\n\n[HKEY_LOCAL_MACHINE\Software\Microsoft]\n[HKEY_LOCAL_MACHINE\Software\Microsoft\DirectPlay]\n[HKEY_LOCAL_MACHINE\Software\Microsoft\DirectPlay\Applications]\n[HKEY_LOCAL_MACHINE\Software\Microsoft\DirectPlay\Applications\MechWarrior 3 EP1]\n"Guid"="{FA96C421-18DD-11D3-95AF-0060089877F0}"\n"File"="Mech3.exe"\n"CommandLine"="\n"Path"=".\\"\n"CurrentDirectory"=".\\"\n\n[HKEY_CURRENT_USER\Software]\n[HKEY_CURRENT_USER\Software\MicroProse]\n[HKEY_CURRENT_USER\Software\MicroProse\MechWarrior 3]\n[HKEY_CURRENT_USER\Software\MicroProse\MechWarrior 3\1.0]\n"InGameVMode"=dword:0000000a -ver0=0 -coord0=0 -flag0=136331398 -flagg0=1207959552 -flagh0=9236 -flagi0=1277165574 -flagj0=4224 -flagk0=65600 -flagl0=0 -flagm0=0 -tflag0=0 -dflag0=0 -posx0=50 -posy0=50 -sizx0=800 -sizy0=600 -maxfps0=0 -initts0=0 -winver0=0 -maxres0=-1 -swapeffect0=0 -maxddinterface0=7 -slowratio0=1 -title1=Mechwarrior 3 (high res) -module1= -opengllib1= -dflag1=0 -[window] -posx=915 -posy=519 -sizx=320 -sizy=200 -exportpath=D:\DxWnd\exports.ok\ diff --git a/build/exports/Dethkarz.dxw b/build/exports/Dethkarz.dxw new file mode 100644 index 0000000..1c2b3bb --- /dev/null +++ b/build/exports/Dethkarz.dxw @@ -0,0 +1,31 @@ +[target] +title0=Dethkarz +path0=D:\Games\Dethkarz\Dethkarz.exe +launchpath0= +module0= +opengllib0= +notes0=On Win7, FORCECLIPPER is requested\nOn Win10, FORCECLIPPER is not necessary and may cause program crash:\neither unckeck FORCECLIPPER or check HANDLEEXCEPTIONS seems to fix the problem +registry0= +ver0=0 +coord0=0 +flag0=679477282 +flagg0=1207959552 +flagh0=8212 +flagi0=138416132 +flagj0=1073741952 +flagk0=65536 +flagl0=0 +flagm0=0 +tflag0=0 +dflag0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=3 +swapeffect0=0 +maxddinterface0=7 +slowratio0=2 diff --git a/build/exports/End of Twilight.dxw b/build/exports/End of Twilight.dxw new file mode 100644 index 0000000..62704aa --- /dev/null +++ b/build/exports/End of Twilight.dxw @@ -0,0 +1,31 @@ +[target] +title0=End of Twilight +path0=D:\Games\End of Twilight\bin\mol.exe +launchpath0= +module0= +opengllib0= +notes0= +registry0= +ver0=0 +coord0=0 +flag0=136314914 +flagg0=1744830464 +flagh0=20 +flagi0=138412036 +flagj0=4224 +flagk0=327680 +flagl0=0 +flagm0=0 +tflag0=0 +dflag0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 +maxddinterface0=7 +slowratio0=2 diff --git a/build/exports/GP 500.dxw b/build/exports/GP 500.dxw new file mode 100644 index 0000000..c72a1b9 --- /dev/null +++ b/build/exports/GP 500.dxw @@ -0,0 +1,31 @@ +[target] +title0=GP 500 +path0=D:\Games\gp500\gp500_win2k.exe +launchpath0= +module0= +opengllib0= +notes0= +registry0= +ver0=0 +coord0=0 +flag0=681590834 +flagg0=1744830464 +flagh0=20 +flagi0=138412036 +flagj0=4224 +flagk0=-2147418110 +flagl0=0 +flagm0=0 +tflag0=0 +dflag0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 +maxddinterface0=7 +slowratio0=2 diff --git a/build/exports/Hot Chix 'n' Gear Stix (demo).dxw b/build/exports/Hot Chix 'n' Gear Stix (demo).dxw new file mode 100644 index 0000000..2e8e92a --- /dev/null +++ b/build/exports/Hot Chix 'n' Gear Stix (demo).dxw @@ -0,0 +1,31 @@ +[target] +title0=Hot Chix 'n' Gear Stix (demo) +path0=D:\Games\Hot Chix 'n' Gear Stix\HotChix.exe +launchpath0= +module0= +opengllib0= +notes0= +registry0= +ver0=0 +coord0=0 +flag0=136314914 +flagg0=1749024768 +flagh0=20 +flagi0=138412036 +flagj0=4224 +flagk0=65536 +flagl0=0 +flagm0=0 +tflag0=0 +dflag0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 +maxddinterface0=7 +slowratio0=2 diff --git a/build/exports/MoonBase Commander (640x480).dxw b/build/exports/MoonBase Commander (640x480).dxw new file mode 100644 index 0000000..d5379ac --- /dev/null +++ b/build/exports/MoonBase Commander (640x480).dxw @@ -0,0 +1,31 @@ +[target] +title0=MoonBase Commander +path0=D:\Games\MoonBase Commander\Moonbase.exe +launchpath0= +module0= +opengllib0= +notes0= +registry0= +ver0=0 +coord0=0 +flag0=-2011168734 +flagg0=1744830464 +flagh0=20 +flagi0=138416132 +flagj0=4224 +flagk0=65536 +flagl0=0 +flagm0=0 +tflag0=0 +dflag0=0 +posx0=50 +posy0=50 +sizx0=640 +sizy0=480 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=3 +swapeffect0=0 +maxddinterface0=7 +slowratio0=2 diff --git a/build/exports/SuperChix'76 (demo).dxw b/build/exports/SuperChix'76 (demo).dxw new file mode 100644 index 0000000..cf365fc --- /dev/null +++ b/build/exports/SuperChix'76 (demo).dxw @@ -0,0 +1,31 @@ +[target] +title0=SuperChix'76 (demo) +path0=*\HotChix2.exe +launchpath0= +module0= +opengllib0= +notes0= +registry0= +ver0=0 +coord0=0 +flag0=203423778 +flagg0=1207959552 +flagh0=532 +flagi0=138412036 +flagj0=134221952 +flagk0=65536 +flagl0=8 +flagm0=0 +tflag0=0 +dflag0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 +maxddinterface0=7 +slowratio0=4 diff --git a/build/exports/Tone Rebellion Leviathan.dxw b/build/exports/Tone Rebellion Leviathan.dxw new file mode 100644 index 0000000..9b819cd --- /dev/null +++ b/build/exports/Tone Rebellion Leviathan.dxw @@ -0,0 +1,31 @@ +[target] +title0=Tone Rebellion Leviathan +path0=D:\Games\Tone Rebellion\FLOAT.EXE +launchpath0= +module0= +opengllib0= +notes0= +registry0= +ver0=0 +coord0=0 +flag0=-2011168734 +flagg0=1207959552 +flagh0=20 +flagi0=138412036 +flagj0=4224 +flagk0=65536 +flagl0=0 +flagm0=0 +tflag0=0 +dflag0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 +maxddinterface0=7 +slowratio0=2 diff --git a/build/exports/Totò Sapore e il magico sapore della pizza.dxw b/build/exports/Totò Sapore e il magico sapore della pizza.dxw new file mode 100644 index 0000000..c0a42dc --- /dev/null +++ b/build/exports/Totò Sapore e il magico sapore della pizza.dxw @@ -0,0 +1,31 @@ +[target] +title0=Totò Sapore e il magico sapore della pizza +path0=D:\Program Files (x86)\Totò Sapore\Artematica.exe +launchpath0= +module0= +opengllib0= +notes0= +registry0= +ver0=0 +coord0=0 +flag0=136314914 +flagg0=1207959552 +flagh0=20 +flagi0=134217732 +flagj0=4224 +flagk0=65536 +flagl0=0 +flagm0=0 +tflag0=0 +dflag0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 +maxddinterface0=7 +slowratio0=2 diff --git a/build/exports/Warlords Battlecry 3 (GOG).dxw b/build/exports/Warlords Battlecry 3 (GOG).dxw new file mode 100644 index 0000000..e9c53d2 --- /dev/null +++ b/build/exports/Warlords Battlecry 3 (GOG).dxw @@ -0,0 +1,31 @@ +[target] +title0=Warlords Battlecry 3 (GOG) +path0=D:\Games\Warlords Battlecry 3 (GOG)\Battlecry III.exe +launchpath0= +module0= +opengllib0= +notes0= +registry0= +ver0=0 +coord0=0 +flag0=136314914 +flagg0=1207959552 +flagh0=20 +flagi0=134217732 +flagj0=4224 +flagk0=65536 +flagl0=0 +flagm0=0 +tflag0=0 +dflag0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 +maxddinterface0=7 +slowratio0=2 diff --git a/build/exports/Yu No (english patch).dxw b/build/exports/Yu No (english patch).dxw new file mode 100644 index 0000000..246637a --- /dev/null +++ b/build/exports/Yu No (english patch).dxw @@ -0,0 +1,31 @@ +[target] +title0=Yu No (english patch) +path0=D:\Games\Yu no\Classics\YUNO\AI5ENG.EXE +launchpath0= +module0= +opengllib0= +notes0= +registry0= +ver0=0 +coord0=0 +flag0=681574432 +flagg0=1207959552 +flagh0=20 +flagi0=138412036 +flagj0=8392832 +flagk0=67436544 +flagl0=4 +flagm0=0 +tflag0=0 +dflag0=0 +posx0=50 +posy0=50 +sizx0=800 +sizy0=600 +maxfps0=0 +initts0=0 +winver0=0 +maxres0=-1 +swapeffect0=0 +maxddinterface0=7 +slowratio0=2 diff --git a/build/exports/dxwnd.reg b/build/exports/dxwnd.reg new file mode 100644 index 0000000..0bf1cd1 --- /dev/null +++ b/build/exports/dxwnd.reg @@ -0,0 +1,19 @@ + +[HKEY_LOCAL_MACHINE\Software] +[HKEY_LOCAL_MACHINE\Software\MicroProse] +[HKEY_LOCAL_MACHINE\Software\MicroProse\MechWarrior 3 EP1] +[HKEY_LOCAL_MACHINE\Software\MicroProse\MechWarrior 3 EP1\1.0] +"Program"="..\\" +"Version"="1.0" +"InstallOptions"=dword:00050707 + +[HKEY_LOCAL_MACHINE\Software\Microsoft] +[HKEY_LOCAL_MACHINE\Software\Microsoft\DirectPlay] +[HKEY_LOCAL_MACHINE\Software\Microsoft\DirectPlay\Applications] +[HKEY_LOCAL_MACHINE\Software\Microsoft\DirectPlay\Applications\MechWarrior 3 EP1] +"Guid"="{FA96C421-18DD-11D3-95AF-0060089877F0}" +"File"="Mech3.exe" +"CommandLine"=" +"Path"=".\\" +"CurrentDirectory"=".\\" + diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index 77974b2..f595b46 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -1158,4 +1158,14 @@ fix: DC leakage caused by CreateCompatibleDC. Fix "Mechwarrior 3" repeated play add: GUI drag & drop of game executables fix: RegQueryValueEx bad retcode when Data ptr is NULL fix: recovered support for Windows XP -fix: fake registry did not read last registry line! Fixed. \ No newline at end of file +fix: fake registry did not read last registry line! Fixed. + +v2.03.76 +fix: DC handle leakage in several places, this also fixed GDI "emulated devie context" mode. +fix: FillRect wrapper, fixed coordinate remapping with wrong values. Fixes "Imperialism" menu and detailed view. +fix: suppressed "reuse emulated DC" flag: it was no longer referenced in the code. +fix: workaround for occasional DDERR_INVALIDPARAMS error in service GetDisplayMode to detect current video mode. +fix: code cleanup: eliminated CREATEDESKTOP handling, experimental and no longer supported +fix: vdxcore::IsToRemap now detects the NULL dc handle as remappable DC +fix: some logging imperfections +fix: palette log message crashing the program \ No newline at end of file diff --git a/dll/ddraw.cpp b/dll/ddraw.cpp index 98909f8..5c7c093 100644 --- a/dll/ddraw.cpp +++ b/dll/ddraw.cpp @@ -2052,6 +2052,16 @@ HRESULT WINAPI extSetDisplayMode(int dxversion, LPDIRECTDRAW lpdd, case 7: ddsd.dwSize=sizeof(LPDDSURFACEDESC2); res=(*pGetDisplayMode7)(lpdd, &ddsd); break; } + if(res){ + OutTraceE("SetDisplayMode: GetDisplayMode err=%x(%s)\n", res, ExplainDDError(res)); + // fix for Win10 platform returning DDERR_INVALIDPARAMS + RECT desktop; + ddsd.ddpfPixelFormat.dwRGBBitCount = 32; + (*pGetClientRect)((*pGetDesktopWindow)(), &desktop); + ddsd.dwWidth = desktop.right; + ddsd.dwHeight = desktop.bottom; + } + OutTraceB("SetDisplayMode: detected screen size=(%dx%d)\n", ddsd.dwWidth, ddsd.dwHeight); if(dxw.Windowize){ @@ -2074,7 +2084,7 @@ HRESULT WINAPI extSetDisplayMode(int dxversion, LPDIRECTDRAW lpdd, case 4: res=(*pSetDisplayMode4)(lpdd, dwwidth, dwheight, dwbpp, ddsd.dwRefreshRate, 0); break; case 7: res=(*pSetDisplayMode7)(lpdd, dwwidth, dwheight, dwbpp, ddsd.dwRefreshRate, 0); break; } - if(res) OutTraceE("SetDisplayMode: error=%x\n", res); + if(res) OutTraceE("SetDisplayMode: error=%x(%s)\n", res, ExplainDDError(res)); SetVSyncDelays(dxversion, lpdd); // set a default palette ??? diff --git a/dll/dxhook.cpp b/dll/dxhook.cpp index 4a8d6e9..032d69e 100644 --- a/dll/dxhook.cpp +++ b/dll/dxhook.cpp @@ -121,7 +121,7 @@ static char *Flag6Names[32]={ "FIXPITCH", "POWER2WIDTH", "HIDETASKBAR", "ACTIVATEAPP", "NOSYSMEMPRIMARY", "NOSYSMEMBACKBUF", "CONFIRMONCLOSE", "TERMINATEONCLOSE", "FLIPEMULATION", "SETZBUFFERBITDEPTHS", "SHAREDDC", "WOW32REGISTRY", - "STRETCHMOVIES", "BYPASSMCI", "FIXPIXELZOOM", "REUSEEMULATEDDC", + "STRETCHMOVIES", "BYPASSMCI", "FIXPIXELZOOM", "---REUSEEMULATEDDC---", "CREATEDESKTOP", "NOWINDOWHOOKS", "SYNCPALETTE", "VIRTUALJOYSTICK", "UNACQUIRE", "HOOKGOGLIBS", "BYPASSGOGLIBS", "EMULATERELMOUSE", }; @@ -1359,21 +1359,11 @@ void HookInit(TARGETMAP *target, HWND hwnd) if(dxw.dwFlags4 & ENABLEHOTKEYS) dxw.MapKeysInit(); } - if(dxw.dwFlags6 & CREATEDESKTOP){ - RECT TargetPos; - TargetPos.left = target->posx; - TargetPos.right = target->posx+target->sizx; - TargetPos.top = target->posy; - TargetPos.bottom = target->posy+target->sizy; - if (!hDesktopWindow) hDesktopWindow=CreateVirtualDesktop(&TargetPos); - } - if(IsTraceDW){ char sInfo[1024]; OSVERSIONINFO osinfo; strcpy(sInfo, ""); - if(hwnd) sprintf(sInfo, " hWnd=%x(hdc=%x) dxw.hParentWnd=%x(hdc=%x) desktop=%x(hdc=%x)", - hwnd, GetDC(hwnd), dxw.hParentWnd, GetDC(dxw.hParentWnd), GetDesktopWindow(), GetDC(GetDesktopWindow())); + if(hwnd) sprintf(sInfo, " hWnd=%x ParentWnd=%x desktop=%x", hwnd, dxw.hParentWnd, GetDesktopWindow()); OutTrace("HookInit: path=\"%s\" module=\"%s\" dxversion=%s pos=(%d,%d) size=(%d,%d)%s\n", target->path, target->module, dxversions[dxw.dwTargetDDVersion], target->posx, target->posy, target->sizx, target->sizy, sInfo); @@ -1438,14 +1428,6 @@ void HookInit(TARGETMAP *target, HWND hwnd) } } - if(dxw.dwFlags6 & CREATEDESKTOP){ - if (hDesktopWindow){ - OutTraceDW("HookInit: set new parent=%x to main win=%x\n", hDesktopWindow, dxw.hChildWnd); - SetParent(dxw.hChildWnd, hDesktopWindow); - dxw.hParentWnd = hDesktopWindow; - } - } - #ifdef CHECKFORCOMPATIBILITYFLAGS CheckCompatibilityFlags(); // v2.02.83 Check for change of OS release #endif diff --git a/dll/dxwcore.cpp b/dll/dxwcore.cpp index 6b0281c..932d251 100644 --- a/dll/dxwcore.cpp +++ b/dll/dxwcore.cpp @@ -78,6 +78,7 @@ BOOL dxwCore::IsFullScreen() BOOL dxwCore::IsToRemap(HDC hdc) { + if(!hdc) return TRUE; return (Windowize && FullScreen && (OBJ_DC == (*pGetObjectType)(hdc))); } @@ -483,12 +484,11 @@ void dxwCore::SethWnd(HWND hwnd) hWnd=hwnd; hWndFPS=hwnd; - RealHDC=(*pGDIGetDC)(hwnd); if(hwnd){ (*pGetWindowRect)(hwnd, &WinRect); - OutTraceDW("SethWnd: setting main win=%x hdc=%x pos=(%d,%d)-(%d,%d)\n", - hwnd, RealHDC, WinRect.left, WinRect.top, WinRect.right, WinRect.bottom); + OutTraceDW("SethWnd: setting main win=%x pos=(%d,%d)-(%d,%d)\n", + hwnd, WinRect.left, WinRect.top, WinRect.right, WinRect.bottom); } else{ OutTraceDW("SethWnd: clearing main win\n"); @@ -1454,13 +1454,13 @@ void dxwCore::ShowBanner(HWND hwnd) POINT PrevViewPort; int StretchMode; - hClientDC=(*pGDIGetDC)(hwnd); - (*pGetClientRect)(hwnd, &client); - (*pGDIBitBlt)(hClientDC, 0, 0, client.right, client.bottom, NULL, 0, 0, BLACKNESS); - if(JustOnce || (dwFlags2 & NOBANNER)) return; JustOnce=TRUE; + hClientDC=(*pGDIGetDC)(hwnd); + (*pGetClientRect)(hwnd, &client); + (*pGDIBitBlt)(hClientDC, 0, 0, client.right, client.bottom, NULL, 0, 0, BLACKNESS); + g_hbmBall = LoadBitmap(hInst, MAKEINTRESOURCE(IDB_BANNER)); HDC hdcMem = CreateCompatibleDC(hClientDC); HBITMAP hbmOld = (HBITMAP)SelectObject(hdcMem, g_hbmBall); @@ -1493,6 +1493,7 @@ void dxwCore::ShowBanner(HWND hwnd) (*pSetViewportOrgEx)(hClientDC, PrevViewPort.x, PrevViewPort.y, NULL); SelectObject(hdcMem, hbmOld); DeleteDC(hdcMem); + (*pGDIReleaseDC)(hwnd, hClientDC); Sleep(200); } @@ -1597,7 +1598,8 @@ HDC dxwCore::AcquireEmulatedDC(HWND hwnd) HDC wdc; RECT WinRect; - if(!(wdc=(*pGDIGetDC)(hwnd))){ + if(RealHDC) (*pGDIReleaseDC)(WindowFromDC(RealHDC), RealHDC); // fixed DC leakage + if(!(wdc=(*pGDIGetDC)(hwnd))){ // potential DC leakage OutTraceE("GetDC: ERROR err=%d at=%d\n", GetLastError(), __LINE__); return NULL; } @@ -1659,14 +1661,16 @@ BOOL dxwCore::ReleaseEmulatedDC(HWND hwnd) WinRect.left, WinRect.top, WinRect.right, WinRect.bottom, VirtualPicRect.left, VirtualPicRect.top, VirtualPicRect.right, VirtualPicRect.bottom); - if(!(wdc=(*pGDIGetDC)(hwnd))) + if(!(wdc=(*pGDIGetDC)(hwnd))) // potential DC leakage OutTraceE("GetDC: ERROR err=%d at=%d\n", GetLastError(), __LINE__); - SetStretchBltMode(wdc, HALFTONE); + SetStretchBltMode(VirtualHDC, HALFTONE); if(!(*pGDIStretchBlt)(wdc, 0, 0, WinRect.right, WinRect.bottom, VirtualHDC, 0, 0, VirtualPicRect.right, VirtualPicRect.bottom, SRCCOPY)) OutTraceE("StretchBlt: ERROR err=%d at=%d\n", GetLastError(), __LINE__); //(*pInvalidateRect)(hwnd, NULL, 0); + (*pGDIReleaseDC)(hwnd, wdc); // fixed DC leakage (*pGDIReleaseDC)(hwnd, VirtualHDC); + VirtualHDC=NULL; // no longer valid return TRUE; } diff --git a/dll/dxwnd.cpp b/dll/dxwnd.cpp index 0e8435e..e6cda92 100644 --- a/dll/dxwnd.cpp +++ b/dll/dxwnd.cpp @@ -27,7 +27,7 @@ along with this program. If not, see . #include "TlHelp32.h" -#define VERSION "2.03.75.fix1" +#define VERSION "2.03.76" #define DDTHREADLOCK 1 //#define LOCKTHREADS diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index e5024e050b3afcd041a30f81fcff38f88bc66b33..00dad5407e173e405946a84ad0edb4d966020284 100644 GIT binary patch delta 36191 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 delta 17988 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, ppfd->iPixelType, ppfd->iPixelType?"PFD_TYPE_COLORINDEX":"PFD_TYPE_RGBA", ppfd->cColorBits, @@ -2658,10 +2656,12 @@ BOOL WINAPI extGDISetPixelFormat(HDC hdc, int iPixelFormat, const PIXELFORMATDES //} if(dxw.IsDesktop(WindowFromDC(hdc))){ HDC oldhdc = hdc; - hdc=(*pGDIGetDC)(dxw.GethWnd()); + hdc=(*pGDIGetDC)(dxw.GethWnd()); // potential DC leakage + bRemappedDC = TRUE; OutTraceDW("SetPixelFormat: remapped desktop hdc=%x->%x hWnd=%x\n", oldhdc, hdc, dxw.GethWnd()); } res=(*pGDISetPixelFormat)(hdc, iPixelFormat, ppfd); + if(bRemappedDC) (*pGDIReleaseDC)(dxw.GethWnd(), hdc); // fixed DC leakage dxw.ActualPixelFormat.dwRGBBitCount = ppfd->cColorBits; if(!res) OutTraceE("SetPixelFormat: ERROR err=%d at=%d\n", GetLastError(), __LINE__); return res; @@ -2670,15 +2670,18 @@ BOOL WINAPI extGDISetPixelFormat(HDC hdc, int iPixelFormat, const PIXELFORMATDES int WINAPI extGDIGetPixelFormat(HDC hdc) { int res; + BOOL bRemappedDC = FALSE; OutTraceDW("GetPixelFormat: hdc=%x\n", hdc); if(dxw.IsDesktop(WindowFromDC(hdc))){ HDC oldhdc = hdc; - hdc=(*pGDIGetDC)(dxw.GethWnd()); + hdc=(*pGDIGetDC)(dxw.GethWnd()); // potential DC leakage + bRemappedDC = TRUE; OutTraceDW("GetPixelFormat: remapped desktop hdc=%x->%x hWnd=%x\n", oldhdc, hdc, dxw.GethWnd()); } res=(*pGDIGetPixelFormat)(hdc); if(!res) OutTraceE("GetPixelFormat: ERROR err=%d at=%d\n", GetLastError(), __LINE__); else OutTraceDW("GetPixelFormat: res=%d\n", res); + if(bRemappedDC)(*pGDIReleaseDC)(dxw.GethWnd(), hdc); // fixed DC leakage return res; } diff --git a/dll/user32.cpp b/dll/user32.cpp index 2e34e3d..7837e07 100644 --- a/dll/user32.cpp +++ b/dll/user32.cpp @@ -1301,11 +1301,6 @@ HWND WINAPI extGetDesktopWindow(void) OutTraceDW("GetDesktopWindow: FullScreen=%x\n", dxw.IsFullScreen()); if (dxw.IsFullScreen()){ - if(dxw.dwFlags6 & CREATEDESKTOP){ - extern HWND hDesktopWindow; - OutTraceDW("GetDesktopWindow: returning desktop emulated hwnd=%x\n", hDesktopWindow); - return hDesktopWindow; - } OutTraceDW("GetDesktopWindow: returning main window hwnd=%x\n", dxw.GethWnd()); return dxw.GethWnd(); } @@ -1515,14 +1510,6 @@ static HWND WINAPI extCreateWindowCommon( dwStyle &= ~WS_MAXIMIZE; } - if(dxw.dwFlags6 & CREATEDESKTOP){ - extern HWND hDesktopWindow; - if (dxw.IsRealDesktop(hWndParent)){ - OutTraceE("%s: new parent win %x->%x\n", ApiName, hWndParent, hDesktopWindow); - hWndParent=hDesktopWindow; - } - } - // v2.1.92: fixes size & position for auxiliary big window, often used // for intro movies etc. : needed for ...... // evidently, this was supposed to be a fullscreen window.... @@ -1890,12 +1877,18 @@ static int HandleRect(char *ApiName, void *pFun, HDC hdc, const RECT *lprc, HBRU RECT client; HWND hwnd; hwnd=WindowFromDC(hdc); - (*pGetClientRect)(hwnd, &client); - if(rc.left < 0) rc.left=0; - if(rc.top < 0) rc.top=0; - if(rc.right > client.right) rc.right=client.right; - if(rc.bottom > client.bottom) rc.bottom=client.bottom; - OutTraceDW("%s: remapped hdc from hwnd=%x to rect=(%d,%d)-(%d,%d)\n", ApiName, hwnd, rc.left, rc.top, rc.right, rc.bottom); + // v2.03.76 fix: sometimes WindowFromDC returns NULL with unpredictable results + // if NULL, try to bount within the main window rect + if(!hwnd) hwnd=dxw.GethWnd(); + // if still NULL, avoid doing changes + if(hwnd){ + (*pGetClientRect)(hwnd, &client); + if(rc.left < client.left) rc.left=client.left; + if(rc.top < client.top) rc.top=client.top; + if(rc.right > client.right) rc.right=client.right; + if(rc.bottom > client.bottom) rc.bottom=client.bottom; + OutTraceDW("%s: remapped hdc from hwnd=%x to rect=(%d,%d)-(%d,%d)\n", ApiName, hwnd, rc.left, rc.top, rc.right, rc.bottom); + } } res=(*(FillRect_Type)pFun)(hdc, &rc, hbr); @@ -1909,7 +1902,7 @@ int WINAPI extFillRect(HDC hdc, const RECT *lprc, HBRUSH hbr) int WINAPI extFrameRect(HDC hdc, const RECT *lprc, HBRUSH hbr) { - return HandleRect("FramelRect", (void *)pFrameRect, hdc, lprc, hbr); + return HandleRect("FrameRect", (void *)pFrameRect, hdc, lprc, hbr); } BOOL WINAPI extInvertRect(HDC hdc, const RECT *lprc) @@ -2331,7 +2324,7 @@ BOOL WINAPI extEndPaint(HWND hwnd, const PAINTSTRUCT *lpPaint) { BOOL ret; - OutTraceDW("GDI.EndPaint: hwnd=%x lpPaint=%x lpPaint.hdc=%x lpPaint.rcpaint=(%d,%d)-(%d-%d)\n", + OutTraceDW("GDI.EndPaint: hwnd=%x lpPaint=%x lpPaint.hdc=%x lpPaint.rcpaint=(%d,%d)-(%d,%d)\n", hwnd, lpPaint, lpPaint->hdc, lpPaint->rcPaint.left, lpPaint->rcPaint.top, lpPaint->rcPaint.right, lpPaint->rcPaint.bottom); // if not fullscreen or not desktop win, just proxy the call diff --git a/host/TabSysLibs.cpp b/host/TabSysLibs.cpp index f46defc..827ee71 100644 --- a/host/TabSysLibs.cpp +++ b/host/TabSysLibs.cpp @@ -32,9 +32,7 @@ void CTabSysLibs::DoDataExchange(CDataExchange* pDX) DDX_Radio(pDX, IDC_GDINONE, cTarget->m_DCEmulationMode); DDX_Check(pDX, IDC_FIXTEXTOUT, cTarget->m_FixTextOut); DDX_Check(pDX, IDC_NOFILLRECT, cTarget->m_NoFillRect); - DDX_Check(pDX, IDC_REUSEEMULATEDDC, cTarget->m_ReuseEmulatedDC); DDX_Check(pDX, IDC_FIXCLIPPERAREA, cTarget->m_FixClipperArea); - DDX_Check(pDX, IDC_CREATEDESKTOP, cTarget->m_CreateDesktop); DDX_Check(pDX, IDC_SYNCPALETTE, cTarget->m_SyncPalette); DDX_Check(pDX, IDC_NOWINERRORS, cTarget->m_NoWinErrors); diff --git a/host/TargetDlg.cpp b/host/TargetDlg.cpp index 7dbe784..d1763f0 100644 --- a/host/TargetDlg.cpp +++ b/host/TargetDlg.cpp @@ -219,9 +219,7 @@ CTargetDlg::CTargetDlg(CWnd* pParent /*=NULL*/) m_NoDDRAWFlip = FALSE; m_NoGDIBlt = FALSE; m_NoFillRect = FALSE; - m_ReuseEmulatedDC = FALSE; // ?? m_FixClipperArea = FALSE; // ?? - m_CreateDesktop = FALSE; m_SyncPalette = FALSE; m_NoWinErrors = FALSE; m_AnalyticMode = FALSE; diff --git a/host/TargetDlg.h b/host/TargetDlg.h index bbed84e..e135273 100644 --- a/host/TargetDlg.h +++ b/host/TargetDlg.h @@ -178,9 +178,7 @@ public: BOOL m_NoDDRAWFlip; BOOL m_NoGDIBlt; BOOL m_NoFillRect; - BOOL m_ReuseEmulatedDC; BOOL m_FixClipperArea; - BOOL m_CreateDesktop; BOOL m_SyncPalette; BOOL m_NoWinErrors; BOOL m_AnalyticMode; diff --git a/host/dxwndhost.aps b/host/dxwndhost.aps index e25e84be86ab354a9b642dc5d9bbfebf4cadad39..961baf310da3fee284fe11e5bd910383e579bc6e 100644 GIT binary patch delta 23931 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 delta 281 zcmX?ch5g43_6;&jldrHWY2L@QeIFAepX}s<92WahhGK?P1_dC_WhiCHVMt^s0kTto zA}$Qh3`z_-44zLJ-H!5Y4V5bEYmN@Gj5vRqsz!KolTX|V)}>e zj2zofDKK8+p5COuC2^@nf~u3 GqZa^yBTpp& diff --git a/host/dxwndhost.vs2008.suo b/host/dxwndhost.vs2008.suo index d8defb2f6008f78281f01c4396624e1a30d1b3ac..a08136fb9c931de84e35d305c67a24795269e37b 100644 GIT binary patch delta 6749 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 V`&YyGDMp#G=9tCv?5#%LzX3z0_D%o* delta 6339 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 G=KljYd(Mpj diff --git a/host/dxwndhost.vs2008.vcproj b/host/dxwndhost.vs2008.vcproj index 929cf57..2b33f7f 100644 --- a/host/dxwndhost.vs2008.vcproj +++ b/host/dxwndhost.vs2008.vcproj @@ -722,22 +722,22 @@ > - - + + diff --git a/host/dxwndhostView.cpp b/host/dxwndhostView.cpp index db1d033..c2e7f94 100644 --- a/host/dxwndhostView.cpp +++ b/host/dxwndhostView.cpp @@ -461,9 +461,7 @@ void SetTargetFromDlg(TARGETMAP *t, CTargetDlg *dlg) if(dlg->m_NoDDRAWFlip) t->flags3 |= NODDRAWFLIP; if(dlg->m_NoGDIBlt) t->flags3 |= NOGDIBLT; if(dlg->m_NoFillRect) t->flags4 |= NOFILLRECT; - if(dlg->m_ReuseEmulatedDC) t->flags6 |= REUSEEMULATEDDC; if(dlg->m_FixClipperArea) t->flags7 |= FIXCLIPPERAREA; - if(dlg->m_CreateDesktop) t->flags6 |= CREATEDESKTOP; if(dlg->m_SyncPalette) t->flags6 |= SYNCPALETTE; if(dlg->m_NoWinErrors) t->flags7 |= NOWINERRORS; if(dlg->m_AnalyticMode) t->flags3 |= ANALYTICMODE; @@ -733,9 +731,7 @@ static void SetDlgFromTarget(TARGETMAP *t, CTargetDlg *dlg) dlg->m_NoDDRAWFlip = t->flags3 & NODDRAWFLIP ? 1 : 0; dlg->m_NoGDIBlt = t->flags3 & NOGDIBLT ? 1 : 0; dlg->m_NoFillRect = t->flags4 & NOFILLRECT ? 1 : 0; - dlg->m_ReuseEmulatedDC = t->flags6 & REUSEEMULATEDDC ? 1 : 0; dlg->m_FixClipperArea = t->flags7 & FIXCLIPPERAREA ? 1 : 0; - dlg->m_CreateDesktop = t->flags6 & CREATEDESKTOP ? 1 : 0; dlg->m_SyncPalette = t->flags6 & SYNCPALETTE ? 1 : 0; dlg->m_NoWinErrors = t->flags7 & NOWINERRORS ? 1 : 0; dlg->m_AnalyticMode = t->flags3 & ANALYTICMODE ? 1 : 0; @@ -1309,7 +1305,7 @@ void CDxwndhostView::OnExport() } } -void CDxwndhostView::OnImport(CString sFilePath) +BOOL CDxwndhostView::OnImport(CString sFilePath) { LV_ITEM listitem; int i; @@ -1317,7 +1313,7 @@ void CDxwndhostView::OnImport(CString sFilePath) ; if (i==MAXTARGETS) { MessageBoxLang(DXW_STRING_MAXENTRIES, DXW_STRING_WARNING, MB_OK | MB_ICONEXCLAMATION); - return; + return FALSE; } CListCtrl& listctrl = GetListCtrl(); if(LoadConfigItem(&TargetMaps[i], &PrivateMaps[i], 0, (char *)sFilePath.GetString())){ @@ -1328,6 +1324,10 @@ void CDxwndhostView::OnImport(CString sFilePath) listitem.pszText = PrivateMaps[i].title; listctrl.InsertItem(&listitem); } + Resize(); + SetTarget(TargetMaps); + this->isUpdated=TRUE; + return TRUE; } void CDxwndhostView::OnImport() @@ -1382,10 +1382,13 @@ void CDxwndhostView::OnImport() if(GetPrivateProfileInt("window", "updatepaths", 1, gInitPath)) WritePrivateProfileString("window", "exportpath", folder, gInitPath); p += lstrlen((LPSTR)p) + 1; - while(*p && (iisUpdated=TRUE; @@ -2817,7 +2821,14 @@ void CDxwndhostView::OnDropFiles(HDROP dropInfo) p = (char *)sFile.GetString(); p += (strlen(p)-4); if(!_strnicmp(p, ".dxw", 4)){ - this->OnImport(sFile); + for(UINT i=1; i<=nFilesDropped; i++){ + if(!this->OnImport(sFile)) break; + nBuffer = DragQueryFile(dropInfo, i, NULL, 0); + DragQueryFile(dropInfo, i, sFile.GetBuffer(nBuffer+1), nBuffer+1); + p = (char *)sFile.GetString(); + p += (strlen(p)-4); + if(_strnicmp(p, ".dxw", 4)) break; + } } else { this->OnAdd(sFile.GetBuffer()); diff --git a/host/dxwndhostView.h b/host/dxwndhostView.h index e1654cb..c89fc5d 100644 --- a/host/dxwndhostView.h +++ b/host/dxwndhostView.h @@ -68,7 +68,7 @@ protected: afx_msg void OnModify(); afx_msg void OnExport(); afx_msg void OnImport(); - afx_msg void OnImport(CString); + BOOL OnImport(CString); afx_msg void OnDelete(); afx_msg void OnExplore(); afx_msg void OnKill(); diff --git a/host/resource b/host/resource index 2c6819e0db3b15e88d631f82fb4547c9445f784b..3f0efa7bd219ddde7a3dafdae84b5c22dd49fd5b 100644 GIT binary patch delta 34 kcmX@~lIhe-rVTf8nDrU-CqLwuoctkY0gSzQMXr=P01K852><{9 delta 30 mcmX^0lIhS(rVTf8CP&CfOcqdOnfxPX&SZ&7sm+^mCENkua1BHN