Module: wine Branch: master Commit: 3636779f92b1e411ac3bfb202613396174c5e387 URL: https://source.winehq.org/git/wine.git/?a=commit;h=3636779f92b1e411ac3bfb202...
Author: Alistair Leslie-Hughes leslie_alistair@hotmail.com Date: Fri Sep 18 22:42:19 2020 +0200
dmstyle: Implement IDirectMusicStyle8 GetBand.
Signed-off-by: Alistair Leslie-Hughes leslie_alistair@hotmail.com Signed-off-by: Michael Stefaniuc mstefani@winehq.org Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/dmstyle/style.c | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-)
diff --git a/dlls/dmstyle/style.c b/dlls/dmstyle/style.c index 6eaedb1fbd..f8a62604a9 100644 --- a/dlls/dmstyle/style.c +++ b/dlls/dmstyle/style.c @@ -134,12 +134,39 @@ static ULONG WINAPI IDirectMusicStyle8Impl_Release(IDirectMusicStyle8 *iface) }
/* IDirectMusicStyle8Impl IDirectMusicStyle(8) part: */ -static HRESULT WINAPI IDirectMusicStyle8Impl_GetBand(IDirectMusicStyle8 *iface, WCHAR *pwszName, - IDirectMusicBand **ppBand) +static HRESULT WINAPI IDirectMusicStyle8Impl_GetBand(IDirectMusicStyle8 *iface, WCHAR *name, + IDirectMusicBand **band) { - IDirectMusicStyle8Impl *This = impl_from_IDirectMusicStyle8(iface); - FIXME("(%p, %p, %p): stub\n", This, pwszName, ppBand); - return S_OK; + IDirectMusicStyle8Impl *This = impl_from_IDirectMusicStyle8(iface); + struct style_band *sband; + HRESULT hr; + + TRACE("(%p, %s, %p)\n", This, debugstr_w(name), band); + + if (!name) + return E_POINTER; + + LIST_FOR_EACH_ENTRY(sband, &This->bands, struct style_band, entry) { + IDirectMusicObject *obj; + + hr = IDirectMusicBand_QueryInterface(sband->pBand, &IID_IDirectMusicObject, (void**)&obj); + if (SUCCEEDED(hr)) { + DMUS_OBJECTDESC desc; + + if (IDirectMusicObject_GetDescriptor(obj, &desc) == S_OK) { + if (desc.dwValidData & DMUS_OBJ_NAME && !lstrcmpW(name, desc.wszName)) { + IDirectMusicObject_Release(obj); + IDirectMusicBand_AddRef(sband->pBand); + *band = sband->pBand; + return S_OK; + } + } + + IDirectMusicObject_Release(obj); + } + } + + return S_FALSE; }
static HRESULT WINAPI IDirectMusicStyle8Impl_EnumBand(IDirectMusicStyle8 *iface, DWORD dwIndex,