diff --git a/ddraw.def b/ddraw.def index c2b0db0..20f0c25 100644 --- a/ddraw.def +++ b/ddraw.def @@ -6,3 +6,4 @@ EXPORTS GameHandlesClose DATA NvOptimusEnablement DATA AmdPowerXpressRequestHighPerformance DATA + pvBmpBits DATA diff --git a/src/surface.c b/src/surface.c index 5c84db9..b1cdc98 100644 --- a/src/surface.c +++ b/src/surface.c @@ -29,6 +29,7 @@ void dump_ddbltflags(DWORD dwFlags); void dump_ddscaps(DWORD dwCaps); void dump_ddsd(DWORD dwFlags); DWORD WINAPI render_soft_main(void); +void *pvBmpBits; HRESULT __stdcall ddraw_surface_QueryInterface(IDirectDrawSurfaceImpl *This, REFIID riid, void **obj) { @@ -1199,6 +1200,9 @@ HRESULT __stdcall ddraw_CreateSurface(IDirectDrawImpl *This, LPDDSURFACEDESC lpD if (!Surface->bitmap) Surface->surface = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, Surface->lPitch * (Surface->height + 200) * Surface->lXPitch); + if (lpDDSurfaceDesc->ddsCaps.dwCaps & DDSCAPS_PRIMARYSURFACE) + pvBmpBits = Surface->surface; + SelectObject(Surface->hDC, Surface->bitmap); }