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()?