Module: wine Branch: master Commit: 227efbbf652ead4a205e5a86c5cd5b917b161306 URL: http://source.winehq.org/git/wine.git/?a=commit;h=227efbbf652ead4a205e5a86c5...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Wed Jan 19 19:20:12 2011 +0100
wined3d: Store a pointer to an array of IWineD3DSwapChainImpl pointers in the device.
---
dlls/wined3d/context.c | 4 ++-- dlls/wined3d/device.c | 37 ++++++++++++++++++++++--------------- dlls/wined3d/surface.c | 2 +- dlls/wined3d/surface_gdi.c | 2 +- dlls/wined3d/wined3d_private.h | 2 +- 5 files changed, 27 insertions(+), 20 deletions(-)
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c index a438a88..5ecd748 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c @@ -1877,7 +1877,7 @@ static struct wined3d_context *FindContext(IWineD3DDeviceImpl *This, IWineD3DSur } else { - IWineD3DSwapChainImpl *swapchain = (IWineD3DSwapChainImpl *)This->swapchains[0]; + IWineD3DSwapChainImpl *swapchain = This->swapchains[0]; if (swapchain->back_buffers) target = swapchain->back_buffers[0]; else target = swapchain->front_buffer; } @@ -1904,7 +1904,7 @@ static struct wined3d_context *FindContext(IWineD3DDeviceImpl *This, IWineD3DSur if (current_context && current_context->swapchain->device == This) context = current_context; else - context = swapchain_get_context((IWineD3DSwapChainImpl *)This->swapchains[0]); + context = swapchain_get_context(This->swapchains[0]); }
context_validate(context); diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index a099c90..d375ca3 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -1305,8 +1305,9 @@ static HRESULT WINAPI IWineD3DDeviceImpl_GetSwapChain(IWineD3DDevice *iface, U IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; TRACE("(%p) : swapchain %d\n", This, iSwapChain);
- if(iSwapChain < This->NumberOfSwapChains) { - *pSwapChain = This->swapchains[iSwapChain]; + if (iSwapChain < This->NumberOfSwapChains) + { + *pSwapChain = (IWineD3DSwapChain *)This->swapchains[iSwapChain]; IWineD3DSwapChain_AddRef(*pSwapChain); TRACE("(%p) returning %p\n", This, *pSwapChain); return WINED3D_OK; @@ -1939,12 +1940,13 @@ static HRESULT WINAPI IWineD3DDeviceImpl_Init3D(IWineD3DDevice *iface, }
This->NumberOfSwapChains = 1; - This->swapchains = HeapAlloc(GetProcessHeap(), 0, This->NumberOfSwapChains * sizeof(IWineD3DSwapChain *)); - if(!This->swapchains) { + This->swapchains = HeapAlloc(GetProcessHeap(), 0, This->NumberOfSwapChains * sizeof(*This->swapchains)); + if (!This->swapchains) + { ERR("Out of memory!\n"); goto err_out; } - This->swapchains[0] = (IWineD3DSwapChain *) swapchain; + This->swapchains[0] = swapchain;
if (swapchain->back_buffers && swapchain->back_buffers[0]) { @@ -2079,12 +2081,13 @@ static HRESULT WINAPI IWineD3DDeviceImpl_InitGDI(IWineD3DDevice *iface, }
This->NumberOfSwapChains = 1; - This->swapchains = HeapAlloc(GetProcessHeap(), 0, This->NumberOfSwapChains * sizeof(IWineD3DSwapChain *)); - if(!This->swapchains) { + This->swapchains = HeapAlloc(GetProcessHeap(), 0, This->NumberOfSwapChains * sizeof(*This->swapchains)); + if (!This->swapchains) + { ERR("Out of memory!\n"); goto err_out; } - This->swapchains[0] = (IWineD3DSwapChain *) swapchain; + This->swapchains[0] = swapchain; return WINED3D_OK;
err_out: @@ -2227,9 +2230,11 @@ static HRESULT WINAPI IWineD3DDeviceImpl_Uninit3D(IWineD3DDevice *iface,
context_release(context);
- for(i=0; i < This->NumberOfSwapChains; i++) { - TRACE("Releasing the implicit swapchain %d\n", i); - if (D3DCB_DestroySwapChain(This->swapchains[i]) > 0) { + for (i = 0; i < This->NumberOfSwapChains; ++i) + { + TRACE("Releasing the implicit swapchain %u.\n", i); + if (D3DCB_DestroySwapChain((IWineD3DSwapChain *)This->swapchains[i]) > 0) + { FIXME("(%p) Something's still holding the implicit swapchain\n", This); } } @@ -2255,9 +2260,11 @@ static HRESULT WINAPI IWineD3DDeviceImpl_UninitGDI(IWineD3DDevice *iface, D3DCB_ IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface; unsigned int i;
- for(i=0; i < This->NumberOfSwapChains; i++) { - TRACE("Releasing the implicit swapchain %d\n", i); - if (D3DCB_DestroySwapChain(This->swapchains[i]) > 0) { + for (i = 0; i < This->NumberOfSwapChains; ++i) + { + TRACE("Releasing the implicit swapchain %u.\n", i); + if (D3DCB_DestroySwapChain((IWineD3DSwapChain *)This->swapchains[i]) > 0) + { FIXME("(%p) Something's still holding the implicit swapchain\n", This); } } @@ -5820,7 +5827,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetDepthStencilSurface(IWineD3DDevice *
if (This->depth_stencil) { - if (((IWineD3DSwapChainImpl *)This->swapchains[0])->presentParms.Flags & WINED3DPRESENTFLAG_DISCARD_DEPTHSTENCIL + if (This->swapchains[0]->presentParms.Flags & WINED3DPRESENTFLAG_DISCARD_DEPTHSTENCIL || This->depth_stencil->flags & SFLAG_DISCARD) { surface_modify_ds_location(This->depth_stencil, SFLAG_DS_DISCARDED, diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index 7e19a02..cce1a2f 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -2014,7 +2014,7 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_GetDC(IWineD3DSurface *iface, HDC *pHD } else { IWineD3DSurfaceImpl *dds_primary; IWineD3DSwapChainImpl *swapchain; - swapchain = (IWineD3DSwapChainImpl *)This->resource.device->swapchains[0]; + swapchain = This->resource.device->swapchains[0]; dds_primary = swapchain->front_buffer; if (dds_primary && dds_primary->palette) pal = dds_primary->palette->palents; diff --git a/dlls/wined3d/surface_gdi.c b/dlls/wined3d/surface_gdi.c index 013ff2c..d7a6f4a 100644 --- a/dlls/wined3d/surface_gdi.c +++ b/dlls/wined3d/surface_gdi.c @@ -266,7 +266,7 @@ static HRESULT WINAPI IWineGDISurfaceImpl_GetDC(IWineD3DSurface *iface, HDC *pHD } else { IWineD3DSurfaceImpl *dds_primary; IWineD3DSwapChainImpl *swapchain; - swapchain = (IWineD3DSwapChainImpl *)This->resource.device->swapchains[0]; + swapchain = This->resource.device->swapchains[0]; dds_primary = swapchain->front_buffer; if (dds_primary && dds_primary->palette) pal = dds_primary->palette->palents; diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 819a6ab..baf009f 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -1707,7 +1707,7 @@ struct IWineD3DDeviceImpl WINED3DDEVTYPE devType; HWND focus_window;
- IWineD3DSwapChain **swapchains; + IWineD3DSwapChainImpl **swapchains; UINT NumberOfSwapChains;
struct list resources; /* a linked list to track resources created by the device */