don't allocate ddraw struct
This commit is contained in:
parent
d69a56c0d0
commit
36a87419e3
19 changed files with 1027 additions and 1020 deletions
|
@ -131,20 +131,20 @@ HRESULT __stdcall IDirectDraw__QueryInterface(IDirectDrawImpl* This, REFIID riid
|
|||
{
|
||||
TRACE("NOT_IMPLEMENTED GUID = %08X\n", ((GUID*)riid)->Data1);
|
||||
|
||||
if (!g_ddraw->real_dll)
|
||||
g_ddraw->real_dll = real_LoadLibraryA("system32\\ddraw.dll");
|
||||
if (!g_ddraw.real_dll)
|
||||
g_ddraw.real_dll = real_LoadLibraryA("system32\\ddraw.dll");
|
||||
|
||||
if (g_ddraw->real_dll && !g_ddraw->DirectDrawCreate)
|
||||
g_ddraw->DirectDrawCreate = (void*)real_GetProcAddress(g_ddraw->real_dll, "DirectDrawCreate");
|
||||
if (g_ddraw.real_dll && !g_ddraw.DirectDrawCreate)
|
||||
g_ddraw.DirectDrawCreate = (void*)real_GetProcAddress(g_ddraw.real_dll, "DirectDrawCreate");
|
||||
|
||||
if (g_ddraw->DirectDrawCreate == DirectDrawCreate)
|
||||
g_ddraw->DirectDrawCreate = NULL;
|
||||
if (g_ddraw.DirectDrawCreate == DirectDrawCreate)
|
||||
g_ddraw.DirectDrawCreate = NULL;
|
||||
|
||||
if (!g_ddraw->real_dd && g_ddraw->DirectDrawCreate)
|
||||
g_ddraw->DirectDrawCreate(NULL, &g_ddraw->real_dd, NULL);
|
||||
if (!g_ddraw.real_dd && g_ddraw.DirectDrawCreate)
|
||||
g_ddraw.DirectDrawCreate(NULL, &g_ddraw.real_dd, NULL);
|
||||
|
||||
if (g_ddraw->real_dd)
|
||||
ret = IDirectDraw_QueryInterface(g_ddraw->real_dd, riid, ppvObj);
|
||||
if (g_ddraw.real_dd)
|
||||
ret = IDirectDraw_QueryInterface(g_ddraw.real_dd, riid, ppvObj);
|
||||
else
|
||||
ret = E_NOINTERFACE;
|
||||
}
|
||||
|
@ -355,7 +355,7 @@ HRESULT __stdcall IDirectDraw__GetGDISurface(IDirectDrawImpl* This, LPDIRECTDRAW
|
|||
{
|
||||
TRACE("NOT_IMPLEMENTED -> %s(This=%p)\n", __FUNCTION__, This);
|
||||
HRESULT ret = DD_OK;
|
||||
*lplpGDIDDSurface = (LPDIRECTDRAWSURFACE7)g_ddraw->primary;
|
||||
*lplpGDIDDSurface = (LPDIRECTDRAWSURFACE7)g_ddraw.primary;
|
||||
TRACE("NOT_IMPLEMENTED <- %s\n", __FUNCTION__);
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -30,8 +30,8 @@ ULONG __stdcall IDirectDrawPalette__Release(IDirectDrawPaletteImpl* This)
|
|||
{
|
||||
TRACE(" Released (%p)\n", This);
|
||||
|
||||
if (g_ddraw)
|
||||
g_ddraw->last_freed_palette = This;
|
||||
if (g_ddraw.ref)
|
||||
g_ddraw.last_freed_palette = This;
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, This);
|
||||
}
|
||||
|
|
|
@ -82,11 +82,11 @@ ULONG __stdcall IDirectDrawSurface__Release(IDirectDrawSurfaceImpl* This)
|
|||
{
|
||||
TRACE(" Released (%p)\n", This);
|
||||
|
||||
if (g_ddraw && (This->caps & DDSCAPS_PRIMARYSURFACE))
|
||||
if (g_ddraw.ref && (This->caps & DDSCAPS_PRIMARYSURFACE))
|
||||
{
|
||||
EnterCriticalSection(&g_ddraw->cs);
|
||||
g_ddraw->primary = NULL;
|
||||
LeaveCriticalSection(&g_ddraw->cs);
|
||||
EnterCriticalSection(&g_ddraw.cs);
|
||||
g_ddraw.primary = NULL;
|
||||
LeaveCriticalSection(&g_ddraw.cs);
|
||||
}
|
||||
|
||||
if (This->bitmap)
|
||||
|
@ -111,7 +111,7 @@ ULONG __stdcall IDirectDrawSurface__Release(IDirectDrawSurfaceImpl* This)
|
|||
if (This->mapping)
|
||||
CloseHandle(This->mapping);
|
||||
|
||||
if (This->backbuffer && (!g_ddraw || (void*)This->backbuffer != g_ddraw->last_freed_surface))
|
||||
if (This->backbuffer && (!g_ddraw.ref || (void*)This->backbuffer != g_ddraw.last_freed_surface))
|
||||
{
|
||||
IDirectDrawSurface_Release(This->backbuffer);
|
||||
}
|
||||
|
@ -119,15 +119,15 @@ ULONG __stdcall IDirectDrawSurface__Release(IDirectDrawSurfaceImpl* This)
|
|||
if (This->clipper)
|
||||
IDirectDrawClipper_Release(This->clipper);
|
||||
|
||||
if (This->palette && (!g_ddraw || (void*)This->palette != g_ddraw->last_freed_palette))
|
||||
if (This->palette && (!g_ddraw.ref || (void*)This->palette != g_ddraw.last_freed_palette))
|
||||
{
|
||||
IDirectDrawPalette_Release(This->palette);
|
||||
}
|
||||
|
||||
DeleteCriticalSection(&This->cs);
|
||||
|
||||
if (g_ddraw)
|
||||
g_ddraw->last_freed_surface = This;
|
||||
if (g_ddraw.ref)
|
||||
g_ddraw.last_freed_surface = This;
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, This);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue