Module: wine Branch: master Commit: 862d7dae75d70ea23acf78c68e8129b46e200aaf URL: http://source.winehq.org/git/wine.git/?a=commit;h=862d7dae75d70ea23acf78c68e...
Author: Mark Harmstone hellas@burntcomma.com Date: Tue Mar 3 07:47:52 2015 +0000
dsound: Implement GetObjectInPath.
---
dlls/dsound/buffer.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c index 51796b7..92849a6 100644 --- a/dlls/dsound/buffer.c +++ b/dlls/dsound/buffer.c @@ -844,10 +844,23 @@ static HRESULT WINAPI IDirectSoundBufferImpl_GetObjectInPath(IDirectSoundBuffer8 { IDirectSoundBufferImpl *This = impl_from_IDirectSoundBuffer8(iface);
- FIXME("(%p,%s,%u,%s,%p): stub\n",This,debugstr_guid(rguidObject),dwIndex,debugstr_guid(rguidInterface),ppObject); + TRACE("(%p,%s,%u,%s,%p)\n",This,debugstr_guid(rguidObject),dwIndex,debugstr_guid(rguidInterface),ppObject);
- WARN("control unavailable\n"); - return DSERR_CONTROLUNAVAIL; + if (dwIndex >= This->num_filters) + return DSERR_OBJECTNOTFOUND; + + if (!ppObject) + return E_INVALIDARG; + + if (IsEqualGUID(rguidObject, &This->filters[dwIndex].guid) || IsEqualGUID(rguidObject, &GUID_All_Objects)) { + if (SUCCEEDED(IMediaObject_QueryInterface(This->filters[dwIndex].obj, rguidInterface, ppObject))) + return DS_OK; + else + return E_NOINTERFACE; + } else { + WARN("control unavailable\n"); + return DSERR_OBJECTNOTFOUND; + } }
static HRESULT WINAPI IDirectSoundBufferImpl_Initialize(IDirectSoundBuffer8 *iface,