Commit c9b70ddf authored by Maarten Lankhorst's avatar Maarten Lankhorst Committed by Alexandre Julliard

dsound: Remove directsound interface in duplex.

parent 9aa5aa33
...@@ -109,8 +109,6 @@ static HRESULT IDirectSoundImpl_Create(LPDIRECTSOUND8 * ppds); ...@@ -109,8 +109,6 @@ static HRESULT IDirectSoundImpl_Create(LPDIRECTSOUND8 * ppds);
static ULONG WINAPI IDirectSound_IUnknown_AddRef(LPUNKNOWN iface); static ULONG WINAPI IDirectSound_IUnknown_AddRef(LPUNKNOWN iface);
static ULONG WINAPI IDirectSound_IDirectSound_AddRef(LPDIRECTSOUND iface); static ULONG WINAPI IDirectSound_IDirectSound_AddRef(LPDIRECTSOUND iface);
static HRESULT DirectSoundDevice_VerifyCertification(DirectSoundDevice * device, LPDWORD pdwCertified);
const char * dumpCooperativeLevel(DWORD level) const char * dumpCooperativeLevel(DWORD level)
{ {
#define LE(x) case x: return #x #define LE(x) case x: return #x
...@@ -1773,7 +1771,7 @@ HRESULT DirectSoundDevice_SetSpeakerConfig( ...@@ -1773,7 +1771,7 @@ HRESULT DirectSoundDevice_SetSpeakerConfig(
return DS_OK; return DS_OK;
} }
static HRESULT DirectSoundDevice_VerifyCertification( HRESULT DirectSoundDevice_VerifyCertification(
DirectSoundDevice * device, DirectSoundDevice * device,
LPDWORD pdwCertified) LPDWORD pdwCertified)
{ {
......
...@@ -152,6 +152,8 @@ HRESULT DirectSoundDevice_GetSpeakerConfig( ...@@ -152,6 +152,8 @@ HRESULT DirectSoundDevice_GetSpeakerConfig(
HRESULT DirectSoundDevice_SetSpeakerConfig( HRESULT DirectSoundDevice_SetSpeakerConfig(
DirectSoundDevice * device, DirectSoundDevice * device,
DWORD config); DWORD config);
HRESULT DirectSoundDevice_VerifyCertification(DirectSoundDevice * device,
LPDWORD pdwCertified);
/***************************************************************************** /*****************************************************************************
* IDirectSoundBuffer implementation structure * IDirectSoundBuffer implementation structure
......
...@@ -51,7 +51,6 @@ typedef struct IDirectSoundFullDuplexImpl ...@@ -51,7 +51,6 @@ typedef struct IDirectSoundFullDuplexImpl
DirectSoundCaptureDevice *capture_device; DirectSoundCaptureDevice *capture_device;
LPUNKNOWN pUnknown; LPUNKNOWN pUnknown;
LPDIRECTSOUND pDS;
LPDIRECTSOUND8 pDS8; LPDIRECTSOUND8 pDS8;
LPDIRECTSOUNDCAPTURE pDSC; LPDIRECTSOUNDCAPTURE pDSC;
} IDirectSoundFullDuplexImpl; } IDirectSoundFullDuplexImpl;
...@@ -62,12 +61,6 @@ typedef struct IDirectSoundFullDuplex_IUnknown { ...@@ -62,12 +61,6 @@ typedef struct IDirectSoundFullDuplex_IUnknown {
IDirectSoundFullDuplexImpl *pdsfd; IDirectSoundFullDuplexImpl *pdsfd;
} IDirectSoundFullDuplex_IUnknown; } IDirectSoundFullDuplex_IUnknown;
typedef struct IDirectSoundFullDuplex_IDirectSound {
const IDirectSoundVtbl *lpVtbl;
LONG ref;
IDirectSoundFullDuplexImpl *pdsfd;
} IDirectSoundFullDuplex_IDirectSound;
typedef struct IDirectSoundFullDuplex_IDirectSound8 { typedef struct IDirectSoundFullDuplex_IDirectSound8 {
const IDirectSound8Vtbl *lpVtbl; const IDirectSound8Vtbl *lpVtbl;
LONG ref; LONG ref;
...@@ -157,171 +150,6 @@ static HRESULT IDirectSoundFullDuplex_IUnknown_Create( ...@@ -157,171 +150,6 @@ static HRESULT IDirectSoundFullDuplex_IUnknown_Create(
} }
/******************************************************************************* /*******************************************************************************
* IDirectSoundFullDuplex_IDirectSound
*/
static HRESULT WINAPI IDirectSoundFullDuplex_IDirectSound_QueryInterface(
LPDIRECTSOUND iface,
REFIID riid,
LPVOID * ppobj)
{
IDirectSoundFullDuplex_IDirectSound *This = (IDirectSoundFullDuplex_IDirectSound *)iface;
TRACE("(%p,%s,%p)\n",This,debugstr_guid(riid),ppobj);
return IDirectSoundFullDuplex_QueryInterface((LPDIRECTSOUNDFULLDUPLEX)This->pdsfd, riid, ppobj);
}
static ULONG WINAPI IDirectSoundFullDuplex_IDirectSound_AddRef(
LPDIRECTSOUND iface)
{
IDirectSoundFullDuplex_IDirectSound *This = (IDirectSoundFullDuplex_IDirectSound *)iface;
ULONG ref = InterlockedIncrement(&(This->ref));
TRACE("(%p) ref was %d\n", This, ref - 1);
return ref;
}
static ULONG WINAPI IDirectSoundFullDuplex_IDirectSound_Release(
LPDIRECTSOUND iface)
{
IDirectSoundFullDuplex_IDirectSound *This = (IDirectSoundFullDuplex_IDirectSound *)iface;
ULONG ref = InterlockedDecrement(&(This->ref));
TRACE("(%p) ref was %d\n", This, ref + 1);
if (!ref) {
This->pdsfd->pDS = NULL;
HeapFree(GetProcessHeap(), 0, This);
TRACE("(%p) released\n", This);
}
return ref;
}
static HRESULT WINAPI IDirectSoundFullDuplex_IDirectSound_CreateSoundBuffer(
LPDIRECTSOUND iface,
LPCDSBUFFERDESC dsbd,
LPLPDIRECTSOUNDBUFFER ppdsb,
LPUNKNOWN lpunk)
{
IDirectSoundFullDuplex_IDirectSound *This = (IDirectSoundFullDuplex_IDirectSound *)iface;
TRACE("(%p,%p,%p,%p)\n",This,dsbd,ppdsb,lpunk);
return DirectSoundDevice_CreateSoundBuffer(This->pdsfd->renderer_device,dsbd,ppdsb,lpunk,FALSE);
}
static HRESULT WINAPI IDirectSoundFullDuplex_IDirectSound_GetCaps(
LPDIRECTSOUND iface,
LPDSCAPS lpDSCaps)
{
IDirectSoundFullDuplex_IDirectSound *This = (IDirectSoundFullDuplex_IDirectSound *)iface;
TRACE("(%p,%p)\n",This,lpDSCaps);
return DirectSoundDevice_GetCaps(This->pdsfd->renderer_device, lpDSCaps);
}
static HRESULT WINAPI IDirectSoundFullDuplex_IDirectSound_DuplicateSoundBuffer(
LPDIRECTSOUND iface,
LPDIRECTSOUNDBUFFER psb,
LPLPDIRECTSOUNDBUFFER ppdsb)
{
IDirectSoundFullDuplex_IDirectSound *This = (IDirectSoundFullDuplex_IDirectSound *)iface;
TRACE("(%p,%p,%p)\n",This,psb,ppdsb);
return DirectSoundDevice_DuplicateSoundBuffer(This->pdsfd->renderer_device,psb,ppdsb);
}
static HRESULT WINAPI IDirectSoundFullDuplex_IDirectSound_SetCooperativeLevel(
LPDIRECTSOUND iface,
HWND hwnd,
DWORD level)
{
IDirectSoundFullDuplex_IDirectSound *This = (IDirectSoundFullDuplex_IDirectSound *)iface;
TRACE("(%p,%p,%s)\n",This,hwnd,dumpCooperativeLevel(level));
return DirectSoundDevice_SetCooperativeLevel(This->pdsfd->renderer_device,hwnd,level);
}
static HRESULT WINAPI IDirectSoundFullDuplex_IDirectSound_Compact(
LPDIRECTSOUND iface)
{
IDirectSoundFullDuplex_IDirectSound *This = (IDirectSoundFullDuplex_IDirectSound *)iface;
TRACE("(%p)\n", This);
return DirectSoundDevice_Compact(This->pdsfd->renderer_device);
}
static HRESULT WINAPI IDirectSoundFullDuplex_IDirectSound_GetSpeakerConfig(
LPDIRECTSOUND iface,
LPDWORD lpdwSpeakerConfig)
{
IDirectSoundFullDuplex_IDirectSound *This = (IDirectSoundFullDuplex_IDirectSound *)iface;
TRACE("(%p, %p)\n", This, lpdwSpeakerConfig);
return DirectSoundDevice_GetSpeakerConfig(This->pdsfd->renderer_device,lpdwSpeakerConfig);
}
static HRESULT WINAPI IDirectSoundFullDuplex_IDirectSound_SetSpeakerConfig(
LPDIRECTSOUND iface,
DWORD config)
{
IDirectSoundFullDuplex_IDirectSound *This = (IDirectSoundFullDuplex_IDirectSound *)iface;
TRACE("(%p,0x%08x)\n",This,config);
return DirectSoundDevice_SetSpeakerConfig(This->pdsfd->renderer_device,config);
}
static HRESULT WINAPI IDirectSoundFullDuplex_IDirectSound_Initialize(
LPDIRECTSOUND iface,
LPCGUID lpcGuid)
{
IDirectSoundFullDuplex_IDirectSound *This = (IDirectSoundFullDuplex_IDirectSound *)iface;
TRACE("(%p, %s)\n", This, debugstr_guid(lpcGuid));
return DirectSoundDevice_Initialize(&This->pdsfd->renderer_device,lpcGuid);
}
static const IDirectSoundVtbl DirectSoundFullDuplex_DirectSound_Vtbl =
{
IDirectSoundFullDuplex_IDirectSound_QueryInterface,
IDirectSoundFullDuplex_IDirectSound_AddRef,
IDirectSoundFullDuplex_IDirectSound_Release,
IDirectSoundFullDuplex_IDirectSound_CreateSoundBuffer,
IDirectSoundFullDuplex_IDirectSound_GetCaps,
IDirectSoundFullDuplex_IDirectSound_DuplicateSoundBuffer,
IDirectSoundFullDuplex_IDirectSound_SetCooperativeLevel,
IDirectSoundFullDuplex_IDirectSound_Compact,
IDirectSoundFullDuplex_IDirectSound_GetSpeakerConfig,
IDirectSoundFullDuplex_IDirectSound_SetSpeakerConfig,
IDirectSoundFullDuplex_IDirectSound_Initialize
};
static HRESULT IDirectSoundFullDuplex_IDirectSound_Create(
LPDIRECTSOUNDFULLDUPLEX pdsfd,
LPDIRECTSOUND * ppds)
{
IDirectSoundFullDuplex_IDirectSound * pdsfdds;
TRACE("(%p,%p)\n",pdsfd,ppds);
if (pdsfd == NULL) {
ERR("invalid parameter: pdsfd == NULL\n");
return DSERR_INVALIDPARAM;
}
if (ppds == NULL) {
ERR("invalid parameter: ppds == NULL\n");
return DSERR_INVALIDPARAM;
}
if (((IDirectSoundFullDuplexImpl*)pdsfd)->renderer_device == NULL) {
WARN("not initialized\n");
*ppds = NULL;
return DSERR_UNINITIALIZED;
}
pdsfdds = HeapAlloc(GetProcessHeap(),0,sizeof(*pdsfdds));
if (pdsfdds == NULL) {
WARN("out of memory\n");
*ppds = NULL;
return DSERR_OUTOFMEMORY;
}
pdsfdds->lpVtbl = &DirectSoundFullDuplex_DirectSound_Vtbl;
pdsfdds->ref = 0;
pdsfdds->pdsfd = (IDirectSoundFullDuplexImpl *)pdsfd;
*ppds = (LPDIRECTSOUND)pdsfdds;
return DS_OK;
}
/*******************************************************************************
* IDirectSoundFullDuplex_IDirectSound8 * IDirectSoundFullDuplex_IDirectSound8
*/ */
static HRESULT WINAPI IDirectSoundFullDuplex_IDirectSound8_QueryInterface( static HRESULT WINAPI IDirectSoundFullDuplex_IDirectSound8_QueryInterface(
...@@ -432,6 +260,15 @@ static HRESULT WINAPI IDirectSoundFullDuplex_IDirectSound8_Initialize( ...@@ -432,6 +260,15 @@ static HRESULT WINAPI IDirectSoundFullDuplex_IDirectSound8_Initialize(
return DirectSoundDevice_Initialize(&This->pdsfd->renderer_device,lpcGuid); return DirectSoundDevice_Initialize(&This->pdsfd->renderer_device,lpcGuid);
} }
static HRESULT WINAPI IDirectSoundFullDuplex_IDirectSound8_VerifyCertification(
LPDIRECTSOUND8 iface,
DWORD *cert)
{
IDirectSoundFullDuplex_IDirectSound8 *This = (IDirectSoundFullDuplex_IDirectSound8 *)iface;
TRACE("(%p, %p)\n", This, cert);
return DirectSoundDevice_VerifyCertification(This->pdsfd->renderer_device,cert);
}
static const IDirectSound8Vtbl DirectSoundFullDuplex_DirectSound8_Vtbl = static const IDirectSound8Vtbl DirectSoundFullDuplex_DirectSound8_Vtbl =
{ {
IDirectSoundFullDuplex_IDirectSound8_QueryInterface, IDirectSoundFullDuplex_IDirectSound8_QueryInterface,
...@@ -444,7 +281,8 @@ static const IDirectSound8Vtbl DirectSoundFullDuplex_DirectSound8_Vtbl = ...@@ -444,7 +281,8 @@ static const IDirectSound8Vtbl DirectSoundFullDuplex_DirectSound8_Vtbl =
IDirectSoundFullDuplex_IDirectSound8_Compact, IDirectSoundFullDuplex_IDirectSound8_Compact,
IDirectSoundFullDuplex_IDirectSound8_GetSpeakerConfig, IDirectSoundFullDuplex_IDirectSound8_GetSpeakerConfig,
IDirectSoundFullDuplex_IDirectSound8_SetSpeakerConfig, IDirectSoundFullDuplex_IDirectSound8_SetSpeakerConfig,
IDirectSoundFullDuplex_IDirectSound8_Initialize IDirectSoundFullDuplex_IDirectSound8_Initialize,
IDirectSoundFullDuplex_IDirectSound8_VerifyCertification
}; };
static HRESULT IDirectSoundFullDuplex_IDirectSound8_Create( static HRESULT IDirectSoundFullDuplex_IDirectSound8_Create(
...@@ -644,19 +482,8 @@ IDirectSoundFullDuplexImpl_QueryInterface( ...@@ -644,19 +482,8 @@ IDirectSoundFullDuplexImpl_QueryInterface(
IDirectSoundFullDuplexImpl_AddRef(iface); IDirectSoundFullDuplexImpl_AddRef(iface);
*ppobj = This; *ppobj = This;
return S_OK; return S_OK;
} else if (IsEqualIID(riid, &IID_IDirectSound)) { } else if (IsEqualIID(riid, &IID_IDirectSound)
if (!This->pDS) { || IsEqualIID(riid, &IID_IDirectSound8)) {
IDirectSoundFullDuplex_IDirectSound_Create(iface, &This->pDS);
if (!This->pDS) {
WARN("IDirectSoundFullDuplex_IDirectSound_Create() failed\n");
*ppobj = NULL;
return E_NOINTERFACE;
}
}
IDirectSoundFullDuplex_IDirectSound_AddRef(This->pDS);
*ppobj = This->pDS;
return S_OK;
} else if (IsEqualIID(riid, &IID_IDirectSound8)) {
if (!This->pDS8) { if (!This->pDS8) {
IDirectSoundFullDuplex_IDirectSound8_Create(iface, &This->pDS8); IDirectSoundFullDuplex_IDirectSound8_Create(iface, &This->pDS8);
if (!This->pDS8) { if (!This->pDS8) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment