From 7bb9d62e7083a344d0fd03369ad69d999d11a1fe Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Fri, 18 Sep 2020 22:42:17 +0200 Subject: [PATCH] dmband: Semi-stub IDirectMusicBand CreateSegment. Signed-off-by: Alistair Leslie-Hughes Signed-off-by: Michael Stefaniuc Signed-off-by: Alexandre Julliard --- dlls/dmband/band.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/dlls/dmband/band.c b/dlls/dmband/band.c index 901f5a69ee4..6f990afaf7f 100644 --- a/dlls/dmband/band.c +++ b/dlls/dmband/band.c @@ -90,11 +90,27 @@ static ULONG WINAPI IDirectMusicBandImpl_Release(IDirectMusicBand *iface) } static HRESULT WINAPI IDirectMusicBandImpl_CreateSegment(IDirectMusicBand *iface, - IDirectMusicSegment **ppSegment) + IDirectMusicSegment **segment) { - IDirectMusicBandImpl *This = impl_from_IDirectMusicBand(iface); - FIXME("(%p, %p): stub\n", This, ppSegment); - return S_OK; + IDirectMusicBandImpl *This = impl_from_IDirectMusicBand(iface); + HRESULT hr; + DMUS_BAND_PARAM bandparam; + + FIXME("(%p, %p): semi-stub\n", This, segment); + + hr = CoCreateInstance(&CLSID_DirectMusicSegment, NULL, CLSCTX_INPROC, + &IID_IDirectMusicSegment, (void**)segment); + if (FAILED(hr)) + return hr; + + bandparam.mtTimePhysical = 0; + bandparam.pBand = &This->IDirectMusicBand_iface; + IDirectMusicBand_AddRef(bandparam.pBand); + hr = IDirectMusicSegment_SetParam(*segment, &GUID_BandParam, 0xffffffff, DMUS_SEG_ALLTRACKS, + 0, &bandparam); + IDirectMusicBand_Release(bandparam.pBand); + + return hr; } static HRESULT WINAPI IDirectMusicBandImpl_Download(IDirectMusicBand *iface,