[PATCH 1/4] dmime: COM cleanup for IDirectMusicPerformance8.

Michael Stefaniuc mstefani at redhat.de
Sun Apr 1 17:03:00 CDT 2012


---
 dlls/dmime/dmime_private.h |    2 +-
 dlls/dmime/performance.c   |  409 ++++++++++++++++++++++++++++++--------------
 2 files changed, 278 insertions(+), 133 deletions(-)

diff --git a/dlls/dmime/dmime_private.h b/dlls/dmime/dmime_private.h
index 15889fb..95c3324 100644
--- a/dlls/dmime/dmime_private.h
+++ b/dlls/dmime/dmime_private.h
@@ -128,7 +128,7 @@ typedef struct DMUSIC_PRIVATE_PCHANNEL_ {
  */
 struct IDirectMusicPerformance8Impl {
   /* IUnknown fields */
-  const IDirectMusicPerformance8Vtbl *lpVtbl;
+  IDirectMusicPerformance8 IDirectMusicPerformance8_iface;
   LONG                   ref;
 
   /* IDirectMusicPerformanceImpl fields */
diff --git a/dlls/dmime/performance.c b/dlls/dmime/performance.c
index d847d8e..0b4bf4c 100644
--- a/dlls/dmime/performance.c
+++ b/dlls/dmime/performance.c
@@ -83,7 +83,7 @@ static DWORD WINAPI ProcessMsgThread(LPVOID lpParam) {
     timeOut = INFINITE;
 
     EnterCriticalSection(&This->safe);
-    hr = IDirectMusicPerformance8_GetTime((IDirectMusicPerformance8*) This, &rtCurTime, NULL);
+    hr = IDirectMusicPerformance8_GetTime(&This->IDirectMusicPerformance8_iface, &rtCurTime, NULL);
     if (FAILED(hr)) {
       goto outrefresh;
     }
@@ -161,26 +161,33 @@ static BOOL PostMessageToProcessMsgThread(IDirectMusicPerformance8Impl* This, UI
   return PostThreadMessageA(This->procThreadId, iMsg, 0, 0);
 }
 
+static inline IDirectMusicPerformance8Impl *impl_from_IDirectMusicPerformance8(IDirectMusicPerformance8 *iface)
+{
+    return CONTAINING_RECORD(iface, IDirectMusicPerformance8Impl, IDirectMusicPerformance8_iface);
+}
+
 /* IDirectMusicPerformance8 IUnknown part: */
-static HRESULT WINAPI IDirectMusicPerformance8Impl_QueryInterface (LPDIRECTMUSICPERFORMANCE8 iface, REFIID riid, LPVOID *ppobj) {
-  IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
-  TRACE("(%p, %s,%p)\n", This, debugstr_dmguid(riid), ppobj);
+static HRESULT WINAPI IDirectMusicPerformance8Impl_QueryInterface(IDirectMusicPerformance8 *iface,
+        REFIID riid, void **ppv)
+{
+  TRACE("(%p, %s,%p)\n", iface, debugstr_dmguid(riid), ppv);
 
-  if (IsEqualIID (riid, &IID_IUnknown) || 
+  if (IsEqualIID (riid, &IID_IUnknown) ||
       IsEqualIID (riid, &IID_IDirectMusicPerformance) ||
       IsEqualIID (riid, &IID_IDirectMusicPerformance2) ||
       IsEqualIID (riid, &IID_IDirectMusicPerformance8)) {
+    *ppv = iface;
     IUnknown_AddRef(iface);
-    *ppobj = This;
     return S_OK;
   }
-	
-  WARN("(%p, %s,%p): not found\n", This, debugstr_dmguid(riid), ppobj);
+
+  WARN("(%p, %s,%p): not found\n", iface, debugstr_dmguid(riid), ppv);
   return E_NOINTERFACE;
 }
 
-static ULONG WINAPI IDirectMusicPerformance8Impl_AddRef (LPDIRECTMUSICPERFORMANCE8 iface) {
-  IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static ULONG WINAPI IDirectMusicPerformance8Impl_AddRef(IDirectMusicPerformance8 *iface)
+{
+  IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
   ULONG ref = InterlockedIncrement(&This->ref);
 
   TRACE("(%p): AddRef from %d\n", This, ref - 1);
@@ -190,9 +197,11 @@ static ULONG WINAPI IDirectMusicPerformance8Impl_AddRef (LPDIRECTMUSICPERFORMANC
   return ref;
 }
 
-static ULONG WINAPI IDirectMusicPerformance8Impl_Release (LPDIRECTMUSICPERFORMANCE8 iface) {
-  IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static ULONG WINAPI IDirectMusicPerformance8Impl_Release(IDirectMusicPerformance8 *iface)
+{
+  IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
   ULONG ref = InterlockedDecrement(&This->ref);
+
   TRACE("(%p): ReleaseRef to %d\n", This, ref);
   
   if (ref == 0) {
@@ -207,8 +216,10 @@ static ULONG WINAPI IDirectMusicPerformance8Impl_Release (LPDIRECTMUSICPERFORMAN
 }
 
 /* IDirectMusicPerformanceImpl IDirectMusicPerformance Interface part: */
-static HRESULT WINAPI IDirectMusicPerformance8Impl_Init (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusic** ppDirectMusic, LPDIRECTSOUND pDirectSound, HWND hWnd) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_Init(IDirectMusicPerformance8 *iface,
+        IDirectMusic **ppDirectMusic, IDirectSound *pDirectSound, HWND hWnd)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
 
 	FIXME("(iface = %p, dmusic = %p, dsound = %p, hwnd = %p)\n", This, ppDirectMusic, pDirectSound, hWnd);
  	if (This->pDirectMusic || This->pDirectSound)
@@ -252,8 +263,12 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_Init (LPDIRECTMUSICPERFORMANC
     return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_PlaySegment (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicSegment* pSegment, DWORD dwFlags, __int64 i64StartTime, IDirectMusicSegmentState** ppSegmentState) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_PlaySegment(IDirectMusicPerformance8 *iface,
+        IDirectMusicSegment *pSegment, DWORD dwFlags, __int64 i64StartTime,
+        IDirectMusicSegmentState **ppSegmentState)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, %p, %d, 0x%s, %p): stub\n", This, pSegment, dwFlags,
 	    wine_dbgstr_longlong(i64StartTime), ppSegmentState);
 	if (ppSegmentState)
@@ -261,27 +276,40 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_PlaySegment (LPDIRECTMUSICPER
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_Stop (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicSegment* pSegment, IDirectMusicSegmentState* pSegmentState, MUSIC_TIME mtTime, DWORD dwFlags) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_Stop(IDirectMusicPerformance8 *iface,
+        IDirectMusicSegment *pSegment, IDirectMusicSegmentState *pSegmentState, MUSIC_TIME mtTime,
+        DWORD dwFlags)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, %p, %p, %d, %d): stub\n", This, pSegment, pSegmentState, mtTime, dwFlags);
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_GetSegmentState (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicSegmentState** ppSegmentState, MUSIC_TIME mtTime) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_GetSegmentState(IDirectMusicPerformance8 *iface,
+        IDirectMusicSegmentState **ppSegmentState, MUSIC_TIME mtTime)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p,%p, %d): stub\n", This, ppSegmentState, mtTime);
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_SetPrepareTime (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwMilliSeconds) {
-  IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_SetPrepareTime(IDirectMusicPerformance8 *iface,
+        DWORD dwMilliSeconds)
+{
+  IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
   TRACE("(%p, %d)\n", This, dwMilliSeconds);
   This->dwPrepareTime = dwMilliSeconds;
   return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_GetPrepareTime (LPDIRECTMUSICPERFORMANCE8 iface, DWORD* pdwMilliSeconds) {
-  IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_GetPrepareTime(IDirectMusicPerformance8 *iface,
+        DWORD *pdwMilliSeconds)
+{
+  IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
   TRACE("(%p, %p)\n", This, pdwMilliSeconds);
   if (NULL == pdwMilliSeconds) {
     return E_POINTER;
@@ -290,15 +318,21 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_GetPrepareTime (LPDIRECTMUSIC
   return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_SetBumperLength (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwMilliSeconds) {
-  IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_SetBumperLength(IDirectMusicPerformance8 *iface,
+        DWORD dwMilliSeconds)
+{
+  IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
   TRACE("(%p, %d)\n", This, dwMilliSeconds);
   This->dwBumperLength =  dwMilliSeconds;
   return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_GetBumperLength (LPDIRECTMUSICPERFORMANCE8 iface, DWORD* pdwMilliSeconds) {
-  IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_GetBumperLength(IDirectMusicPerformance8 *iface,
+        DWORD *pdwMilliSeconds)
+{
+  IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
   TRACE("(%p, %p)\n", This, pdwMilliSeconds);
   if (NULL == pdwMilliSeconds) {
     return E_POINTER;
@@ -307,8 +341,10 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_GetBumperLength (LPDIRECTMUSI
   return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_SendPMsg (LPDIRECTMUSICPERFORMANCE8 iface, DMUS_PMSG* pPMSG) {
-  IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_SendPMsg(IDirectMusicPerformance8 *iface,
+        DMUS_PMSG *pPMSG)
+{
+  IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
   DMUS_PMSGItem* pItem = NULL;
   DMUS_PMSGItem* it = NULL;
   DMUS_PMSGItem* prev_it = NULL;
@@ -360,26 +396,37 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_SendPMsg (LPDIRECTMUSICPERFOR
   return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_MusicToReferenceTime (LPDIRECTMUSICPERFORMANCE8 iface, MUSIC_TIME mtTime, REFERENCE_TIME* prtTime) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_MusicToReferenceTime(IDirectMusicPerformance8 *iface,
+        MUSIC_TIME mtTime, REFERENCE_TIME *prtTime)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, %d, %p): stub\n", This, mtTime, prtTime);
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_ReferenceToMusicTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME rtTime, MUSIC_TIME* pmtTime) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_ReferenceToMusicTime(IDirectMusicPerformance8 *iface,
+        REFERENCE_TIME rtTime, MUSIC_TIME *pmtTime)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, 0x%s, %p): stub\n", This, wine_dbgstr_longlong(rtTime), pmtTime);
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_IsPlaying (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicSegment* pSegment, IDirectMusicSegmentState* pSegState) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_IsPlaying(IDirectMusicPerformance8 *iface,
+        IDirectMusicSegment *pSegment, IDirectMusicSegmentState *pSegState)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, %p, %p): stub\n", This, pSegment, pSegState);
 	return S_FALSE;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_GetTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME* prtNow, MUSIC_TIME* pmtNow) {
-  IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_GetTime(IDirectMusicPerformance8 *iface,
+        REFERENCE_TIME *prtNow, MUSIC_TIME *pmtNow)
+{
+  IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
   HRESULT hr = S_OK;
   REFERENCE_TIME rtCur = 0;
 
@@ -398,8 +445,10 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_GetTime (LPDIRECTMUSICPERFORM
   return hr;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_AllocPMsg (LPDIRECTMUSICPERFORMANCE8 iface, ULONG cb, DMUS_PMSG** ppPMSG) {
-  IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_AllocPMsg(IDirectMusicPerformance8 *iface,
+        ULONG cb, DMUS_PMSG **ppPMSG)
+{
+  IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
   DMUS_PMSGItem* pItem = NULL;
   
   FIXME("(%p, %d, %p): stub\n", This, cb, ppPMSG);
@@ -419,8 +468,10 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_AllocPMsg (LPDIRECTMUSICPERFO
   return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_FreePMsg (LPDIRECTMUSICPERFORMANCE8 iface, DMUS_PMSG* pPMSG) {
-  IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_FreePMsg(IDirectMusicPerformance8 *iface,
+        DMUS_PMSG *pPMSG)
+{
+  IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
   DMUS_PMSGItem* pItem = NULL;
   
   FIXME("(%p, %p): stub\n", This, pPMSG);
@@ -446,8 +497,11 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_FreePMsg (LPDIRECTMUSICPERFOR
   return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_GetGraph (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicGraph** ppGraph) {
-  IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_GetGraph(IDirectMusicPerformance8 *iface,
+        IDirectMusicGraph **ppGraph)
+{
+  IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
   FIXME("(%p, %p): to check\n", This, ppGraph);
   if (NULL != This->pToolGraph) {
     *ppGraph = This->pToolGraph;
@@ -458,9 +512,11 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_GetGraph (LPDIRECTMUSICPERFOR
   return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_SetGraph (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicGraph* pGraph) {
-  IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
-  
+static HRESULT WINAPI IDirectMusicPerformance8Impl_SetGraph(IDirectMusicPerformance8 *iface,
+        IDirectMusicGraph *pGraph)
+{
+  IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
   FIXME("(%p, %p): to check\n", This, pGraph);
   
   if (NULL != This->pToolGraph) {
@@ -474,18 +530,22 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_SetGraph (LPDIRECTMUSICPERFOR
   return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_SetNotificationHandle (LPDIRECTMUSICPERFORMANCE8 iface, HANDLE hNotification, REFERENCE_TIME rtMinimum) {
-  IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_SetNotificationHandle(IDirectMusicPerformance8 *iface,
+        HANDLE hNotification, REFERENCE_TIME rtMinimum)
+{
+  IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
   FIXME("(%p, %p, 0x%s): stub\n", This, hNotification, wine_dbgstr_longlong(rtMinimum));
   This->hNotification = hNotification;
   if (rtMinimum) This->rtMinimum = rtMinimum;
   return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_GetNotificationPMsg (LPDIRECTMUSICPERFORMANCE8 iface, DMUS_NOTIFICATION_PMSG** ppNotificationPMsg) {
-  IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
-  
-  
+static HRESULT WINAPI IDirectMusicPerformance8Impl_GetNotificationPMsg(IDirectMusicPerformance8 *iface,
+        DMUS_NOTIFICATION_PMSG **ppNotificationPMsg)
+{
+  IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
   FIXME("(%p, %p): stub\n", This, ppNotificationPMsg);
   if (NULL == ppNotificationPMsg) {
     return E_POINTER;
@@ -497,21 +557,30 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_GetNotificationPMsg (LPDIRECT
   /*return S_OK;*/
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_AddNotificationType (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidNotificationType) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_AddNotificationType(IDirectMusicPerformance8 *iface,
+        REFGUID rguidNotificationType)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, %s): stub\n", This, debugstr_dmguid(rguidNotificationType));
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_RemoveNotificationType (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidNotificationType) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_RemoveNotificationType(IDirectMusicPerformance8 *iface,
+        REFGUID rguidNotificationType)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, %s): stub\n", This, debugstr_dmguid(rguidNotificationType));
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_AddPort (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicPort* pPort) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_AddPort(IDirectMusicPerformance8 *iface,
+        IDirectMusicPort *pPort)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
 	HRESULT hr = E_FAIL;
+
 	FIXME("(%p, %p): stub\n", This, pPort);
 	if (!This->pDirectMusic || !This->pDirectSound) return DMUS_E_NOT_INIT;
 	if (NULL == pPort) {
@@ -549,16 +618,21 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_AddPort (LPDIRECTMUSICPERFORM
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_RemovePort (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicPort* pPort) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_RemovePort(IDirectMusicPerformance8 *iface,
+        IDirectMusicPort *pPort)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, %p): stub\n", This, pPort);
 	IDirectMusicPort_Release (pPort);
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_AssignPChannelBlock (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwBlockNum, IDirectMusicPort* pPort, DWORD dwGroup) {
+static HRESULT WINAPI IDirectMusicPerformance8Impl_AssignPChannelBlock(IDirectMusicPerformance8 *iface,
+        DWORD dwBlockNum, IDirectMusicPort *pPort, DWORD dwGroup)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
 	int i, j, range /* min value in range */;
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
 
 	FIXME("(%p, %d, %p, %d): semi-stub\n", This, dwBlockNum, pPort, dwGroup-1);
 	if (NULL == pPort) return E_POINTER;
@@ -577,8 +651,10 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_AssignPChannelBlock (LPDIRECT
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_AssignPChannel (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwPChannel, IDirectMusicPort* pPort, DWORD dwGroup, DWORD dwMChannel) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_AssignPChannel(IDirectMusicPerformance8 *iface,
+        DWORD dwPChannel, IDirectMusicPort *pPort, DWORD dwGroup, DWORD dwMChannel)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
 
 	TRACE("(%p, %d, %p, %d, %d)\n", This, dwPChannel, pPort, dwGroup, dwMChannel);
 	if (NULL == pPort) return E_POINTER;
@@ -589,8 +665,10 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_AssignPChannel (LPDIRECTMUSIC
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_PChannelInfo (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwPChannel, IDirectMusicPort** ppPort, DWORD* pdwGroup, DWORD* pdwMChannel) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_PChannelInfo(IDirectMusicPerformance8 *iface,
+        DWORD dwPChannel, IDirectMusicPort **ppPort, DWORD *pdwGroup, DWORD *pdwMChannel)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
 	DMUS_PORTPARAMS8 dmusportparams;
 	GUID def;
 
@@ -604,32 +682,49 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_PChannelInfo (LPDIRECTMUSICPE
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_DownloadInstrument (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicInstrument* pInst, DWORD dwPChannel, IDirectMusicDownloadedInstrument** ppDownInst, DMUS_NOTERANGE* pNoteRanges, DWORD dwNumNoteRanges, IDirectMusicPort** ppPort, DWORD* pdwGroup, DWORD* pdwMChannel) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_DownloadInstrument(IDirectMusicPerformance8 *iface,
+        IDirectMusicInstrument *pInst, DWORD dwPChannel,
+        IDirectMusicDownloadedInstrument **ppDownInst, DMUS_NOTERANGE *pNoteRanges,
+        DWORD dwNumNoteRanges, IDirectMusicPort **ppPort, DWORD *pdwGroup, DWORD *pdwMChannel)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, %p, %d, %p, %p, %d, %p, %p, %p): stub\n", This, pInst, dwPChannel, ppDownInst, pNoteRanges, dwNumNoteRanges, ppPort, pdwGroup, pdwMChannel);
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_Invalidate (LPDIRECTMUSICPERFORMANCE8 iface, MUSIC_TIME mtTime, DWORD dwFlags) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_Invalidate(IDirectMusicPerformance8 *iface,
+        MUSIC_TIME mtTime, DWORD dwFlags)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, %d, %d): stub\n", This, mtTime, dwFlags);
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_GetParam (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_GetParam(IDirectMusicPerformance8 *iface,
+        REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime,
+        MUSIC_TIME *pmtNext, void *pParam)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, %s, %d, %d, %d, %p, %p): stub\n", This, debugstr_dmguid(rguidType), dwGroupBits, dwIndex, mtTime, pmtNext, pParam);
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_SetParam (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void* pParam) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_SetParam(IDirectMusicPerformance8 *iface,
+        REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, void *pParam)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, %s, %d, %d, %d, %p): stub\n", This, debugstr_dmguid(rguidType), dwGroupBits, dwIndex, mtTime, pParam);
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_GetGlobalParam (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, void* pParam, DWORD dwSize) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_GetGlobalParam(IDirectMusicPerformance8 *iface,
+        REFGUID rguidType, void *pParam, DWORD dwSize)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
 
 	TRACE("(%p, %s, %p, %d): stub\n", This, debugstr_dmguid(rguidType), pParam, dwSize);
 	
@@ -645,8 +740,10 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_GetGlobalParam (LPDIRECTMUSIC
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_SetGlobalParam (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, void* pParam, DWORD dwSize) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_SetGlobalParam(IDirectMusicPerformance8 *iface,
+        REFGUID rguidType, void *pParam, DWORD dwSize)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
 
 	TRACE("(%p, %s, %p, %d)\n", This, debugstr_dmguid(rguidType), pParam, dwSize);
 	
@@ -670,27 +767,39 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_SetGlobalParam (LPDIRECTMUSIC
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_GetLatencyTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME* prtTime) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_GetLatencyTime(IDirectMusicPerformance8 *iface,
+        REFERENCE_TIME *prtTime)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	TRACE("(%p, %p): stub\n", This, prtTime);
 	*prtTime = This->rtLatencyTime;
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_GetQueueTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME* prtTime) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_GetQueueTime(IDirectMusicPerformance8 *iface,
+        REFERENCE_TIME *prtTime)
+
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, %p): stub\n", This, prtTime);
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_AdjustTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME rtAmount) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_AdjustTime(IDirectMusicPerformance8 *iface,
+        REFERENCE_TIME rtAmount)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, 0x%s): stub\n", This, wine_dbgstr_longlong(rtAmount));
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_CloseDown (LPDIRECTMUSICPERFORMANCE8 iface) {
-  IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_CloseDown(IDirectMusicPerformance8 *iface)
+{
+  IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
   FIXME("(%p): stub\n", This);
   if (PostMessageToProcessMsgThread(This, PROCESSMSG_EXIT)) {
     WaitForSingleObject(This->procThread, INFINITE);
@@ -708,51 +817,65 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_CloseDown (LPDIRECTMUSICPERFO
   return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_GetResolvedTime (LPDIRECTMUSICPERFORMANCE8 iface, REFERENCE_TIME rtTime, REFERENCE_TIME* prtResolved, DWORD dwTimeResolveFlags) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_GetResolvedTime(IDirectMusicPerformance8 *iface,
+        REFERENCE_TIME rtTime, REFERENCE_TIME *prtResolved, DWORD dwTimeResolveFlags)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, 0x%s, %p, %d): stub\n", This, wine_dbgstr_longlong(rtTime),
 	    prtResolved, dwTimeResolveFlags);
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_MIDIToMusic (LPDIRECTMUSICPERFORMANCE8 iface, BYTE bMIDIValue, DMUS_CHORD_KEY* pChord, BYTE bPlayMode, BYTE bChordLevel, WORD* pwMusicValue) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_MIDIToMusic(IDirectMusicPerformance8 *iface,
+        BYTE bMIDIValue, DMUS_CHORD_KEY *pChord, BYTE bPlayMode, BYTE bChordLevel,
+        WORD *pwMusicValue)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, %d, %p, %d, %d, %p): stub\n", This, bMIDIValue, pChord, bPlayMode, bChordLevel, pwMusicValue);
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_MusicToMIDI (LPDIRECTMUSICPERFORMANCE8 iface, WORD wMusicValue, DMUS_CHORD_KEY* pChord, BYTE bPlayMode, BYTE bChordLevel, BYTE* pbMIDIValue) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_MusicToMIDI(IDirectMusicPerformance8 *iface,
+        WORD wMusicValue, DMUS_CHORD_KEY *pChord, BYTE bPlayMode, BYTE bChordLevel,
+        BYTE *pbMIDIValue)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, %d, %p, %d, %d, %p): stub\n", This, wMusicValue, pChord, bPlayMode, bChordLevel, pbMIDIValue);
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_TimeToRhythm (LPDIRECTMUSICPERFORMANCE8 iface, MUSIC_TIME mtTime, DMUS_TIMESIGNATURE* pTimeSig, WORD* pwMeasure, BYTE* pbBeat, BYTE* pbGrid, short* pnOffset) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_TimeToRhythm(IDirectMusicPerformance8 *iface,
+        MUSIC_TIME mtTime, DMUS_TIMESIGNATURE *pTimeSig, WORD *pwMeasure, BYTE *pbBeat,
+        BYTE *pbGrid, short *pnOffset)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, %d, %p, %p, %p, %p, %p): stub\n", This, mtTime, pTimeSig, pwMeasure, pbBeat, pbGrid, pnOffset);
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_RhythmToTime (LPDIRECTMUSICPERFORMANCE8 iface, WORD wMeasure, BYTE bBeat, BYTE bGrid, short nOffset, DMUS_TIMESIGNATURE* pTimeSig, MUSIC_TIME* pmtTime) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_RhythmToTime(IDirectMusicPerformance8 *iface,
+        WORD wMeasure, BYTE bBeat, BYTE bGrid, short nOffset, DMUS_TIMESIGNATURE *pTimeSig,
+        MUSIC_TIME *pmtTime)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, %d, %d, %d, %i, %p, %p): stub\n", This, wMeasure, bBeat, bGrid, nOffset, pTimeSig, pmtTime);
 	return S_OK;
 }
 
 /* IDirectMusicPerformance8 Interface part follow: */
-static HRESULT WINAPI IDirectMusicPerformance8Impl_InitAudio (LPDIRECTMUSICPERFORMANCE8 iface, 
-						      IDirectMusic** ppDirectMusic, 
-						      IDirectSound** ppDirectSound, 
-						      HWND hWnd, 
-						      DWORD dwDefaultPathType, 
-						      DWORD dwPChannelCount, 
-						      DWORD dwFlags, 
-						      DMUS_AUDIOPARAMS* pParams) {
-
+static HRESULT WINAPI IDirectMusicPerformance8Impl_InitAudio(IDirectMusicPerformance8 *iface,
+        IDirectMusic **ppDirectMusic, IDirectSound **ppDirectSound, HWND hWnd,
+        DWORD dwDefaultPathType, DWORD dwPChannelCount, DWORD dwFlags, DMUS_AUDIOPARAMS* pParams)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
 	IDirectSound* dsound = NULL;
 	HRESULT hr = S_OK;
-	
-        IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+
 	FIXME("(%p, %p, %p, %p, %x, %u, %x, %p): to check\n", This, ppDirectMusic, ppDirectSound, hWnd, dwDefaultPathType, dwPChannelCount, dwFlags, pParams);
 
 	if (This->pDirectMusic || This->pDirectSound)
@@ -797,8 +920,13 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_InitAudio (LPDIRECTMUSICPERFO
 	return hr;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_PlaySegmentEx (LPDIRECTMUSICPERFORMANCE8 iface, IUnknown* pSource, WCHAR* pwzSegmentName, IUnknown* pTransition, DWORD dwFlags, __int64 i64StartTime, IDirectMusicSegmentState** ppSegmentState, IUnknown* pFrom, IUnknown* pAudioPath) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_PlaySegmentEx(IDirectMusicPerformance8 *iface,
+        IUnknown *pSource, WCHAR *pwzSegmentName, IUnknown *pTransition, DWORD dwFlags,
+        __int64 i64StartTime, IDirectMusicSegmentState **ppSegmentState, IUnknown *pFrom,
+        IUnknown *pAudioPath)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, %p, %p, %p, %d, 0x%s, %p, %p, %p): stub\n", This, pSource, pwzSegmentName,
 	    pTransition, dwFlags, wine_dbgstr_longlong(i64StartTime), ppSegmentState, pFrom, pAudioPath);
 	if (ppSegmentState)
@@ -806,24 +934,32 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_PlaySegmentEx (LPDIRECTMUSICP
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_StopEx (LPDIRECTMUSICPERFORMANCE8 iface, IUnknown* pObjectToStop, __int64 i64StopTime, DWORD dwFlags) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_StopEx(IDirectMusicPerformance8 *iface,
+        IUnknown *pObjectToStop, __int64 i64StopTime, DWORD dwFlags)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, %p, 0x%s, %d): stub\n", This, pObjectToStop,
 	    wine_dbgstr_longlong(i64StopTime), dwFlags);
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_ClonePMsg (LPDIRECTMUSICPERFORMANCE8 iface, DMUS_PMSG* pSourcePMSG, DMUS_PMSG** ppCopyPMSG) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_ClonePMsg(IDirectMusicPerformance8 *iface,
+        DMUS_PMSG *pSourcePMSG, DMUS_PMSG **ppCopyPMSG)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
+
 	FIXME("(%p, %p, %p): stub\n", This, pSourcePMSG, ppCopyPMSG);
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_CreateAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, IUnknown* pSourceConfig, BOOL fActivate, IDirectMusicAudioPath** ppNewPath) {
+static HRESULT WINAPI IDirectMusicPerformance8Impl_CreateAudioPath(IDirectMusicPerformance8 *iface,
+        IUnknown *pSourceConfig, BOOL fActivate, IDirectMusicAudioPath **ppNewPath)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
 	IDirectMusicAudioPathImpl *default_path;
 	IDirectMusicAudioPath *pPath;
 
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
 	FIXME("(%p, %p, %d, %p): stub\n", This, pSourceConfig, fActivate, ppNewPath);
 
 	if (NULL == ppNewPath) {
@@ -832,7 +968,7 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_CreateAudioPath (LPDIRECTMUSI
 
 	DMUSIC_CreateDirectMusicAudioPathImpl (&IID_IDirectMusicAudioPath, (LPVOID*)&pPath, NULL);
 	default_path = (IDirectMusicAudioPathImpl*)((char*)(pPath) - offsetof(IDirectMusicAudioPathImpl,AudioPathVtbl));
-	default_path->pPerf = (IDirectMusicPerformance8*) This;
+        default_path->pPerf = &This->IDirectMusicPerformance8_iface;
 
 	/** TODO */
 	
@@ -841,7 +977,10 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_CreateAudioPath (LPDIRECTMUSI
 	return IDirectMusicAudioPath_Activate(*ppNewPath, fActivate);
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_CreateStandardAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, DWORD dwType, DWORD dwPChannelCount, BOOL fActivate, IDirectMusicAudioPath** ppNewPath) {
+static HRESULT WINAPI IDirectMusicPerformance8Impl_CreateStandardAudioPath(IDirectMusicPerformance8 *iface,
+        DWORD dwType, DWORD dwPChannelCount, BOOL fActivate, IDirectMusicAudioPath **ppNewPath)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
 	IDirectMusicAudioPathImpl *default_path;
 	IDirectMusicAudioPath *pPath;
 	DSBUFFERDESC desc;
@@ -849,8 +988,6 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_CreateStandardAudioPath (LPDI
 	LPDIRECTSOUNDBUFFER buffer;
 	HRESULT hr = S_OK;
 
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
-	
 	FIXME("(%p)->(%d, %d, %d, %p): semi-stub\n", This, dwType, dwPChannelCount, fActivate, ppNewPath);
 
 	if (NULL == ppNewPath) {
@@ -859,8 +996,8 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_CreateStandardAudioPath (LPDI
 	
 	DMUSIC_CreateDirectMusicAudioPathImpl (&IID_IDirectMusicAudioPath, (LPVOID*)&pPath, NULL);
 	default_path = (IDirectMusicAudioPathImpl*)((char*)(pPath) - offsetof(IDirectMusicAudioPathImpl,AudioPathVtbl));
-	default_path->pPerf = (IDirectMusicPerformance8*) This;
-	
+        default_path->pPerf = &This->IDirectMusicPerformance8_iface;
+
 	/* Secondary buffer description */
 	memset(&format, 0, sizeof(format));
 	format.wFormatTag = WAVE_FORMAT_PCM;
@@ -932,8 +1069,10 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_CreateStandardAudioPath (LPDI
 	return IDirectMusicAudioPath_Activate(*ppNewPath, fActivate);
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_SetDefaultAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicAudioPath* pAudioPath) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_SetDefaultAudioPath(IDirectMusicPerformance8 *iface,
+        IDirectMusicAudioPath *pAudioPath)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
 
 	FIXME("(%p, %p): semi-stub\n", This, pAudioPath);
 	if (NULL != This->pDefaultPath) {
@@ -944,14 +1083,16 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_SetDefaultAudioPath (LPDIRECT
 	This->pDefaultPath = pAudioPath;
 	if (NULL != This->pDefaultPath) {
 		IDirectMusicAudioPath_AddRef(This->pDefaultPath);
-		((IDirectMusicAudioPathImpl*) This->pDefaultPath)->pPerf = (IDirectMusicPerformance8*) This;	
+		((IDirectMusicAudioPathImpl*)This->pDefaultPath)->pPerf = &This->IDirectMusicPerformance8_iface;
 	}
-	
+
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_GetDefaultAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicAudioPath** ppAudioPath) {
-    IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_GetDefaultAudioPath(IDirectMusicPerformance8 *iface,
+        IDirectMusicAudioPath **ppAudioPath)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
 
 	FIXME("(%p, %p): semi-stub (%p)\n", This, ppAudioPath, This->pDefaultPath);
 
@@ -964,8 +1105,11 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_GetDefaultAudioPath (LPDIRECT
 	return S_OK;
 }
 
-static HRESULT WINAPI IDirectMusicPerformance8Impl_GetParamEx (LPDIRECTMUSICPERFORMANCE8 iface, REFGUID rguidType, DWORD dwTrackID, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime, MUSIC_TIME* pmtNext, void* pParam) {
-	IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface;
+static HRESULT WINAPI IDirectMusicPerformance8Impl_GetParamEx(IDirectMusicPerformance8 *iface,
+        REFGUID rguidType, DWORD dwTrackID, DWORD dwGroupBits, DWORD dwIndex, MUSIC_TIME mtTime,
+        MUSIC_TIME *pmtNext, void *pParam)
+{
+        IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
 
 	FIXME("(%p, %s, %d, %d, %d, %d, %p, %p): stub\n", This, debugstr_dmguid(rguidType), dwTrackID, dwGroupBits, dwIndex, mtTime, pmtNext, pParam);
 
@@ -1039,7 +1183,7 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicPerformanceImpl (LPCGUID lpcGUID, LPVOID
 		*ppobj = NULL;
 		return E_OUTOFMEMORY;
 	}
-	obj->lpVtbl = &DirectMusicPerformance8_Vtbl;
+        obj->IDirectMusicPerformance8_iface.lpVtbl = &DirectMusicPerformance8_Vtbl;
 	obj->ref = 0;  /* will be inited by QueryInterface */
 	obj->pDirectMusic = NULL;
 	obj->pDirectSound = NULL;
@@ -1050,5 +1194,6 @@ HRESULT WINAPI DMUSIC_CreateDirectMusicPerformanceImpl (LPCGUID lpcGUID, LPVOID
 	obj->rtLatencyTime  = 100;  /* 100ms TO FIX */
 	obj->dwBumperLength =   50; /* 50ms default */
 	obj->dwPrepareTime  = 1000; /* 1000ms default */
-	return IDirectMusicPerformance8Impl_QueryInterface ((LPDIRECTMUSICPERFORMANCE8)obj, lpcGUID, ppobj);
+        return IDirectMusicPerformance8Impl_QueryInterface(&obj->IDirectMusicPerformance8_iface,
+                                                           lpcGUID, ppobj);
 }
-- 
1.7.6.5



More information about the wine-patches mailing list