[PATCH 14/23] dsound: COM cleanup property sets

Maarten Lankhorst m.b.lankhorst at gmail.com
Fri Apr 8 07:11:34 CDT 2011


---
 dlls/dsound/dsound_private.h |   15 +--------------
 dlls/dsound/propset.c        |   29 ++++++++++++++++++++---------
 2 files changed, 21 insertions(+), 23 deletions(-)

diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h
index 542b997..e5ef75c 100644
--- a/dlls/dsound/dsound_private.h
+++ b/dlls/dsound/dsound_private.h
@@ -57,7 +57,6 @@ typedef struct IDirectSoundCaptureNotifyImpl IDirectSoundCaptureNotifyImpl;
 typedef struct IDirectSound3DListenerImpl    IDirectSound3DListenerImpl;
 typedef struct IDirectSound3DBufferImpl      IDirectSound3DBufferImpl;
 typedef struct IKsBufferPropertySetImpl      IKsBufferPropertySetImpl;
-typedef struct IKsPrivatePropertySetImpl     IKsPrivatePropertySetImpl;
 typedef struct PrimaryBufferImpl             PrimaryBufferImpl;
 typedef struct SecondaryBufferImpl           SecondaryBufferImpl;
 typedef struct DirectSoundDevice             DirectSoundDevice;
@@ -329,19 +328,7 @@ HRESULT IKsBufferPropertySetImpl_Create(
 HRESULT IKsBufferPropertySetImpl_Destroy(
     IKsBufferPropertySetImpl *piks);
 
-/*****************************************************************************
- *  IKsPrivatePropertySet implementation structure
- */
-struct IKsPrivatePropertySetImpl
-{
-    /* IUnknown fields */
-    const IKsPropertySetVtbl   *lpVtbl;
-    LONG 			ref;
-};
-
-HRESULT IKsPrivatePropertySetImpl_Create(
-    REFIID riid,
-    IKsPrivatePropertySetImpl **piks);
+HRESULT IKsPrivatePropertySetImpl_Create(REFIID riid, IKsPropertySet **piks);
 
 /*****************************************************************************
  * IDirectSound3DBuffer implementation structure
diff --git a/dlls/dsound/propset.c b/dlls/dsound/propset.c
index 04c7b58..f6c8091 100644
--- a/dlls/dsound/propset.c
+++ b/dlls/dsound/propset.c
@@ -44,6 +44,17 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(dsound);
 
+typedef struct IKsPrivatePropertySetImpl
+{
+    IKsPropertySet IKsPropertySet_iface;
+    LONG ref;
+} IKsPrivatePropertySetImpl;
+
+static IKsPrivatePropertySetImpl *impl_from_IKsPropertySet(IKsPropertySet *iface)
+{
+    return CONTAINING_RECORD(iface, IKsPrivatePropertySetImpl, IKsPropertySet_iface);
+}
+
 /*******************************************************************************
  *              IKsPrivatePropertySet
  */
@@ -54,7 +65,7 @@ static HRESULT WINAPI IKsPrivatePropertySetImpl_QueryInterface(
     REFIID riid,
     LPVOID *ppobj )
 {
-    IKsPrivatePropertySetImpl *This = (IKsPrivatePropertySetImpl *)iface;
+    IKsPrivatePropertySetImpl *This = impl_from_IKsPropertySet(iface);
     TRACE("(%p,%s,%p)\n",This,debugstr_guid(riid),ppobj);
 
     if (IsEqualIID(riid, &IID_IUnknown) ||
@@ -69,7 +80,7 @@ static HRESULT WINAPI IKsPrivatePropertySetImpl_QueryInterface(
 
 static ULONG WINAPI IKsPrivatePropertySetImpl_AddRef(LPKSPROPERTYSET iface)
 {
-    IKsPrivatePropertySetImpl *This = (IKsPrivatePropertySetImpl *)iface;
+    IKsPrivatePropertySetImpl *This = impl_from_IKsPropertySet(iface);
     ULONG ref = InterlockedIncrement(&(This->ref));
     TRACE("(%p) ref was %d\n", This, ref - 1);
     return ref;
@@ -77,7 +88,7 @@ static ULONG WINAPI IKsPrivatePropertySetImpl_AddRef(LPKSPROPERTYSET iface)
 
 static ULONG WINAPI IKsPrivatePropertySetImpl_Release(LPKSPROPERTYSET iface)
 {
-    IKsPrivatePropertySetImpl *This = (IKsPrivatePropertySetImpl *)iface;
+    IKsPrivatePropertySetImpl *This = impl_from_IKsPropertySet(iface);
     ULONG ref = InterlockedDecrement(&(This->ref));
     TRACE("(%p) ref was %d\n", This, ref + 1);
 
@@ -514,7 +525,7 @@ static HRESULT WINAPI IKsPrivatePropertySetImpl_Get(
     ULONG cbPropData,
     PULONG pcbReturned )
 {
-    IKsPrivatePropertySetImpl *This = (IKsPrivatePropertySetImpl *)iface;
+    IKsPrivatePropertySetImpl *This = impl_from_IKsPropertySet(iface);
     TRACE("(iface=%p,guidPropSet=%s,dwPropID=%d,pInstanceData=%p,cbInstanceData=%d,pPropData=%p,cbPropData=%d,pcbReturned=%p)\n",
           This,debugstr_guid(guidPropSet),dwPropID,pInstanceData,cbInstanceData,pPropData,cbPropData,pcbReturned);
 
@@ -561,7 +572,7 @@ static HRESULT WINAPI IKsPrivatePropertySetImpl_Set(
     LPVOID pPropData,
     ULONG cbPropData )
 {
-    IKsPrivatePropertySetImpl *This = (IKsPrivatePropertySetImpl *)iface;
+    IKsPrivatePropertySetImpl *This = impl_from_IKsPropertySet(iface);
 
     FIXME("(%p,%s,%d,%p,%d,%p,%d), stub!\n",This,debugstr_guid(guidPropSet),dwPropID,pInstanceData,cbInstanceData,pPropData,cbPropData);
     return E_PROP_ID_UNSUPPORTED;
@@ -573,7 +584,7 @@ static HRESULT WINAPI IKsPrivatePropertySetImpl_QuerySupport(
     ULONG dwPropID,
     PULONG pTypeSupport )
 {
-    IKsPrivatePropertySetImpl *This = (IKsPrivatePropertySetImpl *)iface;
+    IKsPrivatePropertySetImpl *This = impl_from_IKsPropertySet(iface);
     TRACE("(%p,%s,%d,%p)\n",This,debugstr_guid(guidPropSet),dwPropID,pTypeSupport);
 
     if ( IsEqualGUID( &DSPROPSETID_DirectSoundDevice, guidPropSet) ) {
@@ -624,7 +635,7 @@ static const IKsPropertySetVtbl ikspvt = {
 
 HRESULT IKsPrivatePropertySetImpl_Create(
     REFIID riid,
-    IKsPrivatePropertySetImpl **piks)
+    IKsPropertySet **piks)
 {
     IKsPrivatePropertySetImpl *iks;
     TRACE("(%s, %p)\n", debugstr_guid(riid), piks);
@@ -637,8 +648,8 @@ HRESULT IKsPrivatePropertySetImpl_Create(
 
     iks = HeapAlloc(GetProcessHeap(),0,sizeof(*iks));
     iks->ref = 1;
-    iks->lpVtbl = &ikspvt;
+    iks->IKsPropertySet_iface.lpVtbl = &ikspvt;
 
-    *piks = iks;
+    *piks = &iks->IKsPropertySet_iface;
     return S_OK;
 }
-- 
1.7.4.1


--------------020903010601090302060706--



More information about the wine-patches mailing list