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