mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-25 01:57:47 +01:00
save and restore dc state
This commit is contained in:
parent
79feefac26
commit
f49f09895b
@ -38,6 +38,7 @@ typedef struct IDirectDrawSurfaceImpl
|
|||||||
PBITMAPINFO bmi;
|
PBITMAPINFO bmi;
|
||||||
HBITMAP bitmap;
|
HBITMAP bitmap;
|
||||||
HDC hdc;
|
HDC hdc;
|
||||||
|
int dc_state;
|
||||||
DDCOLORKEY color_key;
|
DDCOLORKEY color_key;
|
||||||
DWORD last_flip_tick;
|
DWORD last_flip_tick;
|
||||||
DWORD last_blt_tick;
|
DWORD last_blt_tick;
|
||||||
|
2
src/dd.c
2
src/dd.c
@ -1283,7 +1283,7 @@ HRESULT dd_SetCooperativeLevel(HWND hwnd, DWORD dwFlags)
|
|||||||
{
|
{
|
||||||
hook_init();
|
hook_init();
|
||||||
|
|
||||||
g_ddraw.wndproc = (WNDPROC)real_SetWindowLongA(g_ddraw.hwnd, GWL_WNDPROC, (LONG)fake_WndProc);
|
//g_ddraw.wndproc = (WNDPROC)real_SetWindowLongA(g_ddraw.hwnd, GWL_WNDPROC, (LONG)fake_WndProc);
|
||||||
g_ddraw.gui_thread_id = GetWindowThreadProcessId(g_ddraw.hwnd, NULL);
|
g_ddraw.gui_thread_id = GetWindowThreadProcessId(g_ddraw.hwnd, NULL);
|
||||||
|
|
||||||
if (!g_ddraw.render.hdc)
|
if (!g_ddraw.render.hdc)
|
||||||
|
@ -914,6 +914,8 @@ HRESULT dds_GetDC(IDirectDrawSurfaceImpl* This, HDC FAR* lpHDC)
|
|||||||
if (lpHDC)
|
if (lpHDC)
|
||||||
*lpHDC = dc;
|
*lpHDC = dc;
|
||||||
|
|
||||||
|
InterlockedExchange(&This->dc_state, SaveDC(dc));
|
||||||
|
|
||||||
return DD_OK;
|
return DD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1024,6 +1026,8 @@ HRESULT dds_ReleaseDC(IDirectDrawSurfaceImpl* This, HDC hDC)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RestoreDC(hDC, InterlockedExchangeAdd((LONG*)&This->dc_state, 0));
|
||||||
|
|
||||||
return DD_OK;
|
return DD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user