- Release DSBuffer on AudioPath destruction.
- Semi stub for AudioPath Activate. - IDirectMusicPerformance8::CreateAudioPath stub. - Most of the IDirectMusicSegment8_[Set,Get]* (using header). - Load of Streamer IDirectMusicSegment8 header.
This commit is contained in:
parent
9e8d507c4f
commit
c77788b59f
|
@ -59,13 +59,16 @@ ULONG WINAPI IDirectMusicAudioPathImpl_IUnknown_AddRef (LPUNKNOWN iface) {
|
|||
}
|
||||
|
||||
ULONG WINAPI IDirectMusicAudioPathImpl_IUnknown_Release (LPUNKNOWN iface) {
|
||||
ICOM_THIS_MULTI(IDirectMusicAudioPathImpl, UnknownVtbl, iface);
|
||||
ULONG ref = --This->ref;
|
||||
TRACE("(%p): ReleaseRef to %ld\n", This, This->ref);
|
||||
if (ref == 0) {
|
||||
HeapFree(GetProcessHeap(), 0, This);
|
||||
}
|
||||
return ref;
|
||||
ICOM_THIS_MULTI(IDirectMusicAudioPathImpl, UnknownVtbl, iface);
|
||||
ULONG ref = --This->ref;
|
||||
TRACE("(%p): ReleaseRef to %ld\n", This, This->ref);
|
||||
if (ref == 0) {
|
||||
if (This->pDSBuffer) {
|
||||
IDirectSoundBuffer8_Release(This->pDSBuffer);
|
||||
}
|
||||
HeapFree(GetProcessHeap(), 0, This);
|
||||
}
|
||||
return ref;
|
||||
}
|
||||
|
||||
ICOM_VTABLE(IUnknown) DirectMusicAudioPath_Unknown_Vtbl = {
|
||||
|
@ -180,9 +183,17 @@ HRESULT WINAPI IDirectMusicAudioPathImpl_IDirectMusicAudioPath_GetObjectInPath (
|
|||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicAudioPathImpl_IDirectMusicAudioPath_Activate (LPDIRECTMUSICAUDIOPATH iface, BOOL fActivate) {
|
||||
ICOM_THIS_MULTI(IDirectMusicAudioPathImpl, AudioPathVtbl, iface);
|
||||
FIXME("(%p, %d): stub\n", This, fActivate);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicAudioPathImpl, AudioPathVtbl, iface);
|
||||
FIXME("(%p, %d): stub\n", This, fActivate);
|
||||
if (!fActivate) {
|
||||
if (!This->fActive) return S_OK;
|
||||
This->fActive = FALSE;
|
||||
} else {
|
||||
if (This->fActive) return S_OK;
|
||||
This->fActive = TRUE;
|
||||
IDirectSoundBuffer_Stop(This->pDSBuffer);
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicAudioPathImpl_IDirectMusicAudioPath_SetVolume (LPDIRECTMUSICAUDIOPATH iface, long lVolume, DWORD dwDuration) {
|
||||
|
|
|
@ -1116,6 +1116,22 @@ const char *debugstr_DMUS_OBJ_FLAGS (DWORD flagmask) {
|
|||
|
||||
/* dump whole DMUS_OBJECTDESC struct */
|
||||
const char *debugstr_DMUS_OBJECTDESC (LPDMUS_OBJECTDESC pDesc) {
|
||||
if (pDesc) {
|
||||
TRACE("DMUS_OBJECTDESC (%p):\n", pDesc);
|
||||
TRACE(" - dwSize = %ld\n", pDesc->dwSize);
|
||||
TRACE(" - dwValidData = %s\n", debugstr_DMUS_OBJ_FLAGS (pDesc->dwValidData));
|
||||
if (pDesc->dwValidData & DMUS_OBJ_NAME) TRACE(" - wszName = %s\n", debugstr_w(pDesc->wszName));
|
||||
if (pDesc->dwValidData & DMUS_OBJ_CLASS) TRACE(" - guidClass = %s\n", debugstr_dmguid(&pDesc->guidClass));
|
||||
if (pDesc->dwValidData & DMUS_OBJ_OBJECT) TRACE(" - guidObject = %s\n", debugstr_guid(&pDesc->guidObject));
|
||||
if (pDesc->dwValidData & DMUS_OBJ_DATE) TRACE(" - ftDate = FIXME\n");
|
||||
if (pDesc->dwValidData & DMUS_OBJ_VERSION) TRACE(" - vVersion = %s\n", debugstr_dmversion(&pDesc->vVersion));
|
||||
if (pDesc->dwValidData & DMUS_OBJ_CATEGORY) TRACE(" - wszCategory = %s\n", debugstr_w(pDesc->wszCategory));
|
||||
if (pDesc->dwValidData & DMUS_OBJ_FILENAME) TRACE(" - wszFileName = %s\n", debugstr_w(pDesc->wszFileName));
|
||||
if (pDesc->dwValidData & DMUS_OBJ_MEMORY) TRACE(" - llMemLength = %lli\n - pbMemData = %p\n", pDesc->llMemLength, pDesc->pbMemData);
|
||||
if (pDesc->dwValidData & DMUS_OBJ_STREAM) TRACE(" - pStream = %p\n", pDesc->pStream);
|
||||
} else {
|
||||
TRACE("(NULL)\n");
|
||||
}/*
|
||||
if (pDesc) {
|
||||
char buffer[1024] = "", *ptr = &buffer[0];
|
||||
|
||||
|
@ -1136,4 +1152,6 @@ const char *debugstr_DMUS_OBJECTDESC (LPDMUS_OBJECTDESC pDesc) {
|
|||
} else {
|
||||
return wine_dbg_sprintf("(NULL)");
|
||||
}
|
||||
*/
|
||||
return "X";
|
||||
}
|
||||
|
|
|
@ -264,7 +264,9 @@ struct IDirectMusicSegment8Impl {
|
|||
DWORD ref;
|
||||
|
||||
/* IDirectMusicSegment8Impl fields */
|
||||
LPDMUS_OBJECTDESC pDesc;
|
||||
LPDMUS_OBJECTDESC pDesc;
|
||||
DMUS_IO_SEGMENT_HEADER header;
|
||||
IDirectMusicGraph* pGraph;
|
||||
};
|
||||
|
||||
/* IUnknown: */
|
||||
|
@ -408,6 +410,8 @@ struct IDirectMusicAudioPathImpl {
|
|||
IDirectMusicGraph* pToolGraph;
|
||||
IDirectSoundBuffer* pDSBuffer;
|
||||
IDirectSoundBuffer* pPrimary;
|
||||
|
||||
BOOL fActive;
|
||||
};
|
||||
|
||||
/* IUnknown: */
|
||||
|
|
|
@ -418,6 +418,8 @@ HRESULT WINAPI IDirectMusicPerformance8Impl_GetGraph (LPDIRECTMUSICPERFORMANCE8
|
|||
if (NULL != This->pToolGraph) {
|
||||
*ppGraph = (LPDIRECTMUSICGRAPH) This->pToolGraph;
|
||||
IDirectMusicGraph_AddRef((LPDIRECTMUSICGRAPH) *ppGraph);
|
||||
} else {
|
||||
return E_FAIL;
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
|
@ -702,6 +704,7 @@ HRESULT WINAPI IDirectMusicPerformance8Impl_InitAudio (LPDIRECTMUSICPERFORMANCE8
|
|||
* TODO, how can i fill the struct
|
||||
* as seen at http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directX/htm/dmusaudioparams.asp
|
||||
*/
|
||||
memset(&This->pParams, 0, sizeof(DMUS_AUDIOPARAMS));
|
||||
This->pParams.dwSize = sizeof(DMUS_AUDIOPARAMS);
|
||||
This->pParams.fInitNow = FALSE;
|
||||
This->pParams.dwValidData = DMUS_AUDIOPARAMS_FEATURES | DMUS_AUDIOPARAMS_VOICES | DMUS_AUDIOPARAMS_SAMPLERATE | DMUS_AUDIOPARAMS_DEFAULTSYNTH;
|
||||
|
@ -736,9 +739,25 @@ HRESULT WINAPI IDirectMusicPerformance8Impl_ClonePMsg (LPDIRECTMUSICPERFORMANCE8
|
|||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicPerformance8Impl_CreateAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, IUnknown* pSourceConfig, BOOL fActivate, IDirectMusicAudioPath** ppNewPath) {
|
||||
IDirectMusicAudioPathImpl *default_path;
|
||||
IDirectMusicAudioPath *pPath;
|
||||
|
||||
ICOM_THIS(IDirectMusicPerformance8Impl,iface);
|
||||
FIXME("(%p, %p, %d, %p): stub\n", This, pSourceConfig, fActivate, ppNewPath);
|
||||
return S_OK;
|
||||
|
||||
if (NULL == ppNewPath) {
|
||||
return E_POINTER;
|
||||
}
|
||||
|
||||
DMUSIC_CreateDirectMusicAudioPathImpl (&IID_IDirectMusicAudioPath, (LPVOID*)&pPath, NULL);
|
||||
default_path = (IDirectMusicAudioPathImpl*)((char*)(pPath) - offsetof(IDirectMusicAudioPathImpl,AudioPathVtbl));
|
||||
default_path->pPerf = (IDirectMusicPerformance8*) This;
|
||||
|
||||
/** TODO */
|
||||
|
||||
*ppNewPath = (LPDIRECTMUSICAUDIOPATH) pPath;
|
||||
|
||||
return IDirectMusicAudioPathImpl_IDirectMusicAudioPath_Activate(*ppNewPath, fActivate);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -765,6 +784,7 @@ HRESULT WINAPI IDirectMusicPerformance8Impl_CreateStandardAudioPath (LPDIRECTMUS
|
|||
default_path->pPerf = (IDirectMusicPerformance8*) This;
|
||||
|
||||
/* Secondary buffer description */
|
||||
memset(&format, 0, sizeof(format));
|
||||
format.wFormatTag = WAVE_FORMAT_PCM;
|
||||
format.nChannels = 1;
|
||||
format.nSamplesPerSec = 44000;
|
||||
|
@ -773,6 +793,7 @@ HRESULT WINAPI IDirectMusicPerformance8Impl_CreateStandardAudioPath (LPDIRECTMUS
|
|||
format.wBitsPerSample = 16;
|
||||
format.cbSize = 0;
|
||||
|
||||
memset(&desc, 0, sizeof(desc));
|
||||
desc.dwSize = sizeof(desc);
|
||||
desc.dwFlags = DSBCAPS_CTRLFX | DSBCAPS_CTRLPAN | DSBCAPS_CTRLVOLUME | DSBCAPS_GLOBALFOCUS;
|
||||
desc.dwBufferBytes = DSBSIZE_MIN;
|
||||
|
@ -831,7 +852,7 @@ HRESULT WINAPI IDirectMusicPerformance8Impl_CreateStandardAudioPath (LPDIRECTMUS
|
|||
|
||||
TRACE(" returning IDirectMusicPerformance interface at %p.\n", *ppNewPath);
|
||||
|
||||
return S_OK;
|
||||
return IDirectMusicAudioPathImpl_IDirectMusicAudioPath_Activate(*ppNewPath, fActivate);
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicPerformance8Impl_SetDefaultAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicAudioPath* pAudioPath) {
|
||||
|
|
|
@ -71,104 +71,148 @@ ULONG WINAPI IDirectMusicSegment8Impl_IUnknown_Release (LPUNKNOWN iface) {
|
|||
}
|
||||
|
||||
ICOM_VTABLE(IUnknown) DirectMusicSegment8_Unknown_Vtbl = {
|
||||
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
|
||||
IDirectMusicSegment8Impl_IUnknown_QueryInterface,
|
||||
IDirectMusicSegment8Impl_IUnknown_AddRef,
|
||||
IDirectMusicSegment8Impl_IUnknown_Release
|
||||
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
|
||||
IDirectMusicSegment8Impl_IUnknown_QueryInterface,
|
||||
IDirectMusicSegment8Impl_IUnknown_AddRef,
|
||||
IDirectMusicSegment8Impl_IUnknown_Release
|
||||
};
|
||||
|
||||
/* IDirectMusicSegmentImpl IDirectMusicSegment part: */
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_QueryInterface (LPDIRECTMUSICSEGMENT8 iface, REFIID riid, LPVOID *ppobj) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
return IDirectMusicSegment8Impl_IUnknown_QueryInterface ((LPUNKNOWN)&This->UnknownVtbl, riid, ppobj);
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
return IDirectMusicSegment8Impl_IUnknown_QueryInterface ((LPUNKNOWN)&This->UnknownVtbl, riid, ppobj);
|
||||
}
|
||||
|
||||
ULONG WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_AddRef (LPDIRECTMUSICSEGMENT8 iface) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
return IDirectMusicSegment8Impl_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl);
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
return IDirectMusicSegment8Impl_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl);
|
||||
}
|
||||
|
||||
ULONG WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_Release (LPDIRECTMUSICSEGMENT8 iface) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
return IDirectMusicSegment8Impl_IUnknown_Release ((LPUNKNOWN)&This->UnknownVtbl);
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
return IDirectMusicSegment8Impl_IUnknown_Release ((LPUNKNOWN)&This->UnknownVtbl);
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_GetLength (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME* pmtLength) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %p): stub\n", This, pmtLength);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
TRACE("(%p, %p)\n", This, pmtLength);
|
||||
if (NULL == pmtLength) {
|
||||
return E_POINTER;
|
||||
}
|
||||
*pmtLength = This->header.mtLength;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_SetLength (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME mtLength) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %ld): stub\n", This, mtLength);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
TRACE("(%p, %ld)\n", This, mtLength);
|
||||
This->header.mtLength = mtLength;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_GetRepeats (LPDIRECTMUSICSEGMENT8 iface, DWORD* pdwRepeats) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %p): stub\n", This, pdwRepeats);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
TRACE("(%p, %p)\n", This, pdwRepeats);
|
||||
if (NULL == pdwRepeats) {
|
||||
return E_POINTER;
|
||||
}
|
||||
*pdwRepeats = This->header.dwRepeats;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_SetRepeats (LPDIRECTMUSICSEGMENT8 iface, DWORD dwRepeats) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %ld): stub\n", This, dwRepeats);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
TRACE("(%p, %ld)\n", This, dwRepeats);
|
||||
This->header.dwRepeats = dwRepeats;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_GetDefaultResolution (LPDIRECTMUSICSEGMENT8 iface, DWORD* pdwResolution) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %p): stub\n", This, pdwResolution);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
TRACE("(%p, %p)\n", This, pdwResolution);
|
||||
if (NULL == pdwResolution) {
|
||||
return E_POINTER;
|
||||
}
|
||||
*pdwResolution = This->header.dwResolution;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_SetDefaultResolution (LPDIRECTMUSICSEGMENT8 iface, DWORD dwResolution) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %ld): stub\n", This, dwResolution);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
TRACE("(%p, %ld)\n", This, dwResolution);
|
||||
This->header.dwResolution = dwResolution;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_GetTrack (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidType, DWORD dwGroupBits, DWORD dwIndex, IDirectMusicTrack** ppTrack) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %s, %ld, %ld, %p): stub\n", This, debugstr_dmguid(rguidType), dwGroupBits, dwIndex, ppTrack);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %s, %ld, %ld, %p): stub\n", This, debugstr_dmguid(rguidType), dwGroupBits, dwIndex, ppTrack);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_GetTrackGroup (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicTrack* pTrack, DWORD* pdwGroupBits) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %p, %p): stub\n", This, pTrack, pdwGroupBits);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %p, %p): stub\n", This, pTrack, pdwGroupBits);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_InsertTrack (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicTrack* pTrack, DWORD dwGroupBits) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %p, %ld): stub\n", This, pTrack, dwGroupBits);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %p, %ld): stub\n", This, pTrack, dwGroupBits);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_RemoveTrack (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicTrack* pTrack) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %p): stub\n", This, pTrack);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %p): stub\n", This, pTrack);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_InitPlay (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicSegmentState** ppSegState, IDirectMusicPerformance* pPerformance, DWORD dwFlags) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %p, %p, %ld): stub\n", This, ppSegState, pPerformance, dwFlags);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
HRESULT hr;
|
||||
FIXME("(%p, %p, %p, %ld): semi-stub\n", This, ppSegState, pPerformance, dwFlags);
|
||||
if (NULL == ppSegState) {
|
||||
return E_POINTER;
|
||||
}
|
||||
hr = DMUSIC_CreateDirectMusicSegmentStateImpl(&IID_IDirectMusicSegmentState, (void**) ppSegState, NULL);
|
||||
if (FAILED(hr)) {
|
||||
return hr;
|
||||
}
|
||||
/* TODO: DMUS_SEGF_FLAGS */
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_GetGraph (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicGraph** ppGraph) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %p): stub\n", This, ppGraph);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %p): semi-stub\n", This, ppGraph);
|
||||
if (NULL == ppGraph) {
|
||||
return E_POINTER;
|
||||
}
|
||||
if (NULL == This->pGraph) {
|
||||
return DMUS_E_NOT_FOUND;
|
||||
}
|
||||
/**
|
||||
* should return This, as seen in msdn
|
||||
* http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/directx9_c/directx/htm/idirectmusicsegment8getgraph.asp
|
||||
* "...The segment object implements IDirectMusicGraph directly..."
|
||||
*/
|
||||
*ppGraph = This->pGraph;
|
||||
IDirectMusicGraph_AddRef(This->pGraph);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_SetGraph (LPDIRECTMUSICSEGMENT8 iface, IDirectMusicGraph* pGraph) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %p): stub\n", This, pGraph);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %p): to complete\n", This, pGraph);
|
||||
if (NULL != This->pGraph) {
|
||||
IDirectMusicGraph_Release(This->pGraph);
|
||||
}
|
||||
This->pGraph = pGraph;
|
||||
if (NULL != This->pGraph) {
|
||||
IDirectMusicGraph_AddRef(This->pGraph);
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_AddNotificationType (LPDIRECTMUSICSEGMENT8 iface, REFGUID rguidNotificationType) {
|
||||
|
@ -202,27 +246,45 @@ HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_Clone (LPDIRECTMUSI
|
|||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_SetStartPoint (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME mtStart) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %ld): stub\n", This, mtStart);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
TRACE("(%p, %ld)\n", This, mtStart);
|
||||
if (mtStart >= This->header.mtLength) {
|
||||
return DMUS_E_OUT_OF_RANGE;
|
||||
}
|
||||
This->header.mtPlayStart = mtStart;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_GetStartPoint (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME* pmtStart) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %p): stub\n", This, pmtStart);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
TRACE("(%p, %p)\n", This, pmtStart);
|
||||
if (NULL == pmtStart) {
|
||||
return E_POINTER;
|
||||
}
|
||||
*pmtStart = This->header.mtPlayStart;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_SetLoopPoints (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME mtStart, MUSIC_TIME mtEnd) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %ld, %ld): stub\n", This, mtStart, mtEnd);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
TRACE("(%p, %ld, %ld)\n", This, mtStart, mtEnd);
|
||||
if (mtStart >= This->header.mtLength || mtEnd > This->header.mtLength || mtStart > mtEnd) {
|
||||
return DMUS_E_OUT_OF_RANGE;
|
||||
}
|
||||
This->header.mtLoopStart = mtStart;
|
||||
This->header.mtLoopEnd = mtEnd;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_GetLoopPoints (LPDIRECTMUSICSEGMENT8 iface, MUSIC_TIME* pmtStart, MUSIC_TIME* pmtEnd) {
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
FIXME("(%p, %p, %p): stub\n", This, pmtStart, pmtEnd);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicSegment8Impl, SegmentVtbl, iface);
|
||||
TRACE("(%p, %p, %p)\n", This, pmtStart, pmtEnd);
|
||||
if (NULL == pmtStart || NULL == pmtEnd) {
|
||||
return E_POINTER;
|
||||
}
|
||||
*pmtStart = This->header.mtLoopStart;
|
||||
*pmtEnd = This->header.mtLoopEnd;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicSegment8Impl_IDirectMusicSegment8_SetPChannelsUsed (LPDIRECTMUSICSEGMENT8 iface, DWORD dwNumPChannels, DWORD* paPChannels) {
|
||||
|
@ -914,8 +976,38 @@ static HRESULT IDirectMusicSegment8Impl_IPersistStream_ParseSegmentForm (LPPERSI
|
|||
if (hr == S_FALSE) {
|
||||
switch (Chunk.fccID) {
|
||||
case DMUS_FOURCC_SEGMENT_CHUNK: {
|
||||
DWORD checkSz = 0;
|
||||
FIXME_(dmfile)(": segment chunk\n");
|
||||
liMove.QuadPart = Chunk.dwSize;
|
||||
/** DX 7 */
|
||||
IStream_Read (pStm, &This->header.dwRepeats, sizeof(This->header.dwRepeats), NULL);
|
||||
checkSz += sizeof(This->header.dwRepeats);
|
||||
IStream_Read (pStm, &This->header.mtLength, sizeof(This->header.mtLength), NULL);
|
||||
checkSz += sizeof(This->header.mtLength);
|
||||
IStream_Read (pStm, &This->header.mtPlayStart, sizeof(This->header.mtPlayStart), NULL);
|
||||
checkSz += sizeof(This->header.mtPlayStart);
|
||||
IStream_Read (pStm, &This->header.mtLoopStart, sizeof(This->header.mtLoopStart), NULL);
|
||||
checkSz += sizeof(This->header.mtLoopStart);
|
||||
IStream_Read (pStm, &This->header.mtLoopEnd, sizeof(This->header.mtLoopEnd), NULL);
|
||||
checkSz += sizeof(This->header.mtLoopEnd);
|
||||
IStream_Read (pStm, &This->header.dwResolution, sizeof(This->header.dwResolution), NULL);
|
||||
checkSz += sizeof(This->header.dwResolution);
|
||||
/** DX 8 */
|
||||
if (Chunk.dwSize > checkSz) {
|
||||
IStream_Read (pStm, &This->header.rtLength, sizeof(This->header.rtLength), NULL);
|
||||
checkSz += sizeof(This->header.rtLength);
|
||||
IStream_Read (pStm, &This->header.dwFlags, sizeof(This->header.dwFlags), NULL);
|
||||
checkSz += sizeof(This->header.dwFlags);
|
||||
}
|
||||
/** DX 9 */
|
||||
if (Chunk.dwSize > checkSz) {
|
||||
IStream_Read (pStm, &This->header.rtLoopStart, sizeof(This->header.rtLoopStart), NULL);
|
||||
checkSz += sizeof(This->header.rtLoopStart);
|
||||
IStream_Read (pStm, &This->header.rtLoopEnd, sizeof(This->header.rtLoopEnd), NULL);
|
||||
checkSz += sizeof(This->header.rtLoopEnd);
|
||||
IStream_Read (pStm, &This->header.rtPlayStart, sizeof(This->header.rtPlayStart), NULL);
|
||||
checkSz += sizeof(This->header.rtPlayStart);
|
||||
}
|
||||
liMove.QuadPart = Chunk.dwSize - checkSz;
|
||||
IStream_Seek (pStm, liMove, STREAM_SEEK_CUR, NULL);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -77,6 +77,7 @@ struct IDirectMusicScriptImpl {
|
|||
DWORD ref;
|
||||
|
||||
/* IDirectMusicScriptImpl fields */
|
||||
IDirectMusicPerformance* pPerformance;
|
||||
LPDMUS_OBJECTDESC pDesc;
|
||||
DMUS_IO_SCRIPT_HEADER* pHeader;
|
||||
DMUS_IO_VERSION* pVersion;
|
||||
|
|
|
@ -35,215 +35,217 @@ WINE_DECLARE_DEBUG_CHANNEL(dmfile);
|
|||
*/
|
||||
/* IDirectMusicScriptImpl IUnknown part: */
|
||||
HRESULT WINAPI IDirectMusicScriptImpl_IUnknown_QueryInterface (LPUNKNOWN iface, REFIID riid, LPVOID *ppobj) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, UnknownVtbl, iface);
|
||||
TRACE("(%p, %s, %p)\n", This, debugstr_dmguid(riid), ppobj);
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, UnknownVtbl, iface);
|
||||
TRACE("(%p, %s, %p)\n", This, debugstr_dmguid(riid), ppobj);
|
||||
|
||||
if (IsEqualIID (riid, &IID_IUnknown)) {
|
||||
*ppobj = (LPVOID)&This->UnknownVtbl;
|
||||
IDirectMusicScriptImpl_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl);
|
||||
return S_OK;
|
||||
} else if (IsEqualIID (riid, &IID_IDirectMusicScript)) {
|
||||
*ppobj = (LPVOID)&This->ScriptVtbl;
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_AddRef ((LPDIRECTMUSICSCRIPT)&This->ScriptVtbl);
|
||||
return S_OK;
|
||||
} else if (IsEqualIID (riid, &IID_IDirectMusicObject)) {
|
||||
*ppobj = (LPVOID)&This->ObjectVtbl;
|
||||
IDirectMusicScriptImpl_IDirectMusicObject_AddRef ((LPDIRECTMUSICOBJECT)&This->ObjectVtbl);
|
||||
return S_OK;
|
||||
} else if (IsEqualIID (riid, &IID_IPersistStream)) {
|
||||
*ppobj = (LPVOID)&This->PersistStreamVtbl;
|
||||
IDirectMusicScriptImpl_IPersistStream_AddRef ((LPPERSISTSTREAM)&This->PersistStreamVtbl);
|
||||
return S_OK;
|
||||
}
|
||||
if (IsEqualIID (riid, &IID_IUnknown)) {
|
||||
*ppobj = (LPVOID)&This->UnknownVtbl;
|
||||
IDirectMusicScriptImpl_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl);
|
||||
return S_OK;
|
||||
} else if (IsEqualIID (riid, &IID_IDirectMusicScript)) {
|
||||
*ppobj = (LPVOID)&This->ScriptVtbl;
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_AddRef ((LPDIRECTMUSICSCRIPT)&This->ScriptVtbl);
|
||||
return S_OK;
|
||||
} else if (IsEqualIID (riid, &IID_IDirectMusicObject)) {
|
||||
*ppobj = (LPVOID)&This->ObjectVtbl;
|
||||
IDirectMusicScriptImpl_IDirectMusicObject_AddRef ((LPDIRECTMUSICOBJECT)&This->ObjectVtbl);
|
||||
return S_OK;
|
||||
} else if (IsEqualIID (riid, &IID_IPersistStream)) {
|
||||
*ppobj = (LPVOID)&This->PersistStreamVtbl;
|
||||
IDirectMusicScriptImpl_IPersistStream_AddRef ((LPPERSISTSTREAM)&This->PersistStreamVtbl);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
WARN("(%p, %s, %p): not found\n", This, debugstr_dmguid(riid), ppobj);
|
||||
return E_NOINTERFACE;
|
||||
WARN("(%p, %s, %p): not found\n", This, debugstr_dmguid(riid), ppobj);
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
ULONG WINAPI IDirectMusicScriptImpl_IUnknown_AddRef (LPUNKNOWN iface) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, UnknownVtbl, iface);
|
||||
TRACE("(%p): AddRef from %ld\n", This, This->ref);
|
||||
return ++(This->ref);
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, UnknownVtbl, iface);
|
||||
TRACE("(%p): AddRef from %ld\n", This, This->ref);
|
||||
return ++(This->ref);
|
||||
}
|
||||
|
||||
ULONG WINAPI IDirectMusicScriptImpl_IUnknown_Release (LPUNKNOWN iface) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, UnknownVtbl, iface);
|
||||
ULONG ref = --This->ref;
|
||||
TRACE("(%p): ReleaseRef to %ld\n", This, This->ref);
|
||||
if (ref == 0) {
|
||||
if (NULL != This->pHeader) HeapFree(GetProcessHeap(), 0, This->pHeader);
|
||||
if (NULL != This->pVersion) HeapFree(GetProcessHeap(), 0, This->pVersion);
|
||||
if (NULL != This->pwzLanguage) HeapFree(GetProcessHeap(), 0, This->pwzLanguage);
|
||||
if (NULL != This->pwzSource) HeapFree(GetProcessHeap(), 0, This->pwzSource);
|
||||
HeapFree(GetProcessHeap(), 0, This);
|
||||
}
|
||||
return ref;
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, UnknownVtbl, iface);
|
||||
ULONG ref = --This->ref;
|
||||
TRACE("(%p): ReleaseRef to %ld\n", This, This->ref);
|
||||
if (ref == 0) {
|
||||
if (NULL != This->pHeader) HeapFree(GetProcessHeap(), 0, This->pHeader);
|
||||
if (NULL != This->pVersion) HeapFree(GetProcessHeap(), 0, This->pVersion);
|
||||
if (NULL != This->pwzLanguage) HeapFree(GetProcessHeap(), 0, This->pwzLanguage);
|
||||
if (NULL != This->pwzSource) HeapFree(GetProcessHeap(), 0, This->pwzSource);
|
||||
HeapFree(GetProcessHeap(), 0, This);
|
||||
}
|
||||
return ref;
|
||||
}
|
||||
|
||||
ICOM_VTABLE(IUnknown) DirectMusicScript_Unknown_Vtbl = {
|
||||
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
|
||||
IDirectMusicScriptImpl_IUnknown_QueryInterface,
|
||||
IDirectMusicScriptImpl_IUnknown_AddRef,
|
||||
IDirectMusicScriptImpl_IUnknown_Release
|
||||
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
|
||||
IDirectMusicScriptImpl_IUnknown_QueryInterface,
|
||||
IDirectMusicScriptImpl_IUnknown_AddRef,
|
||||
IDirectMusicScriptImpl_IUnknown_Release
|
||||
};
|
||||
|
||||
/* IDirectMusicScriptImpl IDirectMusicScript part: */
|
||||
HRESULT WINAPI IDirectMusicScriptImpl_IDirectMusicScript_QueryInterface (LPDIRECTMUSICSCRIPT iface, REFIID riid, LPVOID *ppobj) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
return IDirectMusicScriptImpl_IUnknown_QueryInterface ((LPUNKNOWN)&This->UnknownVtbl, riid, ppobj);
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
return IDirectMusicScriptImpl_IUnknown_QueryInterface ((LPUNKNOWN)&This->UnknownVtbl, riid, ppobj);
|
||||
}
|
||||
|
||||
ULONG WINAPI IDirectMusicScriptImpl_IDirectMusicScript_AddRef (LPDIRECTMUSICSCRIPT iface) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
return IDirectMusicScriptImpl_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl);
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
return IDirectMusicScriptImpl_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl);
|
||||
}
|
||||
|
||||
ULONG WINAPI IDirectMusicScriptImpl_IDirectMusicScript_Release (LPDIRECTMUSICSCRIPT iface) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
return IDirectMusicScriptImpl_IUnknown_Release ((LPUNKNOWN)&This->UnknownVtbl);
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
return IDirectMusicScriptImpl_IUnknown_Release ((LPUNKNOWN)&This->UnknownVtbl);
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicScriptImpl_IDirectMusicScript_Init (LPDIRECTMUSICSCRIPT iface, IDirectMusicPerformance* pPerformance, DMUS_SCRIPT_ERRORINFO* pErrorInfo) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %p, %p): stub\n", This, pPerformance, pErrorInfo);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %p, %p): stub\n", This, pPerformance, pErrorInfo);
|
||||
This->pPerformance = pPerformance;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicScriptImpl_IDirectMusicScript_CallRoutine (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszRoutineName, DMUS_SCRIPT_ERRORINFO* pErrorInfo) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %s, %p): stub\n", This, debugstr_w(pwszRoutineName), pErrorInfo);
|
||||
/*return E_NOTIMPL;*/
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %s, %p): stub\n", This, debugstr_w(pwszRoutineName), pErrorInfo);
|
||||
/*return E_NOTIMPL;*/
|
||||
/*return S_OK;*/
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicScriptImpl_IDirectMusicScript_SetVariableVariant (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, VARIANT varValue, BOOL fSetRef, DMUS_SCRIPT_ERRORINFO* pErrorInfo) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %p, FIXME, %d, %p): stub\n", This, pwszVariableName,/* varValue,*/ fSetRef, pErrorInfo);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %s, FIXME, %d, %p): stub\n", This, debugstr_w(pwszVariableName),/* varValue,*/ fSetRef, pErrorInfo);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicScriptImpl_IDirectMusicScript_GetVariableVariant (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, VARIANT* pvarValue, DMUS_SCRIPT_ERRORINFO* pErrorInfo) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %p, %p, %p): stub\n", This, pwszVariableName, pvarValue, pErrorInfo);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %s, %p, %p): stub\n", This, debugstr_w(pwszVariableName), pvarValue, pErrorInfo);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicScriptImpl_IDirectMusicScript_SetVariableNumber (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, LONG lValue, DMUS_SCRIPT_ERRORINFO* pErrorInfo) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %p, %li, %p): stub\n", This, pwszVariableName, lValue, pErrorInfo);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %s, %li, %p): stub\n", This, debugstr_w(pwszVariableName), lValue, pErrorInfo);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicScriptImpl_IDirectMusicScript_GetVariableNumber (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, LONG* plValue, DMUS_SCRIPT_ERRORINFO* pErrorInfo) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %p, %p, %p): stub\n", This, pwszVariableName, plValue, pErrorInfo);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %s, %p, %p): stub\n", This, debugstr_w(pwszVariableName), plValue, pErrorInfo);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicScriptImpl_IDirectMusicScript_SetVariableObject (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, IUnknown* punkValue, DMUS_SCRIPT_ERRORINFO* pErrorInfo) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %p, %p, %p): stub\n", This, pwszVariableName, punkValue, pErrorInfo);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %s, %p, %p): stub\n", This, debugstr_w(pwszVariableName), punkValue, pErrorInfo);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicScriptImpl_IDirectMusicScript_GetVariableObject (LPDIRECTMUSICSCRIPT iface, WCHAR* pwszVariableName, REFIID riid, LPVOID* ppv, DMUS_SCRIPT_ERRORINFO* pErrorInfo) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %p, %s, %p, %p): stub\n", This, pwszVariableName, debugstr_dmguid(riid), ppv, pErrorInfo);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %s, %s, %p, %p): stub\n", This, debugstr_w(pwszVariableName), debugstr_dmguid(riid), ppv, pErrorInfo);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicScriptImpl_IDirectMusicScript_EnumRoutine (LPDIRECTMUSICSCRIPT iface, DWORD dwIndex, WCHAR* pwszName) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %ld, %p): stub\n", This, dwIndex, pwszName);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %ld, %p): stub\n", This, dwIndex, pwszName);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicScriptImpl_IDirectMusicScript_EnumVariable (LPDIRECTMUSICSCRIPT iface, DWORD dwIndex, WCHAR* pwszName) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %ld, %p): stub\n", This, dwIndex, pwszName);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ScriptVtbl, iface);
|
||||
FIXME("(%p, %ld, %p): stub\n", This, dwIndex, pwszName);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
ICOM_VTABLE(IDirectMusicScript) DirectMusicScript_Script_Vtbl = {
|
||||
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_QueryInterface,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_AddRef,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_Release,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_Init,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_CallRoutine,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_SetVariableVariant,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_GetVariableVariant,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_SetVariableNumber,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_GetVariableNumber,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_SetVariableObject,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_GetVariableObject,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_EnumRoutine,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_EnumVariable
|
||||
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_QueryInterface,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_AddRef,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_Release,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_Init,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_CallRoutine,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_SetVariableVariant,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_GetVariableVariant,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_SetVariableNumber,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_GetVariableNumber,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_SetVariableObject,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_GetVariableObject,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_EnumRoutine,
|
||||
IDirectMusicScriptImpl_IDirectMusicScript_EnumVariable
|
||||
};
|
||||
|
||||
/* IDirectMusicScriptImpl IDirectMusicObject part: */
|
||||
HRESULT WINAPI IDirectMusicScriptImpl_IDirectMusicObject_QueryInterface (LPDIRECTMUSICOBJECT iface, REFIID riid, LPVOID *ppobj) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ObjectVtbl, iface);
|
||||
return IDirectMusicScriptImpl_IUnknown_QueryInterface ((LPUNKNOWN)&This->UnknownVtbl, riid, ppobj);
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ObjectVtbl, iface);
|
||||
return IDirectMusicScriptImpl_IUnknown_QueryInterface ((LPUNKNOWN)&This->UnknownVtbl, riid, ppobj);
|
||||
}
|
||||
|
||||
ULONG WINAPI IDirectMusicScriptImpl_IDirectMusicObject_AddRef (LPDIRECTMUSICOBJECT iface) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ObjectVtbl, iface);
|
||||
return IDirectMusicScriptImpl_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl);
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ObjectVtbl, iface);
|
||||
return IDirectMusicScriptImpl_IUnknown_AddRef ((LPUNKNOWN)&This->UnknownVtbl);
|
||||
}
|
||||
|
||||
ULONG WINAPI IDirectMusicScriptImpl_IDirectMusicObject_Release (LPDIRECTMUSICOBJECT iface) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ObjectVtbl, iface);
|
||||
return IDirectMusicScriptImpl_IUnknown_Release ((LPUNKNOWN)&This->UnknownVtbl);
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ObjectVtbl, iface);
|
||||
return IDirectMusicScriptImpl_IUnknown_Release ((LPUNKNOWN)&This->UnknownVtbl);
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicScriptImpl_IDirectMusicObject_GetDescriptor (LPDIRECTMUSICOBJECT iface, LPDMUS_OBJECTDESC pDesc) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ObjectVtbl, iface);
|
||||
TRACE("(%p, %p)\n", This, pDesc);
|
||||
/* I think we shouldn't return pointer here since then values can be changed; it'd be a mess */
|
||||
memcpy (pDesc, This->pDesc, This->pDesc->dwSize);
|
||||
return S_OK;
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ObjectVtbl, iface);
|
||||
TRACE("(%p, %p)\n", This, pDesc);
|
||||
/* I think we shouldn't return pointer here since then values can be changed; it'd be a mess */
|
||||
memcpy (pDesc, This->pDesc, This->pDesc->dwSize);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicScriptImpl_IDirectMusicObject_SetDescriptor (LPDIRECTMUSICOBJECT iface, LPDMUS_OBJECTDESC pDesc) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ObjectVtbl, iface);
|
||||
TRACE("(%p, %p): setting descriptor:\n%s\n", This, pDesc, debugstr_DMUS_OBJECTDESC (pDesc));
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ObjectVtbl, iface);
|
||||
TRACE("(%p, %p): setting descriptor:\n%s\n", This, pDesc, debugstr_DMUS_OBJECTDESC (pDesc));
|
||||
|
||||
/* According to MSDN, we should copy only given values, not whole struct */
|
||||
if (pDesc->dwValidData & DMUS_OBJ_OBJECT)
|
||||
memcpy (&This->pDesc->guidObject, &pDesc->guidObject, sizeof (pDesc->guidObject));
|
||||
if (pDesc->dwValidData & DMUS_OBJ_CLASS)
|
||||
memcpy (&This->pDesc->guidClass, &pDesc->guidClass, sizeof (pDesc->guidClass));
|
||||
if (pDesc->dwValidData & DMUS_OBJ_NAME)
|
||||
strncpyW (This->pDesc->wszName, pDesc->wszName, DMUS_MAX_NAME);
|
||||
if (pDesc->dwValidData & DMUS_OBJ_CATEGORY)
|
||||
strncpyW (This->pDesc->wszCategory, pDesc->wszCategory, DMUS_MAX_CATEGORY);
|
||||
if (pDesc->dwValidData & DMUS_OBJ_FILENAME)
|
||||
strncpyW (This->pDesc->wszFileName, pDesc->wszFileName, DMUS_MAX_FILENAME);
|
||||
if (pDesc->dwValidData & DMUS_OBJ_VERSION)
|
||||
memcpy (&This->pDesc->vVersion, &pDesc->vVersion, sizeof (pDesc->vVersion));
|
||||
if (pDesc->dwValidData & DMUS_OBJ_DATE)
|
||||
memcpy (&This->pDesc->ftDate, &pDesc->ftDate, sizeof (pDesc->ftDate));
|
||||
if (pDesc->dwValidData & DMUS_OBJ_MEMORY) {
|
||||
memcpy (&This->pDesc->llMemLength, &pDesc->llMemLength, sizeof (pDesc->llMemLength));
|
||||
memcpy (This->pDesc->pbMemData, pDesc->pbMemData, sizeof (pDesc->pbMemData));
|
||||
}
|
||||
if (pDesc->dwValidData & DMUS_OBJ_STREAM) {
|
||||
/* according to MSDN, we copy the stream */
|
||||
IStream_Clone (pDesc->pStream, &This->pDesc->pStream);
|
||||
}
|
||||
/* According to MSDN, we should copy only given values, not whole struct */
|
||||
if (pDesc->dwValidData & DMUS_OBJ_OBJECT)
|
||||
memcpy (&This->pDesc->guidObject, &pDesc->guidObject, sizeof (pDesc->guidObject));
|
||||
if (pDesc->dwValidData & DMUS_OBJ_CLASS)
|
||||
memcpy (&This->pDesc->guidClass, &pDesc->guidClass, sizeof (pDesc->guidClass));
|
||||
if (pDesc->dwValidData & DMUS_OBJ_NAME)
|
||||
strncpyW (This->pDesc->wszName, pDesc->wszName, DMUS_MAX_NAME);
|
||||
if (pDesc->dwValidData & DMUS_OBJ_CATEGORY)
|
||||
strncpyW (This->pDesc->wszCategory, pDesc->wszCategory, DMUS_MAX_CATEGORY);
|
||||
if (pDesc->dwValidData & DMUS_OBJ_FILENAME)
|
||||
strncpyW (This->pDesc->wszFileName, pDesc->wszFileName, DMUS_MAX_FILENAME);
|
||||
if (pDesc->dwValidData & DMUS_OBJ_VERSION)
|
||||
memcpy (&This->pDesc->vVersion, &pDesc->vVersion, sizeof (pDesc->vVersion));
|
||||
if (pDesc->dwValidData & DMUS_OBJ_DATE)
|
||||
memcpy (&This->pDesc->ftDate, &pDesc->ftDate, sizeof (pDesc->ftDate));
|
||||
if (pDesc->dwValidData & DMUS_OBJ_MEMORY) {
|
||||
memcpy (&This->pDesc->llMemLength, &pDesc->llMemLength, sizeof (pDesc->llMemLength));
|
||||
memcpy (This->pDesc->pbMemData, pDesc->pbMemData, sizeof (pDesc->pbMemData));
|
||||
}
|
||||
if (pDesc->dwValidData & DMUS_OBJ_STREAM) {
|
||||
/* according to MSDN, we copy the stream */
|
||||
IStream_Clone (pDesc->pStream, &This->pDesc->pStream);
|
||||
}
|
||||
|
||||
/* add new flags */
|
||||
This->pDesc->dwValidData |= pDesc->dwValidData;
|
||||
/* add new flags */
|
||||
This->pDesc->dwValidData |= pDesc->dwValidData;
|
||||
|
||||
return S_OK;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicScriptImpl_IDirectMusicObject_ParseDescriptor (LPDIRECTMUSICOBJECT iface, LPSTREAM pStream, LPDMUS_OBJECTDESC pDesc) {
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ObjectVtbl, iface);
|
||||
DMUS_PRIVATE_CHUNK Chunk;
|
||||
DWORD StreamSize, StreamCount, ListSize[1], ListCount[1];
|
||||
LARGE_INTEGER liMove; /* used when skipping chunks */
|
||||
ICOM_THIS_MULTI(IDirectMusicScriptImpl, ObjectVtbl, iface);
|
||||
DMUS_PRIVATE_CHUNK Chunk;
|
||||
DWORD StreamSize, StreamCount, ListSize[1], ListCount[1];
|
||||
LARGE_INTEGER liMove; /* used when skipping chunks */
|
||||
|
||||
TRACE("(%p, %p, %p)\n", This, pStream, pDesc);
|
||||
|
||||
|
@ -651,43 +653,43 @@ HRESULT WINAPI IDirectMusicScriptImpl_IPersistStream_Load (LPPERSISTSTREAM iface
|
|||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicScriptImpl_IPersistStream_Save (LPPERSISTSTREAM iface, IStream* pStm, BOOL fClearDirty) {
|
||||
return E_NOTIMPL;
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirectMusicScriptImpl_IPersistStream_GetSizeMax (LPPERSISTSTREAM iface, ULARGE_INTEGER* pcbSize) {
|
||||
return E_NOTIMPL;
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
ICOM_VTABLE(IPersistStream) DirectMusicScript_PersistStream_Vtbl = {
|
||||
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
|
||||
IDirectMusicScriptImpl_IPersistStream_QueryInterface,
|
||||
IDirectMusicScriptImpl_IPersistStream_AddRef,
|
||||
IDirectMusicScriptImpl_IPersistStream_Release,
|
||||
IDirectMusicScriptImpl_IPersistStream_GetClassID,
|
||||
IDirectMusicScriptImpl_IPersistStream_IsDirty,
|
||||
IDirectMusicScriptImpl_IPersistStream_Load,
|
||||
IDirectMusicScriptImpl_IPersistStream_Save,
|
||||
IDirectMusicScriptImpl_IPersistStream_GetSizeMax
|
||||
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
|
||||
IDirectMusicScriptImpl_IPersistStream_QueryInterface,
|
||||
IDirectMusicScriptImpl_IPersistStream_AddRef,
|
||||
IDirectMusicScriptImpl_IPersistStream_Release,
|
||||
IDirectMusicScriptImpl_IPersistStream_GetClassID,
|
||||
IDirectMusicScriptImpl_IPersistStream_IsDirty,
|
||||
IDirectMusicScriptImpl_IPersistStream_Load,
|
||||
IDirectMusicScriptImpl_IPersistStream_Save,
|
||||
IDirectMusicScriptImpl_IPersistStream_GetSizeMax
|
||||
};
|
||||
|
||||
/* for ClassFactory */
|
||||
HRESULT WINAPI DMUSIC_CreateDirectMusicScriptImpl (LPCGUID lpcGUID, LPVOID* ppobj, LPUNKNOWN pUnkOuter) {
|
||||
IDirectMusicScriptImpl* obj;
|
||||
IDirectMusicScriptImpl* obj;
|
||||
|
||||
obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicScriptImpl));
|
||||
if (NULL == obj) {
|
||||
*ppobj = (LPVOID) NULL;
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
obj->UnknownVtbl = &DirectMusicScript_Unknown_Vtbl;
|
||||
obj->ScriptVtbl = &DirectMusicScript_Script_Vtbl;
|
||||
obj->ObjectVtbl = &DirectMusicScript_Object_Vtbl;
|
||||
obj->PersistStreamVtbl = &DirectMusicScript_PersistStream_Vtbl;
|
||||
obj->pDesc = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DMUS_OBJECTDESC));
|
||||
DM_STRUCT_INIT(obj->pDesc);
|
||||
obj->pDesc->dwValidData |= DMUS_OBJ_CLASS;
|
||||
memcpy (&obj->pDesc->guidClass, &CLSID_DirectMusicScript, sizeof (CLSID));
|
||||
obj->ref = 0; /* will be inited by QueryInterface */
|
||||
obj = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectMusicScriptImpl));
|
||||
if (NULL == obj) {
|
||||
*ppobj = (LPVOID) NULL;
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
obj->UnknownVtbl = &DirectMusicScript_Unknown_Vtbl;
|
||||
obj->ScriptVtbl = &DirectMusicScript_Script_Vtbl;
|
||||
obj->ObjectVtbl = &DirectMusicScript_Object_Vtbl;
|
||||
obj->PersistStreamVtbl = &DirectMusicScript_PersistStream_Vtbl;
|
||||
obj->pDesc = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(DMUS_OBJECTDESC));
|
||||
DM_STRUCT_INIT(obj->pDesc);
|
||||
obj->pDesc->dwValidData |= DMUS_OBJ_CLASS;
|
||||
memcpy (&obj->pDesc->guidClass, &CLSID_DirectMusicScript, sizeof (CLSID));
|
||||
obj->ref = 0; /* will be inited by QueryInterface */
|
||||
|
||||
return IDirectMusicScriptImpl_IUnknown_QueryInterface ((LPUNKNOWN)&obj->UnknownVtbl, lpcGUID, ppobj);
|
||||
return IDirectMusicScriptImpl_IUnknown_QueryInterface ((LPUNKNOWN)&obj->UnknownVtbl, lpcGUID, ppobj);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue