Module: wine Branch: master Commit: 61f51eb47ecde08f9d1f6e60b1261e52f029a67e URL: http://source.winehq.org/git/wine.git/?a=commit;h=61f51eb47ecde08f9d1f6e60b1...
Author: Michael Stefaniuc mstefani@redhat.de Date: Mon Jun 6 10:25:49 2011 +0200
dxgi: COM cleanup in the IDXGISwapChain iface.
---
dlls/dxgi/dxgi_private.h | 2 +- dlls/dxgi/swapchain.c | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/dlls/dxgi/dxgi_private.h b/dlls/dxgi/dxgi_private.h index 741e3e3..98fdea8 100644 --- a/dlls/dxgi/dxgi_private.h +++ b/dlls/dxgi/dxgi_private.h @@ -124,7 +124,7 @@ HRESULT dxgi_adapter_init(struct dxgi_adapter *adapter, IWineDXGIFactory *parent /* IDXGISwapChain */ struct dxgi_swapchain { - const struct IDXGISwapChainVtbl *vtbl; + IDXGISwapChain IDXGISwapChain_iface; LONG refcount; struct wined3d_swapchain *wined3d_swapchain; }; diff --git a/dlls/dxgi/swapchain.c b/dlls/dxgi/swapchain.c index e4f7433..373403c 100644 --- a/dlls/dxgi/swapchain.c +++ b/dlls/dxgi/swapchain.c @@ -24,6 +24,11 @@
WINE_DEFAULT_DEBUG_CHANNEL(dxgi);
+static inline struct dxgi_swapchain *impl_from_IDXGISwapChain(IDXGISwapChain *iface) +{ + return CONTAINING_RECORD(iface, struct dxgi_swapchain, IDXGISwapChain_iface); +} + /* IUnknown methods */
static HRESULT STDMETHODCALLTYPE dxgi_swapchain_QueryInterface(IDXGISwapChain *iface, REFIID riid, void **object) @@ -48,7 +53,7 @@ static HRESULT STDMETHODCALLTYPE dxgi_swapchain_QueryInterface(IDXGISwapChain *i
static ULONG STDMETHODCALLTYPE dxgi_swapchain_AddRef(IDXGISwapChain *iface) { - struct dxgi_swapchain *This = (struct dxgi_swapchain *)iface; + struct dxgi_swapchain *This = impl_from_IDXGISwapChain(iface); ULONG refcount = InterlockedIncrement(&This->refcount);
TRACE("%p increasing refcount to %u\n", This, refcount); @@ -61,7 +66,7 @@ static ULONG STDMETHODCALLTYPE dxgi_swapchain_AddRef(IDXGISwapChain *iface)
static ULONG STDMETHODCALLTYPE dxgi_swapchain_Release(IDXGISwapChain *iface) { - struct dxgi_swapchain *This = (struct dxgi_swapchain *)iface; + struct dxgi_swapchain *This = impl_from_IDXGISwapChain(iface); ULONG refcount = InterlockedDecrement(&This->refcount);
TRACE("%p decreasing refcount to %u\n", This, refcount); @@ -130,7 +135,7 @@ static HRESULT STDMETHODCALLTYPE dxgi_swapchain_GetDevice(IDXGISwapChain *iface,
static HRESULT STDMETHODCALLTYPE dxgi_swapchain_Present(IDXGISwapChain *iface, UINT sync_interval, UINT flags) { - struct dxgi_swapchain *This = (struct dxgi_swapchain *)iface; + struct dxgi_swapchain *This = impl_from_IDXGISwapChain(iface);
TRACE("iface %p, sync_interval %u, flags %#x\n", iface, sync_interval, flags);
@@ -143,7 +148,7 @@ static HRESULT STDMETHODCALLTYPE dxgi_swapchain_Present(IDXGISwapChain *iface, U static HRESULT STDMETHODCALLTYPE dxgi_swapchain_GetBuffer(IDXGISwapChain *iface, UINT buffer_idx, REFIID riid, void **surface) { - struct dxgi_swapchain *This = (struct dxgi_swapchain *)iface; + struct dxgi_swapchain *This = impl_from_IDXGISwapChain(iface); struct wined3d_surface *backbuffer; IUnknown *parent; HRESULT hr; @@ -271,7 +276,7 @@ HRESULT dxgi_swapchain_init(struct dxgi_swapchain *swapchain, struct dxgi_device { HRESULT hr;
- swapchain->vtbl = &dxgi_swapchain_vtbl; + swapchain->IDXGISwapChain_iface.lpVtbl = &dxgi_swapchain_vtbl; swapchain->refcount = 1;
hr = wined3d_swapchain_create(device->wined3d_device, present_parameters,