Module: wine Branch: master Commit: 219a830273b634a43fa9face5e324b4c4375ec0e URL: http://source.winehq.org/git/wine.git/?a=commit;h=219a830273b634a43fa9face5e...
Author: Michael Stefaniuc mstefani@redhat.de Date: Tue Jun 7 10:11:55 2011 +0200
dxgi: COM cleanup for the IDXGISurface iface.
---
dlls/dxgi/dxgi_private.h | 2 +- dlls/dxgi/surface.c | 22 ++++++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/dlls/dxgi/dxgi_private.h b/dlls/dxgi/dxgi_private.h index 82cb0b0..047e083 100644 --- a/dlls/dxgi/dxgi_private.h +++ b/dlls/dxgi/dxgi_private.h @@ -135,7 +135,7 @@ HRESULT dxgi_swapchain_init(struct dxgi_swapchain *swapchain, struct dxgi_device /* IDXGISurface */ struct dxgi_surface { - const struct IDXGISurfaceVtbl *vtbl; + IDXGISurface IDXGISurface_iface; const struct IUnknownVtbl *inner_unknown_vtbl; IUnknown *outer_unknown; LONG refcount; diff --git a/dlls/dxgi/surface.c b/dlls/dxgi/surface.c index 6296c1a..4a5ea02 100644 --- a/dlls/dxgi/surface.c +++ b/dlls/dxgi/surface.c @@ -42,7 +42,7 @@ static HRESULT STDMETHODCALLTYPE dxgi_surface_inner_QueryInterface(IUnknown *ifa || IsEqualGUID(riid, &IID_IDXGIObject) || IsEqualGUID(riid, &IID_IUnknown)) { - IUnknown_AddRef((IUnknown *)This); + IDXGISurface_AddRef(&This->IDXGISurface_iface); *object = This; return S_OK; } @@ -79,25 +79,31 @@ static ULONG STDMETHODCALLTYPE dxgi_surface_inner_Release(IUnknown *iface) return refcount; }
+static inline struct dxgi_surface *impl_from_IDXGISurface(IDXGISurface *iface) +{ + return CONTAINING_RECORD(iface, struct dxgi_surface, IDXGISurface_iface); +} + /* IUnknown methods */
-static HRESULT STDMETHODCALLTYPE dxgi_surface_QueryInterface(IDXGISurface *iface, REFIID riid, void **object) +static HRESULT STDMETHODCALLTYPE dxgi_surface_QueryInterface(IDXGISurface *iface, REFIID riid, + void **object) { - struct dxgi_surface *This = (struct dxgi_surface *)iface; + struct dxgi_surface *This = impl_from_IDXGISurface(iface); TRACE("Forwarding to outer IUnknown\n"); return IUnknown_QueryInterface(This->outer_unknown, riid, object); }
static ULONG STDMETHODCALLTYPE dxgi_surface_AddRef(IDXGISurface *iface) { - struct dxgi_surface *This = (struct dxgi_surface *)iface; + struct dxgi_surface *This = impl_from_IDXGISurface(iface); TRACE("Forwarding to outer IUnknown\n"); return IUnknown_AddRef(This->outer_unknown); }
static ULONG STDMETHODCALLTYPE dxgi_surface_Release(IDXGISurface *iface) { - struct dxgi_surface *This = (struct dxgi_surface *)iface; + struct dxgi_surface *This = impl_from_IDXGISurface(iface); TRACE("Forwarding to outer IUnknown\n"); return IUnknown_Release(This->outer_unknown); } @@ -130,7 +136,7 @@ static HRESULT STDMETHODCALLTYPE dxgi_surface_GetPrivateData(IDXGISurface *iface
static HRESULT STDMETHODCALLTYPE dxgi_surface_GetParent(IDXGISurface *iface, REFIID riid, void **parent) { - struct dxgi_surface *This = (struct dxgi_surface *)iface; + struct dxgi_surface *This = impl_from_IDXGISurface(iface);
TRACE("iface %p, riid %s, parent %p.\n", iface, debugstr_guid(riid), parent);
@@ -141,7 +147,7 @@ static HRESULT STDMETHODCALLTYPE dxgi_surface_GetParent(IDXGISurface *iface, REF
static HRESULT STDMETHODCALLTYPE dxgi_surface_GetDevice(IDXGISurface *iface, REFIID riid, void **device) { - struct dxgi_surface *This = (struct dxgi_surface *)iface; + struct dxgi_surface *This = impl_from_IDXGISurface(iface);
TRACE("iface %p, riid %s, device %p.\n", iface, debugstr_guid(riid), device);
@@ -199,7 +205,7 @@ static const struct IUnknownVtbl dxgi_surface_inner_unknown_vtbl =
HRESULT dxgi_surface_init(struct dxgi_surface *surface, IDXGIDevice *device, IUnknown *outer) { - surface->vtbl = &dxgi_surface_vtbl; + surface->IDXGISurface_iface.lpVtbl = &dxgi_surface_vtbl; surface->inner_unknown_vtbl = &dxgi_surface_inner_unknown_vtbl; surface->refcount = 1; surface->outer_unknown = outer ? outer : (IUnknown *)&surface->inner_unknown_vtbl;