static HRESULT WINAPI IDirectMusicPerformance8Impl_GetDefaultAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicAudioPath** ppAudioPath) { IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface; FIXME("(%p, %p): semi-stub (%p)\n", This, ppAudioPath, This->pDefaultPath); if (NULL != This->pDefaultPath) { *ppAudioPath = This->pDefaultPath; IDirectMusicAudioPath_AddRef(*ppAudioPath); } else { *ppAudioPath = NULL; } return S_OK; }
static void test_COM_audiopath(void) { IDirectMusicAudioPath *dmap; IUnknown *unk; IDirectMusicPerformance8 *performance; ULONG refcount; HRESULT hr; hr = CoCreateInstance(&CLSID_DirectMusicPerformance, NULL, CLSCTX_INPROC_SERVER, &IID_IDirectMusicPerformance8, (void**)&performance); ok(hr == S_OK || broken(hr == E_NOINTERFACE), "DirectMusicPerformance create failed: %08x\n", hr); if (!performance) { win_skip("IDirectMusicPerformance8 not available\n"); return; } hr = IDirectMusicPerformance8_InitAudio(performance, NULL, NULL, NULL, DMUS_APATH_SHARED_STEREOPLUSREVERB, 64, DMUS_AUDIOF_ALL, NULL); if (hr == DSERR_NODRIVER) { skip("No audio driver\n"); return; } ok(hr == S_OK, "DirectMusicPerformance_InitAudio failed: %08x\n", hr); hr = IDirectMusicPerformance8_GetDefaultAudioPath(performance, &dmap); ok(hr == S_OK, "DirectMusicPerformance_GetDefaultAudioPath failed: %08x\n", hr); /* IDirectMusicObject and IPersistStream are not supported */ hr = IDirectMusicAudioPath_QueryInterface(dmap, &IID_IDirectMusicObject, (void**)&unk); todo_wine ok(FAILED(hr) && !unk, "Unexpected IDirectMusicObject interface: hr=%08x, iface=%p\n", hr, unk); if (unk) IUnknown_Release(unk); hr = IDirectMusicAudioPath_QueryInterface(dmap, &IID_IPersistStream, (void**)&unk); todo_wine ok(FAILED(hr) && !unk, "Unexpected IPersistStream interface: hr=%08x, iface=%p\n", hr, unk); if (unk) IUnknown_Release(unk); /* Same refcount for all DirectMusicAudioPath interfaces */ refcount = IDirectMusicAudioPath_AddRef(dmap); ok(refcount == 3, "refcount == %u, expected 3\n", refcount); hr = IDirectMusicAudioPath_QueryInterface(dmap, &IID_IUnknown, (void**)&unk); ok(hr == S_OK, "QueryInterface for IID_IUnknown failed: %08x\n", hr); ok(unk == (IUnknown*)dmap, "got %p, %p\n", unk, dmap); refcount = IUnknown_AddRef(unk); ok(refcount == 5, "refcount == %u, expected 5\n", refcount); refcount = IUnknown_Release(unk); while (IDirectMusicAudioPath_Release(dmap) > 1); /* performance has a reference too */ IDirectMusicPerformance8_CloseDown(performance); IDirectMusicPerformance8_Release(performance); }
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); if (NULL != This->pDefaultPath) { *ppAudioPath = This->pDefaultPath; IDirectMusicAudioPath_AddRef(*ppAudioPath); } else { *ppAudioPath = NULL; } return S_OK; }
static HRESULT WINAPI IDirectMusicPerformance8Impl_SetDefaultAudioPath (LPDIRECTMUSICPERFORMANCE8 iface, IDirectMusicAudioPath* pAudioPath) { IDirectMusicPerformance8Impl *This = (IDirectMusicPerformance8Impl *)iface; FIXME("(%p, %p): semi-stub\n", This, pAudioPath); if (NULL != This->pDefaultPath) { IDirectMusicAudioPath_Release(This->pDefaultPath); ((IDirectMusicAudioPathImpl*) This->pDefaultPath)->pPerf = NULL; This->pDefaultPath = NULL; } This->pDefaultPath = pAudioPath; if (NULL != This->pDefaultPath) { IDirectMusicAudioPath_AddRef(This->pDefaultPath); ((IDirectMusicAudioPathImpl*) This->pDefaultPath)->pPerf = (IDirectMusicPerformance8*) This; } return S_OK; }
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) { IDirectMusicAudioPath_Release(This->pDefaultPath); ((IDirectMusicAudioPathImpl*) This->pDefaultPath)->pPerf = NULL; This->pDefaultPath = NULL; } This->pDefaultPath = pAudioPath; if (NULL != This->pDefaultPath) { IDirectMusicAudioPath_AddRef(This->pDefaultPath); ((IDirectMusicAudioPathImpl*)This->pDefaultPath)->pPerf = &This->IDirectMusicPerformance8_iface; } return S_OK; }