wineaudioio.drv: Standardize the COM usage in audio.c.

Michael Stefaniuc mstefani at redhat.de
Tue Dec 7 18:10:25 CST 2010


---
Not tested as I cannot due to the lack of such a system.



 dlls/wineaudioio.drv/audio.c |   34 ++++++++++++++++++++++------------
 1 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/dlls/wineaudioio.drv/audio.c b/dlls/wineaudioio.drv/audio.c
index 471b6a0..b7db56e 100644
--- a/dlls/wineaudioio.drv/audio.c
+++ b/dlls/wineaudioio.drv/audio.c
@@ -1233,7 +1233,7 @@ typedef struct IDsDriverBufferImpl IDsDriverBufferImpl;
 struct IDsDriverImpl
 {
     /* IUnknown fields */
-    const IDsDriverVtbl *lpVtbl;
+    IDsDriver           IDsDriver_iface;
     LONG		ref;
     /* IDsDriverImpl fields */
     UINT		wDevID;
@@ -1243,13 +1243,23 @@ struct IDsDriverImpl
 struct IDsDriverBufferImpl
 {
     /* IUnknown fields */
-    const IDsDriverBufferVtbl *lpVtbl;
+    IDsDriverBuffer     IDsDriverBuffer_iface;
     LONG		ref;
     /* IDsDriverBufferImpl fields */
     IDsDriverImpl*	drv;
     DWORD		buflen;
 };
 
+static inline IDsDriverImpl *impl_from_IDsDriver(IDsDriver *iface)
+{
+    return CONTAINING_RECORD(iface, IDsDriverImpl, IDsDriver_iface);
+}
+
+static inline IDsDriverBufferImpl *impl_from_IDsDriverBuffer(IDsDriverBuffer *iface)
+{
+    return CONTAINING_RECORD(iface, IDsDriverBufferImpl, IDsDriverBuffer_iface);
+}
+
 static HRESULT DSDB_MapPrimary(IDsDriverBufferImpl *dsdb)
 {
     WINE_WAVEOUT *wwo = &(WOutDev[dsdb->drv->wDevID]);
@@ -1291,13 +1301,13 @@ static HRESULT WINAPI IDsDriverBufferImpl_QueryInterface(PIDSDRIVERBUFFER iface,
 
 static ULONG WINAPI IDsDriverBufferImpl_AddRef(PIDSDRIVERBUFFER iface)
 {
-    IDsDriverBufferImpl *This = (IDsDriverBufferImpl *)iface;
+    IDsDriverBufferImpl *This = impl_from_IDsDriverBuffer(iface);
     return InterlockedIncrement(&This->ref);
 }
 
 static ULONG WINAPI IDsDriverBufferImpl_Release(PIDSDRIVERBUFFER iface)
 {
-    IDsDriverBufferImpl *This = (IDsDriverBufferImpl *)iface;
+    IDsDriverBufferImpl *This = impl_from_IDsDriverBuffer(iface);
     ULONG refCount = InterlockedDecrement(&This->ref);
 
     if (refCount)
@@ -1370,7 +1380,7 @@ static HRESULT WINAPI IDsDriverBufferImpl_SetPosition(PIDSDRIVERBUFFER iface, DW
 static HRESULT WINAPI IDsDriverBufferImpl_GetPosition(PIDSDRIVERBUFFER iface,
 						      LPDWORD lpdwPlay, LPDWORD lpdwWrite)
 {
-    IDsDriverBufferImpl *This = (IDsDriverBufferImpl *)iface;
+    IDsDriverBufferImpl *This = impl_from_IDsDriverBuffer(iface);
 #if 0
     count_info info;
 #endif
@@ -1450,13 +1460,13 @@ static HRESULT WINAPI IDsDriverImpl_QueryInterface(PIDSDRIVER iface, REFIID riid
 
 static ULONG WINAPI IDsDriverImpl_AddRef(PIDSDRIVER iface)
 {
-    IDsDriverImpl *This = (IDsDriverImpl *)iface;
+    IDsDriverImpl *This = impl_from_IDsDriver(iface);
     return InterlockedIncrement(&This->ref);
 }
 
 static ULONG WINAPI IDsDriverImpl_Release(PIDSDRIVER iface)
 {
-    IDsDriverImpl *This = (IDsDriverImpl *)iface;
+    IDsDriverImpl *This = impl_from_IDsDriver(iface);
     ULONG refCount = InterlockedDecrement(&This->ref);
 
     if (refCount)
@@ -1467,7 +1477,7 @@ static ULONG WINAPI IDsDriverImpl_Release(PIDSDRIVER iface)
 
 static HRESULT WINAPI IDsDriverImpl_GetDriverDesc(PIDSDRIVER iface, PDSDRIVERDESC pDesc)
 {
-    IDsDriverImpl *This = (IDsDriverImpl *)iface;
+    IDsDriverImpl *This = impl_from_IDsDriver(iface);
     TRACE("(%p,%p)\n",iface,pDesc);
     pDesc->dwFlags = DSDDESC_DOMMSYSTEMOPEN | DSDDESC_DOMMSYSTEMSETFORMAT |
 	DSDDESC_USESYSTEMMEMORY | DSDDESC_DONTNEEDPRIMARYLOCK;
@@ -1505,7 +1515,7 @@ static HRESULT WINAPI IDsDriverImpl_Open(PIDSDRIVER iface)
 
 static HRESULT WINAPI IDsDriverImpl_Close(PIDSDRIVER iface)
 {
-    IDsDriverImpl *This = (IDsDriverImpl *)iface;
+    IDsDriverImpl *This = impl_from_IDsDriver(iface);
     TRACE("(%p)\n",iface);
     if (This->primary) {
 	ERR("problem with DirectSound: primary not released\n");
@@ -1537,7 +1547,7 @@ static HRESULT WINAPI IDsDriverImpl_CreateSoundBuffer(PIDSDRIVER iface,
 						      LPBYTE *ppbBuffer,
 						      LPVOID *ppvObj)
 {
-    IDsDriverImpl *This = (IDsDriverImpl *)iface;
+    IDsDriverImpl *This = impl_from_IDsDriver(iface);
     IDsDriverBufferImpl** ippdsdb = (IDsDriverBufferImpl**)ppvObj;
     HRESULT err;
 #if 0
@@ -1557,7 +1567,7 @@ static HRESULT WINAPI IDsDriverImpl_CreateSoundBuffer(PIDSDRIVER iface,
     *ippdsdb = HeapAlloc(GetProcessHeap(),0,sizeof(IDsDriverBufferImpl));
     if (*ippdsdb == NULL)
 	return DSERR_OUTOFMEMORY;
-    (*ippdsdb)->lpVtbl  = &dsdbvt;
+    (*ippdsdb)->IDsDriverBuffer_iface.lpVtbl = &dsdbvt;
     (*ippdsdb)->ref	= 1;
     (*ippdsdb)->drv	= This;
 
@@ -1637,7 +1647,7 @@ static DWORD wodDsCreate(UINT wDevID, PIDSDRIVER* drv)
     *idrv = HeapAlloc(GetProcessHeap(),0,sizeof(IDsDriverImpl));
     if (!*idrv)
 	return MMSYSERR_NOMEM;
-    (*idrv)->lpVtbl	= &dsdvt;
+    (*idrv)->IDsDriver_iface.lpVtbl = &dsdvt;
     (*idrv)->ref	= 1;
 
     (*idrv)->wDevID	= wDevID;
-- 
1.7.3.2



More information about the wine-patches mailing list