mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-24 17:49:52 +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"
|
"; American Girls Dress Designer\n"
|
||||||
"[Dress Designer]\n"
|
"[Dress Designer]\n"
|
||||||
"fake_mode=640x480x32\n"
|
"fake_mode=640x480x32\n"
|
||||||
|
"border=false\n"
|
||||||
|
"posX=0\n"
|
||||||
|
"posY=0\n"
|
||||||
|
"nonexclusive=true\n"
|
||||||
"\n"
|
"\n"
|
||||||
"; Age of Wonders 2\n"
|
"; Age of Wonders 2\n"
|
||||||
"[AoW2]\n"
|
"[AoW2]\n"
|
||||||
|
19
src/dd.c
19
src/dd.c
@ -546,18 +546,15 @@ HRESULT dd_RestoreDisplayMode()
|
|||||||
return DD_OK;
|
return DD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_ddraw.renderer != gdi_render_main)
|
EnterCriticalSection(&g_ddraw.cs);
|
||||||
{
|
g_ddraw.render.run = FALSE;
|
||||||
EnterCriticalSection(&g_ddraw.cs);
|
ReleaseSemaphore(g_ddraw.render.sem, 1, NULL);
|
||||||
g_ddraw.render.run = FALSE;
|
LeaveCriticalSection(&g_ddraw.cs);
|
||||||
ReleaseSemaphore(g_ddraw.render.sem, 1, NULL);
|
|
||||||
LeaveCriticalSection(&g_ddraw.cs);
|
|
||||||
|
|
||||||
if (g_ddraw.render.thread)
|
if (g_ddraw.render.thread)
|
||||||
{
|
{
|
||||||
WaitForSingleObject(g_ddraw.render.thread, INFINITE);
|
WaitForSingleObject(g_ddraw.render.thread, INFINITE);
|
||||||
g_ddraw.render.thread = NULL;
|
g_ddraw.render.thread = NULL;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!g_config.windowed)
|
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)
|
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);
|
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;
|
g_ddraw.hwnd = hwnd;
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
@ -568,9 +571,6 @@ BOOL CALLBACK util_enum_thread_wnd_proc(HWND hwnd, LPARAM lParam)
|
|||||||
RECT pos = { 0 };
|
RECT pos = { 0 };
|
||||||
real_GetWindowRect(hwnd, &pos);
|
real_GetWindowRect(hwnd, &pos);
|
||||||
|
|
||||||
RECT size = { 0 };
|
|
||||||
real_GetClientRect(hwnd, &size);
|
|
||||||
|
|
||||||
LONG exsytle = real_GetWindowLongA(hwnd, GWL_EXSTYLE);
|
LONG exsytle = real_GetWindowLongA(hwnd, GWL_EXSTYLE);
|
||||||
|
|
||||||
TRACE(
|
TRACE(
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
#include "mouse.h"
|
#include "mouse.h"
|
||||||
#include "wndproc.h"
|
#include "wndproc.h"
|
||||||
#include "render_gdi.h"
|
#include "render_gdi.h"
|
||||||
|
#include "render_d3d9.h"
|
||||||
#include "directinput.h"
|
#include "directinput.h"
|
||||||
#include "ddsurface.h"
|
#include "ddsurface.h"
|
||||||
#include "ddclipper.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);
|
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);
|
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.hwnd = NULL;
|
||||||
g_ddraw.wndproc = NULL;
|
g_ddraw.wndproc = NULL;
|
||||||
g_ddraw.render.hdc = 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)
|
if (g_ddraw.ref && g_ddraw.hwnd != hWnd && g_ddraw.bnet_active)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user