mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-24 17:49:52 +01:00
#101 clear backbuffer on flip
This commit is contained in:
parent
19c4d67087
commit
b03600fb4f
@ -21,6 +21,7 @@ typedef struct IDirectDrawSurfaceImpl
|
|||||||
DWORD width;
|
DWORD width;
|
||||||
DWORD height;
|
DWORD height;
|
||||||
DWORD bpp;
|
DWORD bpp;
|
||||||
|
DWORD size;
|
||||||
DWORD flags;
|
DWORD flags;
|
||||||
DWORD caps;
|
DWORD caps;
|
||||||
|
|
||||||
|
1
inc/dd.h
1
inc/dd.h
@ -146,6 +146,7 @@ typedef struct CNCDDRAW
|
|||||||
int fixchilds;
|
int fixchilds;
|
||||||
BOOL fixwndprochook;
|
BOOL fixwndprochook;
|
||||||
BOOL fixnotresponding;
|
BOOL fixnotresponding;
|
||||||
|
BOOL flipclear;
|
||||||
BOOL locktopleft;
|
BOOL locktopleft;
|
||||||
BOOL d3d9linear;
|
BOOL d3d9linear;
|
||||||
BOOL gdilinear;
|
BOOL gdilinear;
|
||||||
|
@ -39,6 +39,7 @@ void cfg_load()
|
|||||||
g_ddraw->fixpitch = cfg_get_bool("fixpitch", TRUE);
|
g_ddraw->fixpitch = cfg_get_bool("fixpitch", TRUE);
|
||||||
g_ddraw->fixchilds = cfg_get_int("fixchilds", FIX_CHILDS_DETECT_PAINT);
|
g_ddraw->fixchilds = cfg_get_int("fixchilds", FIX_CHILDS_DETECT_PAINT);
|
||||||
g_ddraw->fixwndprochook = cfg_get_bool("fixwndprochook", FALSE);
|
g_ddraw->fixwndprochook = cfg_get_bool("fixwndprochook", FALSE);
|
||||||
|
g_ddraw->flipclear = cfg_get_bool("flipclear", FALSE);
|
||||||
g_ddraw->novidmem = cfg_get_bool("novidmem", FALSE);
|
g_ddraw->novidmem = cfg_get_bool("novidmem", FALSE);
|
||||||
g_ddraw->fixnotresponding = cfg_get_bool("fixnotresponding", FALSE);
|
g_ddraw->fixnotresponding = cfg_get_bool("fixnotresponding", FALSE);
|
||||||
g_ddraw->locktopleft = cfg_get_bool("locktopleft", FALSE);
|
g_ddraw->locktopleft = cfg_get_bool("locktopleft", FALSE);
|
||||||
@ -357,6 +358,7 @@ static void cfg_create_ini()
|
|||||||
"gdilinear=false\n"
|
"gdilinear=false\n"
|
||||||
"allow_wmactivate=false\n"
|
"allow_wmactivate=false\n"
|
||||||
"dinputhook=false\n"
|
"dinputhook=false\n"
|
||||||
|
"flipclear=false\n"
|
||||||
"bpp=0\n"
|
"bpp=0\n"
|
||||||
"\n"
|
"\n"
|
||||||
"\n"
|
"\n"
|
||||||
@ -491,6 +493,7 @@ static void cfg_create_ini()
|
|||||||
"[CARMA95]\n"
|
"[CARMA95]\n"
|
||||||
"renderer=opengl\n"
|
"renderer=opengl\n"
|
||||||
"noactivateapp=true\n"
|
"noactivateapp=true\n"
|
||||||
|
"flipclear=true\n"
|
||||||
"\n"
|
"\n"
|
||||||
"; Carmageddon\n"
|
"; Carmageddon\n"
|
||||||
"[CARM95]\n"
|
"[CARM95]\n"
|
||||||
|
@ -545,6 +545,12 @@ HRESULT dds_Flip(IDirectDrawSurfaceImpl* This, IDirectDrawSurfaceImpl* lpDDSurfa
|
|||||||
InterlockedExchangePointer(&backbuffer->surface, buf);
|
InterlockedExchangePointer(&backbuffer->surface, buf);
|
||||||
InterlockedExchangePointer(&backbuffer->bitmap, bitmap);
|
InterlockedExchangePointer(&backbuffer->bitmap, bitmap);
|
||||||
InterlockedExchangePointer(&backbuffer->hdc, dc);
|
InterlockedExchangePointer(&backbuffer->hdc, dc);
|
||||||
|
|
||||||
|
if (g_ddraw->flipclear)
|
||||||
|
{
|
||||||
|
memset(buf, 0, backbuffer->size);
|
||||||
|
}
|
||||||
|
|
||||||
LeaveCriticalSection(&g_ddraw->cs);
|
LeaveCriticalSection(&g_ddraw->cs);
|
||||||
|
|
||||||
if (!lpDDSurfaceTargetOverride && This->backbuffer->backbuffer)
|
if (!lpDDSurfaceTargetOverride && This->backbuffer->backbuffer)
|
||||||
@ -1092,6 +1098,7 @@ HRESULT dd_CreateSurface(
|
|||||||
CreateDIBSection(dst_surface->hdc, dst_surface->bmi, DIB_RGB_COLORS, (void**)&dst_surface->surface, NULL, 0);
|
CreateDIBSection(dst_surface->hdc, dst_surface->bmi, DIB_RGB_COLORS, (void**)&dst_surface->surface, NULL, 0);
|
||||||
|
|
||||||
dst_surface->bmi->bmiHeader.biHeight = -((int)bmp_height);
|
dst_surface->bmi->bmiHeader.biHeight = -((int)bmp_height);
|
||||||
|
dst_surface->size = dst_surface->l_pitch * bmp_height * dst_surface->lx_pitch;
|
||||||
|
|
||||||
if (!dst_surface->bitmap)
|
if (!dst_surface->bitmap)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user