From 70a8802939c4d0a3762364aa4323d604a5076e17 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Mon, 18 Jun 2018 22:26:03 -0700 Subject: [PATCH] Return the correct interface requested from DSOUND_FullDuplexCreate --- duplex.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/duplex.c b/duplex.c index c36d80d..3bcc822 100644 --- a/duplex.c +++ b/duplex.c @@ -474,6 +474,8 @@ HRESULT DSOUND_FullDuplexCreate( REFIID riid, void **ppDSFD) { IDirectSoundFullDuplexImpl *This = NULL; + HRESULT hr; + TRACE("(%s, %p)\n", debugstr_guid(riid), ppDSFD); if(ppDSFD == NULL) @@ -499,7 +501,8 @@ HRESULT DSOUND_FullDuplexCreate( This->IDirectSound8_iface.lpVtbl = &DirectSoundFullDuplex_DirectSound8_Vtbl; This->IDirectSoundCapture_iface.lpVtbl = &DirectSoundFullDuplex_DirectSoundCapture_Vtbl; - This->all_ref = This->ref = 1; + This->all_ref = 0; + This->ref = 0; This->unkref = 0; This->ds8ref = 0; This->dscref = 0; @@ -507,8 +510,9 @@ HRESULT DSOUND_FullDuplexCreate( This->capture_device = NULL; This->renderer_device = NULL; - *ppDSFD = &This->IDirectSoundFullDuplex_iface; - return DS_OK; + hr = IDirectSoundFullDuplexImpl_QueryInterface(&This->IDirectSoundFullDuplex_iface, riid, ppDSFD); + if(FAILED(hr)) DSOUND_FullDuplexDestroy(This); + return hr; } /*************************************************************************** -- 2.11.4.GIT