2009/12/2 Stefan Dösinger stefan@codeweavers.com:
updateSurfaceDesc((IWineD3DSurfaceImpl *)swapchain->frontBuffer, pPresentationParameters);
hr = updateSurfaceDesc((IWineD3DSurfaceImpl *)swapchain->frontBuffer, pPresentationParameters);
if(FAILED(hr))
{
IWineD3DSwapChain_Release((IWineD3DSwapChain *) swapchain);
return hr;
}
for(i = 0; i < swapchain->presentParms.BackBufferCount; i++) {
updateSurfaceDesc((IWineD3DSurfaceImpl *)swapchain->backBuffer[i], pPresentationParameters);
hr = updateSurfaceDesc((IWineD3DSurfaceImpl *)swapchain->backBuffer[i], pPresentationParameters);
if(FAILED(hr))
{
IWineD3DSwapChain_Release((IWineD3DSwapChain *) swapchain);
return hr;
} }
IWineD3DDeviceImpl_Reset() suffers from similar issues in general, so maybe we just don't care, but if one of the updateSurfaceDesc() calls fails you're left with inconsistent surface sizes.
- This->Flags |= SFLAG_INSYSMEM;
Why is this in surface_init_sysmem(), instead of a ModifyLocation() call after the call to surface_init_sysmem()?