http://bugs.winehq.org/show_bug.cgi?id=10758
--- Comment #6 from Jim Cameron jim_24601@btinternet.com 2008-10-01 17:29:29 --- Sorry, my terminal mangled that patch a bit. Here it is again.
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 409c7a1..0546f00 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -6648,7 +6648,12 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetDepthStencilSurface(IWineD3DDevice * tmp = This->stencilBufferTarget; This->stencilBufferTarget = pNewZStencil; /* should we be calling the parent or the wined3d surface? */ - if (NULL != This->stencilBufferTarget) IWineD3DSurface_AddRef(This->stencilBufferTarget); + if (NULL != This->stencilBufferTarget) + { + IUnknown* parent; + IWineD3DSurface_GetParent(This->stencilBufferTarget, &parent); + IUnknown_AddRef(parent); + } if (NULL != tmp) IWineD3DSurface_Release(tmp); hr = WINED3D_OK;