Module: wine Branch: master Commit: b8ffb4930fe1d9a482bfb6aef093a0a0d673f2e2 URL: http://source.winehq.org/git/wine.git/?a=commit;h=b8ffb4930fe1d9a482bfb6aef0...
Author: Michael Stefaniuc mstefani@redhat.de Date: Thu Aug 16 01:20:01 2012 +0200
dsound: Merge the DirectSoundCapture create functions.
---
dlls/dsound/capture.c | 89 +++++++++++------------------------------ dlls/dsound/dsound_main.c | 4 +- dlls/dsound/dsound_private.h | 4 +- dlls/dsound/duplex.c | 2 +- 4 files changed, 29 insertions(+), 70 deletions(-)
diff --git a/dlls/dsound/capture.c b/dlls/dsound/capture.c index 7970537..40df315 100644 --- a/dlls/dsound/capture.c +++ b/dlls/dsound/capture.c @@ -1000,6 +1000,7 @@ struct IDirectSoundCaptureImpl IDirectSoundCapture IDirectSoundCapture_iface; LONG ref; DirectSoundCaptureDevice *device; + BOOL has_dsc8; };
static inline struct IDirectSoundCaptureImpl *impl_from_IDirectSoundCapture(IDirectSoundCapture *iface) @@ -1161,83 +1162,41 @@ static const IDirectSoundCaptureVtbl dscvt = IDirectSoundCaptureImpl_Initialize };
-static HRESULT IDirectSoundCaptureImpl_Create( - LPDIRECTSOUNDCAPTURE8 * ppDSC) +static HRESULT IDirectSoundCaptureImpl_Create(REFIID riid, void **ppv, BOOL has_dsc8) { - IDirectSoundCaptureImpl *pDSC; - TRACE("(%p)\n", ppDSC); + IDirectSoundCaptureImpl *obj; + HRESULT hr;
- /* Allocate memory */ - pDSC = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(IDirectSoundCaptureImpl)); - if (pDSC == NULL) { + TRACE("(%s, %p)\n", debugstr_guid(riid), ppv); + + *ppv = NULL; + obj = HeapAlloc(GetProcessHeap(), 0, sizeof(*obj)); + if (obj == NULL) { WARN("out of memory\n"); - *ppDSC = NULL; return DSERR_OUTOFMEMORY; }
- pDSC->IDirectSoundCapture_iface.lpVtbl = &dscvt; - pDSC->ref = 0; - pDSC->device = NULL; - - *ppDSC = (LPDIRECTSOUNDCAPTURE8)pDSC; - - return DS_OK; -} - -HRESULT DSOUND_CaptureCreate(REFIID riid, IDirectSoundCapture **ppDSC) -{ - IDirectSoundCapture *pDSC; - HRESULT hr; - TRACE("(%s, %p)\n", debugstr_guid(riid), ppDSC); - - if (!IsEqualIID(riid, &IID_IUnknown) && - !IsEqualIID(riid, &IID_IDirectSoundCapture)) { - *ppDSC = 0; - return E_NOINTERFACE; - } - - /* Get dsound configuration */ setup_dsound_options();
- hr = IDirectSoundCaptureImpl_Create(&pDSC); - if (hr == DS_OK) { - IDirectSoundCapture_AddRef(pDSC); - *ppDSC = pDSC; - } else { - WARN("IDirectSoundCaptureImpl_Create failed\n"); - *ppDSC = 0; - } + obj->IDirectSoundCapture_iface.lpVtbl = &dscvt; + obj->ref = 1; + obj->device = NULL; + obj->has_dsc8 = has_dsc8; + + hr = IDirectSoundCapture_QueryInterface(&obj->IDirectSoundCapture_iface, riid, ppv); + IDirectSoundCapture_Release(&obj->IDirectSoundCapture_iface);
return hr; }
-HRESULT DSOUND_CaptureCreate8( - REFIID riid, - LPDIRECTSOUNDCAPTURE8 *ppDSC8) +HRESULT DSOUND_CaptureCreate(REFIID riid, void **ppv) { - LPDIRECTSOUNDCAPTURE8 pDSC8; - HRESULT hr; - TRACE("(%s, %p)\n", debugstr_guid(riid), ppDSC8); - - if (!IsEqualIID(riid, &IID_IUnknown) && - !IsEqualIID(riid, &IID_IDirectSoundCapture8)) { - *ppDSC8 = 0; - return E_NOINTERFACE; - } - - /* Get dsound configuration */ - setup_dsound_options(); - - hr = IDirectSoundCaptureImpl_Create(&pDSC8); - if (hr == DS_OK) { - IDirectSoundCapture_AddRef(pDSC8); - *ppDSC8 = pDSC8; - } else { - WARN("IDirectSoundCaptureImpl_Create failed\n"); - *ppDSC8 = 0; - } + return IDirectSoundCaptureImpl_Create(riid, ppv, FALSE); +}
- return hr; +HRESULT DSOUND_CaptureCreate8(REFIID riid, void **ppv) +{ + return IDirectSoundCaptureImpl_Create(riid, ppv, TRUE); }
/*************************************************************************** @@ -1280,7 +1239,7 @@ HRESULT WINAPI DirectSoundCaptureCreate(LPCGUID lpcGUID, IDirectSoundCapture **p return DSERR_NOAGGREGATION; }
- hr = DSOUND_CaptureCreate(&IID_IDirectSoundCapture, &pDSC); + hr = DSOUND_CaptureCreate(&IID_IDirectSoundCapture, (void**)&pDSC); if (hr == DS_OK) { hr = IDirectSoundCapture_Initialize(pDSC, lpcGUID); if (hr != DS_OK) { @@ -1336,7 +1295,7 @@ HRESULT WINAPI DirectSoundCaptureCreate8( return DSERR_NOAGGREGATION; }
- hr = DSOUND_CaptureCreate8(&IID_IDirectSoundCapture8, &pDSC8); + hr = DSOUND_CaptureCreate8(&IID_IDirectSoundCapture8, (void**)&pDSC8); if (hr == DS_OK) { hr = IDirectSoundCapture_Initialize(pDSC8, lpcGUID); if (hr != DS_OK) { diff --git a/dlls/dsound/dsound_main.c b/dlls/dsound/dsound_main.c index e1969a1..34b23a5 100644 --- a/dlls/dsound/dsound_main.c +++ b/dlls/dsound/dsound_main.c @@ -721,8 +721,8 @@ static const IClassFactoryVtbl DSCF_Vtbl = { static IClassFactoryImpl DSOUND_CF[] = { { { &DSCF_Vtbl }, &CLSID_DirectSound, DSOUND_Create }, { { &DSCF_Vtbl }, &CLSID_DirectSound8, DSOUND_Create8 }, - { { &DSCF_Vtbl }, &CLSID_DirectSoundCapture, (FnCreateInstance)DSOUND_CaptureCreate }, - { { &DSCF_Vtbl }, &CLSID_DirectSoundCapture8, (FnCreateInstance)DSOUND_CaptureCreate8 }, + { { &DSCF_Vtbl }, &CLSID_DirectSoundCapture, DSOUND_CaptureCreate }, + { { &DSCF_Vtbl }, &CLSID_DirectSoundCapture8, DSOUND_CaptureCreate8 }, { { &DSCF_Vtbl }, &CLSID_DirectSoundFullDuplex, (FnCreateInstance)DSOUND_FullDuplexCreate }, { { &DSCF_Vtbl }, &CLSID_DirectSoundPrivate, (FnCreateInstance)IKsPrivatePropertySetImpl_Create }, { { NULL }, NULL, NULL } diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h index be40797..107cbab 100644 --- a/dlls/dsound/dsound_private.h +++ b/dlls/dsound/dsound_private.h @@ -299,8 +299,8 @@ void DSOUND_Calc3DBuffer(IDirectSoundBufferImpl *dsb) DECLSPEC_HIDDEN;
/* capture.c */
-HRESULT DSOUND_CaptureCreate(REFIID riid, LPDIRECTSOUNDCAPTURE *ppDSC) DECLSPEC_HIDDEN; -HRESULT DSOUND_CaptureCreate8(REFIID riid, LPDIRECTSOUNDCAPTURE8 *ppDSC8) DECLSPEC_HIDDEN; +HRESULT DSOUND_CaptureCreate(REFIID riid, void **ppv) DECLSPEC_HIDDEN; +HRESULT DSOUND_CaptureCreate8(REFIID riid, void **ppv) DECLSPEC_HIDDEN;
#define STATE_STOPPED 0 #define STATE_STARTING 1 diff --git a/dlls/dsound/duplex.c b/dlls/dsound/duplex.c index ccb0c9b..b473c03 100644 --- a/dlls/dsound/duplex.c +++ b/dlls/dsound/duplex.c @@ -578,7 +578,7 @@ IDirectSoundFullDuplexImpl_Initialize( return hr; }
- hr = DSOUND_CaptureCreate8(&IID_IDirectSoundCapture8, &This->capture_device); + hr = DSOUND_CaptureCreate8(&IID_IDirectSoundCapture8, (void**)&This->capture_device); if (SUCCEEDED(hr)) hr = IDirectSoundCapture_Initialize(This->capture_device, pCaptureGuid); if (hr != DS_OK) {