Stefan Dösinger : ddraw: Hold the lock in IDirectDrawPalette methods.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Jun 5 05:48:30 CDT 2007
Module: wine
Branch: master
Commit: a2227de7af273bfc4469850ad3384bc137c1261e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a2227de7af273bfc4469850ad3384bc137c1261e
Author: Stefan Dösinger <stefan at codeweavers.com>
Date: Wed May 30 16:11:25 2007 +0200
ddraw: Hold the lock in IDirectDrawPalette methods.
---
dlls/ddraw/palette.c | 20 +++++++++++++++++---
1 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/dlls/ddraw/palette.c b/dlls/ddraw/palette.c
index afe95cc..44fbe03 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 =
More information about the wine-cvs
mailing list