http://bugs.winehq.org/show_bug.cgi?id=10758 Jim Cameron <jim_24601(a)btinternet.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jim_24601(a)btinternet.com --- Comment #5 from Jim Cameron <jim_24601(a)btinternet.com> 2008-10-01 17:27:44 --- It is caused by a surface being freed where it shouldn't be ... I encountered an interesting comment within IWineD3DDeviceImpl_SetDepthStencilSurface() (file dlls/wined3d/device.c): /* should we be calling the parent or the wined3d surface? */ followed by an AddRef of the wined3d surface. If I change the code to get the parent and AddRef it instead, Revelations does not crash, and I could play the game (although it crashed on exit). That would seem to answer the original developer's question. Of course, we'll need a conformance test to confirm. Patch follows. 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_SetDepthStencilS tmp = This->stencilBufferTarget; This->stencilBufferTarget = pNewZStencil; /* should we be calling the parent or the wined3d surface? */ - if (NULL != This->stencilBufferTarget) IWineD3DSurface_AddRef(This->ste + if (NULL != This->stencilBufferTarget) + { + IUnknown* parent; + IWineD3DSurface_GetParent(This->stencilBufferTarget, &parent); + IUnknown_AddRef(parent); + } if (NULL != tmp) IWineD3DSurface_Release(tmp); hr = WINED3D_OK; -- Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email Do not reply to this email, post in Bugzilla using the above URL to reply. ------- You are receiving this mail because: ------- You are watching all bug changes.