From b4e2fed7833b330f83cd055482ee3ee4c23072ad Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 5 Aug 2011 11:03:16 -0700 Subject: [PATCH] Avoid using the IDirectSound8 iface when creating IDirectSound objects --- capture.c | 7 +++++-- dsound8.c | 15 ++++++++------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/capture.c b/capture.c index d4640aa..cc835fa 100644 --- a/capture.c +++ b/capture.c @@ -823,8 +823,11 @@ HRESULT DSOUND_CaptureCreate(REFIID riid, void **cap) DSCImpl *impl = impl_from_IDirectSoundCapture(*cap); impl->is_8 = FALSE; - hr = IDirectSoundCapture_QueryInterface(&impl->IDirectSoundCapture_iface, riid, cap); - IDirectSoundCapture_Release(&impl->IDirectSoundCapture_iface); + if(!IsEqualIID(riid, &IID_IDirectSoundCapture)) + { + hr = IDirectSoundCapture_QueryInterface(&impl->IDirectSoundCapture_iface, riid, cap); + IDirectSoundCapture_Release(&impl->IDirectSoundCapture_iface); + } } return hr; } diff --git a/dsound8.c b/dsound8.c index 5276883..5a5492c 100644 --- a/dsound8.c +++ b/dsound8.c @@ -296,16 +296,17 @@ HRESULT DSOUND_Create(REFIID riid, void **ds) { HRESULT hr; - if(IsEqualIID(riid, &IID_IDirectSound8)) - return E_NOINTERFACE; - hr = DSOUND_Create8(&IID_IDirectSound8, ds); - if(hr == S_OK) + hr = DSOUND_Create8(&IID_IDirectSound, ds); + if(SUCCEEDED(hr)) { - DS8Impl *impl = impl_from_IDirectSound8(*ds); + DS8Impl *impl = impl_from_IDirectSound(*ds); impl->is_8 = FALSE; - hr = IDirectSound8_QueryInterface(&impl->IDirectSound8_iface, riid, ds); - IDirectSound8_Release(&impl->IDirectSound8_iface); + if(!IsEqualIID(riid, &IID_IDirectSound)) + { + hr = IDirectSound_QueryInterface(&impl->IDirectSound_iface, riid, ds); + IDirectSound_Release(&impl->IDirectSound_iface); + } } return hr; } -- 2.11.4.GIT