Michael Stefaniuc : ddraw: COM cleanup for the IDirectDrawGammaControl iface.

Alexandre Julliard julliard at winehq.org
Wed Jun 8 11:27:03 CDT 2011


Module: wine
Branch: master
Commit: abe0ee33eb0ab8ac19bd97323bdde6ca7f31ed1e
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=abe0ee33eb0ab8ac19bd97323bdde6ca7f31ed1e

Author: Michael Stefaniuc <mstefani at redhat.de>
Date:   Wed Jun  8 17:23:17 2011 +0200

ddraw: COM cleanup for the IDirectDrawGammaControl iface.

---

 dlls/ddraw/ddraw_private.h |    2 +-
 dlls/ddraw/surface.c       |   25 ++++++++++++++-----------
 2 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/dlls/ddraw/ddraw_private.h b/dlls/ddraw/ddraw_private.h
index d2b6ea9..cce8574 100644
--- a/dlls/ddraw/ddraw_private.h
+++ b/dlls/ddraw/ddraw_private.h
@@ -155,7 +155,7 @@ struct IDirectDrawSurfaceImpl
     IDirectDrawSurface7 IDirectDrawSurface7_iface;
     IDirectDrawSurface4 IDirectDrawSurface4_iface;
     IDirectDrawSurface3 IDirectDrawSurface3_iface;
-    const IDirectDrawGammaControlVtbl *IDirectDrawGammaControl_vtbl;
+    IDirectDrawGammaControl IDirectDrawGammaControl_iface;
     const IDirect3DTexture2Vtbl *IDirect3DTexture2_vtbl;
     const IDirect3DTextureVtbl *IDirect3DTexture_vtbl;
 
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
index 74d9dc0..89a6bd1 100644
--- a/dlls/ddraw/surface.c
+++ b/dlls/ddraw/surface.c
@@ -31,10 +31,9 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(ddraw);
 
-static inline IDirectDrawSurfaceImpl *surface_from_gamma_control(IDirectDrawGammaControl *iface)
+static inline IDirectDrawSurfaceImpl *impl_from_IDirectDrawGammaControl(IDirectDrawGammaControl *iface)
 {
-    return (IDirectDrawSurfaceImpl *)((char*)iface
-            - FIELD_OFFSET(IDirectDrawSurfaceImpl, IDirectDrawGammaControl_vtbl));
+    return CONTAINING_RECORD(iface, IDirectDrawSurfaceImpl, IDirectDrawGammaControl_iface);
 }
 
 /*****************************************************************************
@@ -98,7 +97,7 @@ static HRESULT WINAPI ddraw_surface7_QueryInterface(IDirectDrawSurface7 *iface,
     else if( IsEqualGUID(riid, &IID_IDirectDrawGammaControl) )
     {
         IUnknown_AddRef(iface);
-        *obj = &This->IDirectDrawGammaControl_vtbl;
+        *obj = &This->IDirectDrawGammaControl_iface;
         TRACE("(%p) returning IDirectDrawGammaControl interface at %p\n", This, *obj);
         return S_OK;
     }
@@ -159,9 +158,11 @@ static HRESULT WINAPI ddraw_surface3_QueryInterface(IDirectDrawSurface3 *iface,
     return ddraw_surface7_QueryInterface(&This->IDirectDrawSurface7_iface, riid, object);
 }
 
-static HRESULT WINAPI ddraw_gamma_control_QueryInterface(IDirectDrawGammaControl *iface, REFIID riid, void **object)
+static HRESULT WINAPI ddraw_gamma_control_QueryInterface(IDirectDrawGammaControl *iface,
+        REFIID riid, void **object)
 {
-    IDirectDrawSurfaceImpl *This = surface_from_gamma_control(iface);
+    IDirectDrawSurfaceImpl *This = impl_from_IDirectDrawGammaControl(iface);
+
     TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), object);
 
     return ddraw_surface7_QueryInterface(&This->IDirectDrawSurface7_iface, riid, object);
@@ -230,7 +231,8 @@ static ULONG WINAPI ddraw_surface3_AddRef(IDirectDrawSurface3 *iface)
 
 static ULONG WINAPI ddraw_gamma_control_AddRef(IDirectDrawGammaControl *iface)
 {
-    IDirectDrawSurfaceImpl *This = surface_from_gamma_control(iface);
+    IDirectDrawSurfaceImpl *This = impl_from_IDirectDrawGammaControl(iface);
+
     TRACE("iface %p.\n", iface);
 
     return ddraw_surface7_AddRef(&This->IDirectDrawSurface7_iface);
@@ -448,7 +450,8 @@ static ULONG WINAPI ddraw_surface3_Release(IDirectDrawSurface3 *iface)
 
 static ULONG WINAPI ddraw_gamma_control_Release(IDirectDrawGammaControl *iface)
 {
-    IDirectDrawSurfaceImpl *This = surface_from_gamma_control(iface);
+    IDirectDrawSurfaceImpl *This = impl_from_IDirectDrawGammaControl(iface);
+
     TRACE("iface %p.\n", iface);
 
     return ddraw_surface7_Release(&This->IDirectDrawSurface7_iface);
@@ -3410,7 +3413,7 @@ static HRESULT WINAPI ddraw_surface3_SetPalette(IDirectDrawSurface3 *iface, IDir
 static HRESULT WINAPI ddraw_gamma_control_GetGammaRamp(IDirectDrawGammaControl *iface,
         DWORD flags, DDGAMMARAMP *gamma_ramp)
 {
-    IDirectDrawSurfaceImpl *surface = surface_from_gamma_control(iface);
+    IDirectDrawSurfaceImpl *surface = impl_from_IDirectDrawGammaControl(iface);
 
     TRACE("iface %p, flags %#x, gamma_ramp %p.\n", iface, flags, gamma_ramp);
 
@@ -3452,7 +3455,7 @@ static HRESULT WINAPI ddraw_gamma_control_GetGammaRamp(IDirectDrawGammaControl *
 static HRESULT WINAPI ddraw_gamma_control_SetGammaRamp(IDirectDrawGammaControl *iface,
         DWORD flags, DDGAMMARAMP *gamma_ramp)
 {
-    IDirectDrawSurfaceImpl *surface = surface_from_gamma_control(iface);
+    IDirectDrawSurfaceImpl *surface = impl_from_IDirectDrawGammaControl(iface);
 
     TRACE("iface %p, flags %#x, gamma_ramp %p.\n", iface, flags, gamma_ramp);
 
@@ -4135,7 +4138,7 @@ HRESULT ddraw_surface_init(IDirectDrawSurfaceImpl *surface, IDirectDrawImpl *ddr
     surface->IDirectDrawSurface7_iface.lpVtbl = &ddraw_surface7_vtbl;
     surface->IDirectDrawSurface4_iface.lpVtbl = &ddraw_surface4_vtbl;
     surface->IDirectDrawSurface3_iface.lpVtbl = &ddraw_surface3_vtbl;
-    surface->IDirectDrawGammaControl_vtbl = &ddraw_gamma_control_vtbl;
+    surface->IDirectDrawGammaControl_iface.lpVtbl = &ddraw_gamma_control_vtbl;
     surface->IDirect3DTexture2_vtbl = &d3d_texture2_vtbl;
     surface->IDirect3DTexture_vtbl = &d3d_texture1_vtbl;
     surface->ref = 1;




More information about the wine-cvs mailing list