mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-24 17:49:52 +01:00
#111 clear screen on resolution change and window resize
This commit is contained in:
parent
4cd10d6ac0
commit
b3f9e7d045
1
inc/dd.h
1
inc/dd.h
@ -83,6 +83,7 @@ typedef struct CNCDDRAW
|
|||||||
|
|
||||||
LONG palette_updated;
|
LONG palette_updated;
|
||||||
LONG surface_updated;
|
LONG surface_updated;
|
||||||
|
LONG clear_screen;
|
||||||
|
|
||||||
float scale_w;
|
float scale_w;
|
||||||
float scale_h;
|
float scale_h;
|
||||||
|
5
src/dd.c
5
src/dd.c
@ -763,6 +763,11 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
|||||||
|
|
||||||
if (g_ddraw->render.thread == NULL)
|
if (g_ddraw->render.thread == NULL)
|
||||||
{
|
{
|
||||||
|
if (g_ddraw->maintas || g_ddraw->boxing)
|
||||||
|
{
|
||||||
|
InterlockedExchange(&g_ddraw->render.clear_screen, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
InterlockedExchange(&g_ddraw->render.palette_updated, TRUE);
|
InterlockedExchange(&g_ddraw->render.palette_updated, TRUE);
|
||||||
InterlockedExchange(&g_ddraw->render.surface_updated, TRUE);
|
InterlockedExchange(&g_ddraw->render.surface_updated, TRUE);
|
||||||
ReleaseSemaphore(g_ddraw->render.sem, 1, NULL);
|
ReleaseSemaphore(g_ddraw->render.sem, 1, NULL);
|
||||||
|
@ -416,6 +416,11 @@ DWORD WINAPI d3d9_render_main(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (InterlockedExchange(&g_ddraw->render.clear_screen, FALSE))
|
||||||
|
{
|
||||||
|
IDirect3DDevice9_Clear(g_d3d9.device, 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0);
|
||||||
|
}
|
||||||
|
|
||||||
g_ddraw->child_window_exists = FALSE;
|
g_ddraw->child_window_exists = FALSE;
|
||||||
EnumChildWindows(g_ddraw->hwnd, util_enum_child_proc, (LPARAM)g_ddraw->primary);
|
EnumChildWindows(g_ddraw->hwnd, util_enum_child_proc, (LPARAM)g_ddraw->primary);
|
||||||
|
|
||||||
|
@ -80,6 +80,12 @@ DWORD WINAPI gdi_render_main(void)
|
|||||||
memcpy(&g_ddraw->primary->bmi->bmiColors[0], g_ddraw->primary->palette->data_rgb, 256 * sizeof(int));
|
memcpy(&g_ddraw->primary->bmi->bmiColors[0], g_ddraw->primary->palette->data_rgb, 256 * sizeof(int));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (InterlockedExchange(&g_ddraw->render.clear_screen, FALSE))
|
||||||
|
{
|
||||||
|
RECT rc = { 0, 0, g_ddraw->render.width, g_ddraw->render.height };
|
||||||
|
FillRect(g_ddraw->render.hdc, &rc, (HBRUSH)GetStockObject(BLACK_BRUSH));
|
||||||
|
}
|
||||||
|
|
||||||
if (g_ddraw->gdilinear)
|
if (g_ddraw->gdilinear)
|
||||||
{
|
{
|
||||||
SetStretchBltMode(g_ddraw->render.hdc, HALFTONE);
|
SetStretchBltMode(g_ddraw->render.hdc, HALFTONE);
|
||||||
|
@ -659,7 +659,7 @@ static void ogl_render()
|
|||||||
if (glGetError() != GL_NO_ERROR)
|
if (glGetError() != GL_NO_ERROR)
|
||||||
g_ogl.use_opengl = FALSE;
|
g_ogl.use_opengl = FALSE;
|
||||||
}
|
}
|
||||||
else if (g_ddraw->wine)
|
else if (g_ddraw->wine || InterlockedExchange(&g_ddraw->render.clear_screen, FALSE))
|
||||||
{
|
{
|
||||||
glClear(GL_COLOR_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
}
|
}
|
||||||
|
@ -27,8 +27,6 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
|||||||
lParam);
|
lParam);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
RECT rc = { 0, 0, g_ddraw->render.width, g_ddraw->render.height };
|
|
||||||
|
|
||||||
static BOOL in_size_move = FALSE;
|
static BOOL in_size_move = FALSE;
|
||||||
static int redraw_count = 0;
|
static int redraw_count = 0;
|
||||||
|
|
||||||
@ -749,10 +747,10 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
|||||||
}
|
}
|
||||||
case WM_ERASEBKGND:
|
case WM_ERASEBKGND:
|
||||||
{
|
{
|
||||||
EnterCriticalSection(&g_ddraw->cs);
|
if (g_ddraw->maintas || g_ddraw->boxing)
|
||||||
FillRect(g_ddraw->render.hdc, &rc, (HBRUSH)GetStockObject(BLACK_BRUSH));
|
{
|
||||||
ReleaseSemaphore(g_ddraw->render.sem, 1, NULL);
|
InterlockedExchange(&g_ddraw->render.clear_screen, TRUE);
|
||||||
LeaveCriticalSection(&g_ddraw->cs);
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user