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

add some additional checks

This commit is contained in:
FunkyFr3sh 2021-06-15 03:20:41 +02:00
parent 4bb1cffee7
commit b97af7a4f9
4 changed files with 12 additions and 6 deletions

View File

@ -999,7 +999,7 @@ HRESULT dds_GetDC(IDirectDrawSurfaceImpl* This, HDC FAR* lpHDC)
if (This->backbuffer || (This->caps & DDSCAPS_BACKBUFFER))
dc = (HDC)InterlockedExchangeAdd((LONG*)&This->hdc, 0);
if (data)
if (This->bpp == 8 && data)
SetDIBColorTable(dc, 0, 256, data);
if (lpHDC)
@ -1170,7 +1170,7 @@ HRESULT dds_Unlock(IDirectDrawSurfaceImpl* This, LPRECT lpRect)
if (hwnd && (This->caps & DDSCAPS_PRIMARYSURFACE))
{
HDC primary_dc;
dds_GetDC(g_ddraw->primary, &primary_dc);
dds_GetDC(This, &primary_dc);
/* GdiTransparentBlt idea taken from Aqrit's war2 ddraw */
@ -1225,7 +1225,7 @@ HRESULT dds_Unlock(IDirectDrawSurfaceImpl* This, LPRECT lpRect)
if (hwnd && (This->caps & DDSCAPS_PRIMARYSURFACE))
{
HDC primary_dc;
dds_GetDC(g_ddraw->primary, &primary_dc);
dds_GetDC(This, &primary_dc);
RECT rc;
if (fake_GetWindowRect(hwnd, &rc))

View File

@ -328,7 +328,9 @@ DWORD WINAPI d3d9_render_main(void)
EnterCriticalSection(&g_ddraw->cs);
if (g_ddraw->primary && (g_ddraw->bpp == 16 || g_ddraw->bpp == 32 || g_ddraw->primary->palette))
if (g_ddraw->primary &&
g_ddraw->primary->bpp == g_ddraw->bpp &&
(g_ddraw->bpp == 16 || g_ddraw->bpp == 32 || g_ddraw->primary->palette))
{
if (g_ddraw->vhack)
{

View File

@ -47,7 +47,9 @@ DWORD WINAPI gdi_render_main(void)
EnterCriticalSection(&g_ddraw->cs);
if (g_ddraw->primary && (g_ddraw->bpp == 16 || g_ddraw->bpp == 32 || g_ddraw->primary->palette))
if (g_ddraw->primary &&
g_ddraw->primary->bpp == g_ddraw->bpp &&
(g_ddraw->bpp == 16 || g_ddraw->bpp == 32 || g_ddraw->primary->palette))
{
if (warning_end_tick)
{

View File

@ -582,7 +582,9 @@ static void ogl_render()
EnterCriticalSection(&g_ddraw->cs);
if (g_ddraw->primary && (g_ddraw->bpp == 16 || g_ddraw->bpp == 32 || g_ddraw->primary->palette))
if (g_ddraw->primary &&
g_ddraw->primary->bpp == g_ddraw->bpp &&
(g_ddraw->bpp == 16 || g_ddraw->bpp == 32 || g_ddraw->primary->palette))
{
if (g_ddraw->vhack)
{