Henri Verbeet : wined3d: Cleanup IWineD3DBaseSwapChainImpl_GetBackBuffer() a bit.
Alexandre Julliard
julliard at winehq.org
Mon Aug 16 12:25:00 CDT 2010
Module: wine
Branch: master
Commit: 81603f18d89be5bedeb8a929f1c4bb32faf27dad
URL: http://source.winehq.org/git/wine.git/?a=commit;h=81603f18d89be5bedeb8a929f1c4bb32faf27dad
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Sun Aug 15 23:21:44 2010 +0200
wined3d: Cleanup IWineD3DBaseSwapChainImpl_GetBackBuffer() a bit.
---
dlls/wined3d/swapchain_base.c | 40 +++++++++++++++++++---------------------
1 files changed, 19 insertions(+), 21 deletions(-)
diff --git a/dlls/wined3d/swapchain_base.c b/dlls/wined3d/swapchain_base.c
index f13e085..917a8b6 100644
--- a/dlls/wined3d/swapchain_base.c
+++ b/dlls/wined3d/swapchain_base.c
@@ -90,36 +90,34 @@ HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetFrontBufferData(IWineD3DSwapChain *i
return WINED3D_OK;
}
-HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetBackBuffer(IWineD3DSwapChain *iface, UINT iBackBuffer, WINED3DBACKBUFFER_TYPE Type, IWineD3DSurface **ppBackBuffer) {
+HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetBackBuffer(IWineD3DSwapChain *iface,
+ UINT back_buffer_idx, WINED3DBACKBUFFER_TYPE type, IWineD3DSurface **back_buffer)
+{
+ IWineD3DSwapChainImpl *swapchain = (IWineD3DSwapChainImpl *)iface;
- IWineD3DSwapChainImpl *This = (IWineD3DSwapChainImpl *)iface;
+ TRACE("iface %p, back_buffer_idx %u, type %#x, back_buffer %p.\n",
+ iface, back_buffer_idx, type, back_buffer);
- if (iBackBuffer > This->presentParms.BackBufferCount - 1) {
- TRACE("Back buffer count out of range\n");
- /* Native d3d9 doesn't set NULL here, just as wine's d3d9. But set it
- * here in wined3d to avoid problems in other libs
- */
- *ppBackBuffer = NULL;
- return WINED3DERR_INVALIDCALL;
- }
-
- /* Return invalid if there is no backbuffer array, otherwise it will crash when ddraw is
- * used (there This->backBuffer is always NULL). We need this because this function has
- * to be called from IWineD3DStateBlockImpl_InitStartupStateBlock to get the default
+ /* Return invalid if there is no backbuffer array, otherwise it will
+ * crash when ddraw is used (there swapchain->back_buffers is always NULL).
+ * We need this because this function is called from
+ * IWineD3DStateBlockImpl_InitStartupStateBlock() to get the default
* scissorrect dimensions. */
- if (!This->back_buffers)
+ if (!swapchain->back_buffers || back_buffer_idx >= swapchain->presentParms.BackBufferCount)
{
- *ppBackBuffer = NULL;
+ WARN("Invalid back buffer index.\n");
+ /* Native d3d9 doesn't set NULL here, just as wine's d3d9. But set it
+ * here in wined3d to avoid problems in other libs. */
+ *back_buffer = NULL;
return WINED3DERR_INVALIDCALL;
}
- *ppBackBuffer = (IWineD3DSurface *)This->back_buffers[iBackBuffer];
- TRACE("(%p) : BackBuf %d Type %d returning %p\n", This, iBackBuffer, Type, *ppBackBuffer);
+ *back_buffer = (IWineD3DSurface *)swapchain->back_buffers[back_buffer_idx];
+ if (*back_buffer) IWineD3DSurface_AddRef(*back_buffer);
- /* Note inc ref on returned surface */
- if(*ppBackBuffer) IWineD3DSurface_AddRef(*ppBackBuffer);
- return WINED3D_OK;
+ TRACE("Returning back buffer %p.\n", *back_buffer);
+ return WINED3D_OK;
}
HRESULT WINAPI IWineD3DBaseSwapChainImpl_GetRasterStatus(IWineD3DSwapChain *iface, WINED3DRASTER_STATUS *pRasterStatus) {
More information about the wine-cvs
mailing list