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:
parent
37a04d7598
commit
cf3d0c51ad
@ -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"
|
||||
|
19
src/dd.c
19
src/dd.c
@ -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)
|
||||
|
@ -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(
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user