1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-15 06:04:49 +01:00

#313 improve American Girls Dress Designer support and merge changes into master

This commit is contained in:
FunkyFr3sh 2024-05-28 22:23:47 +02:00
parent 37a04d7598
commit cf3d0c51ad
4 changed files with 33 additions and 16 deletions

View File

@ -394,6 +394,10 @@ static void cfg_create_ini()
"; American Girls Dress Designer\n"
"[Dress Designer]\n"
"fake_mode=640x480x32\n"
"border=false\n"
"posX=0\n"
"posY=0\n"
"nonexclusive=true\n"
"\n"
"; Age of Wonders 2\n"
"[AoW2]\n"

View File

@ -546,18 +546,15 @@ HRESULT dd_RestoreDisplayMode()
return DD_OK;
}
if (g_ddraw.renderer != gdi_render_main)
{
EnterCriticalSection(&g_ddraw.cs);
g_ddraw.render.run = FALSE;
ReleaseSemaphore(g_ddraw.render.sem, 1, NULL);
LeaveCriticalSection(&g_ddraw.cs);
EnterCriticalSection(&g_ddraw.cs);
g_ddraw.render.run = FALSE;
ReleaseSemaphore(g_ddraw.render.sem, 1, NULL);
LeaveCriticalSection(&g_ddraw.cs);
if (g_ddraw.render.thread)
{
WaitForSingleObject(g_ddraw.render.thread, INFINITE);
g_ddraw.render.thread = NULL;
}
if (g_ddraw.render.thread)
{
WaitForSingleObject(g_ddraw.render.thread, INFINITE);
g_ddraw.render.thread = NULL;
}
if (!g_config.windowed)

View File

@ -553,9 +553,12 @@ void util_set_window_rect(int x, int y, int width, int height, UINT flags)
BOOL CALLBACK util_enum_thread_wnd_proc(HWND hwnd, LPARAM lParam)
{
RECT size = { 0 };
real_GetClientRect(hwnd, &size);
LONG sytle = real_GetWindowLongA(hwnd, GWL_STYLE);
if (!g_ddraw.hwnd && !(sytle & WS_DISABLED))
if (!g_ddraw.hwnd && !(sytle & WS_DISABLED) && size.right > 0 && size.bottom > 0)
g_ddraw.hwnd = hwnd;
#ifdef _DEBUG
@ -568,9 +571,6 @@ BOOL CALLBACK util_enum_thread_wnd_proc(HWND hwnd, LPARAM lParam)
RECT pos = { 0 };
real_GetWindowRect(hwnd, &pos);
RECT size = { 0 };
real_GetClientRect(hwnd, &size);
LONG exsytle = real_GetWindowLongA(hwnd, GWL_EXSTYLE);
TRACE(

View File

@ -11,6 +11,7 @@
#include "mouse.h"
#include "wndproc.h"
#include "render_gdi.h"
#include "render_d3d9.h"
#include "directinput.h"
#include "ddsurface.h"
#include "ddclipper.h"
@ -1320,13 +1321,28 @@ BOOL WINAPI fake_DestroyWindow(HWND hWnd)
{
TRACE("DestroyWindow(hwnd=%p) - g_ddraw.hwnd=%p\n", hWnd, g_ddraw.hwnd);
if (g_ddraw.ref && hWnd && hWnd == g_ddraw.hwnd)
{
dd_RestoreDisplayMode();
if (g_ddraw.renderer == d3d9_render_main)
{
d3d9_release();
}
}
BOOL result = real_DestroyWindow(hWnd);
if (result && g_ddraw.ref && hWnd == g_ddraw.hwnd)
if (result && g_ddraw.ref && hWnd && hWnd == g_ddraw.hwnd)
{
g_ddraw.hwnd = NULL;
g_ddraw.wndproc = NULL;
g_ddraw.render.hdc = NULL;
if (g_config.fake_mode[0])
{
dd_SetCooperativeLevel(NULL, DDSCL_NORMAL);
}
}
if (g_ddraw.ref && g_ddraw.hwnd != hWnd && g_ddraw.bnet_active)