From a2227de7af273bfc4469850ad3384bc137c1261e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Wed, 30 May 2007 16:11:25 +0200 Subject: [PATCH] ddraw: Hold the lock in IDirectDrawPalette methods. --- dlls/ddraw/palette.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/dlls/ddraw/palette.c b/dlls/ddraw/palette.c index afe95cc258b..44fbe03d553 100644 --- a/dlls/ddraw/palette.c +++ b/dlls/ddraw/palette.c @@ -105,11 +105,13 @@ IDirectDrawPaletteImpl_Release(IDirectDrawPalette *iface) if (ref == 0) { + EnterCriticalSection(&ddraw_cs); IWineD3DPalette_Release(This->wineD3DPalette); if(This->ifaceToRelease) { IUnknown_Release(This->ifaceToRelease); } + LeaveCriticalSection(&ddraw_cs); HeapFree(GetProcessHeap(), 0, This); } @@ -160,9 +162,13 @@ IDirectDrawPaletteImpl_GetCaps(IDirectDrawPalette *iface, DWORD *Caps) { ICOM_THIS_FROM(IDirectDrawPaletteImpl, IDirectDrawPalette, iface); + HRESULT hr; TRACE("(%p)->(%p): Relay\n", This, Caps); - return IWineD3DPalette_GetCaps(This->wineD3DPalette, Caps); + EnterCriticalSection(&ddraw_cs); + hr = IWineD3DPalette_GetCaps(This->wineD3DPalette, Caps); + LeaveCriticalSection(&ddraw_cs); + return hr; } /***************************************************************************** @@ -191,12 +197,16 @@ IDirectDrawPaletteImpl_SetEntries(IDirectDrawPalette *iface, PALETTEENTRY *PalEnt) { ICOM_THIS_FROM(IDirectDrawPaletteImpl, IDirectDrawPalette, iface); + HRESULT hr; TRACE("(%p)->(%x,%d,%d,%p): Relay\n", This, Flags, Start, Count, PalEnt); if(!PalEnt) return DDERR_INVALIDPARAMS; - return IWineD3DPalette_SetEntries(This->wineD3DPalette, Flags, Start, Count, PalEnt); + EnterCriticalSection(&ddraw_cs); + hr = IWineD3DPalette_SetEntries(This->wineD3DPalette, Flags, Start, Count, PalEnt); + LeaveCriticalSection(&ddraw_cs); + return hr; } /***************************************************************************** @@ -224,12 +234,16 @@ IDirectDrawPaletteImpl_GetEntries(IDirectDrawPalette *iface, PALETTEENTRY *PalEnt) { ICOM_THIS_FROM(IDirectDrawPaletteImpl, IDirectDrawPalette, iface); + HRESULT hr; TRACE("(%p)->(%x,%d,%d,%p): Relay\n", This, Flags, Start, Count, PalEnt); if(!PalEnt) return DDERR_INVALIDPARAMS; - return IWineD3DPalette_GetEntries(This->wineD3DPalette, Flags, Start, Count, PalEnt); + EnterCriticalSection(&ddraw_cs); + hr = IWineD3DPalette_GetEntries(This->wineD3DPalette, Flags, Start, Count, PalEnt); + LeaveCriticalSection(&ddraw_cs); + return hr; } const IDirectDrawPaletteVtbl IDirectDrawPalette_Vtbl =