dsound: Primary buffer isn't an IDirectSoundBuffer8
Maarten Lankhorst
m.b.lankhorst at gmail.com
Sun May 13 05:58:36 CDT 2007
So dont act like it is.
-------------- next part --------------
>From dda219e09b9ab1b1d7d139b6a1c1d150b1e6947f Mon Sep 17 00:00:00 2001
From: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date: Sun, 13 May 2007 12:39:30 +0200
Subject: [PATCH] dsound: Primary buffer isn't an IDirectSoundBuffer8
---
dlls/dsound/dsound_private.h | 2 +-
dlls/dsound/primary.c | 87 +++++++++++-------------------------------
dlls/dsound/tests/dsound8.c | 5 ++
3 files changed, 29 insertions(+), 65 deletions(-)
diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h
index cb14457..c46c945 100644
--- a/dlls/dsound/dsound_private.h
+++ b/dlls/dsound/dsound_private.h
@@ -223,7 +223,7 @@ HRESULT SecondaryBufferImpl_Create(
*/
struct PrimaryBufferImpl
{
- const IDirectSoundBuffer8Vtbl *lpVtbl;
+ const IDirectSoundBufferVtbl *lpVtbl;
LONG ref;
DirectSoundDevice* device;
};
diff --git a/dlls/dsound/primary.c b/dlls/dsound/primary.c
index 46314cd..83819a4 100644
--- a/dlls/dsound/primary.c
+++ b/dlls/dsound/primary.c
@@ -433,7 +433,7 @@ done:
/* This sets this format for the <em>Primary Buffer Only</em> */
/* See file:///cdrom/sdk52/docs/worddoc/dsound.doc page 120 */
static HRESULT WINAPI PrimaryBufferImpl_SetFormat(
- LPDIRECTSOUNDBUFFER8 iface,
+ LPDIRECTSOUNDBUFFER iface,
LPCWAVEFORMATEX wfex)
{
TRACE("(%p,%p)\n", iface, wfex);
@@ -441,7 +441,7 @@ static HRESULT WINAPI PrimaryBufferImpl_SetFormat(
}
static HRESULT WINAPI PrimaryBufferImpl_SetVolume(
- LPDIRECTSOUNDBUFFER8 iface,LONG vol
+ LPDIRECTSOUNDBUFFER iface,LONG vol
) {
DirectSoundDevice *device = ((PrimaryBufferImpl *)iface)->device;
DWORD ampfactors;
@@ -486,7 +486,7 @@ static HRESULT WINAPI PrimaryBufferImpl_SetVolume(
}
static HRESULT WINAPI PrimaryBufferImpl_GetVolume(
- LPDIRECTSOUNDBUFFER8 iface,LPLONG vol
+ LPDIRECTSOUNDBUFFER iface,LPLONG vol
) {
DirectSoundDevice *device = ((PrimaryBufferImpl *)iface)->device;
DWORD ampfactors;
@@ -512,7 +512,7 @@ static HRESULT WINAPI PrimaryBufferImpl_GetVolume(
}
static HRESULT WINAPI PrimaryBufferImpl_SetFrequency(
- LPDIRECTSOUNDBUFFER8 iface,DWORD freq
+ LPDIRECTSOUNDBUFFER iface,DWORD freq
) {
PrimaryBufferImpl *This = (PrimaryBufferImpl *)iface;
TRACE("(%p,%d)\n",This,freq);
@@ -523,7 +523,7 @@ static HRESULT WINAPI PrimaryBufferImpl_SetFrequency(
}
static HRESULT WINAPI PrimaryBufferImpl_Play(
- LPDIRECTSOUNDBUFFER8 iface,DWORD reserved1,DWORD reserved2,DWORD flags
+ LPDIRECTSOUNDBUFFER iface,DWORD reserved1,DWORD reserved2,DWORD flags
) {
DirectSoundDevice *device = ((PrimaryBufferImpl *)iface)->device;
TRACE("(%p,%08x,%08x,%08x)\n", iface, reserved1, reserved2, flags);
@@ -547,7 +547,7 @@ static HRESULT WINAPI PrimaryBufferImpl_Play(
return DS_OK;
}
-static HRESULT WINAPI PrimaryBufferImpl_Stop(LPDIRECTSOUNDBUFFER8 iface)
+static HRESULT WINAPI PrimaryBufferImpl_Stop(LPDIRECTSOUNDBUFFER iface)
{
DirectSoundDevice *device = ((PrimaryBufferImpl *)iface)->device;
TRACE("(%p)\n", iface);
@@ -566,7 +566,7 @@ static HRESULT WINAPI PrimaryBufferImpl_Stop(LPDIRECTSOUNDBUFFER8 iface)
return DS_OK;
}
-static ULONG WINAPI PrimaryBufferImpl_AddRef(LPDIRECTSOUNDBUFFER8 iface)
+static ULONG WINAPI PrimaryBufferImpl_AddRef(LPDIRECTSOUNDBUFFER iface)
{
PrimaryBufferImpl *This = (PrimaryBufferImpl *)iface;
ULONG ref = InterlockedIncrement(&(This->ref));
@@ -574,7 +574,7 @@ static ULONG WINAPI PrimaryBufferImpl_AddRef(LPDIRECTSOUNDBUFFER8 iface)
return ref;
}
-static ULONG WINAPI PrimaryBufferImpl_Release(LPDIRECTSOUNDBUFFER8 iface)
+static ULONG WINAPI PrimaryBufferImpl_Release(LPDIRECTSOUNDBUFFER iface)
{
PrimaryBufferImpl *This = (PrimaryBufferImpl *)iface;
DWORD ref = InterlockedDecrement(&(This->ref));
@@ -589,7 +589,7 @@ static ULONG WINAPI PrimaryBufferImpl_Release(LPDIRECTSOUNDBUFFER8 iface)
}
static HRESULT WINAPI PrimaryBufferImpl_GetCurrentPosition(
- LPDIRECTSOUNDBUFFER8 iface,LPDWORD playpos,LPDWORD writepos
+ LPDIRECTSOUNDBUFFER iface,LPDWORD playpos,LPDWORD writepos
) {
HRESULT hres;
DirectSoundDevice *device = ((PrimaryBufferImpl *)iface)->device;
@@ -611,7 +611,7 @@ static HRESULT WINAPI PrimaryBufferImpl_GetCurrentPosition(
}
static HRESULT WINAPI PrimaryBufferImpl_GetStatus(
- LPDIRECTSOUNDBUFFER8 iface,LPDWORD status
+ LPDIRECTSOUNDBUFFER iface,LPDWORD status
) {
DirectSoundDevice *device = ((PrimaryBufferImpl *)iface)->device;
TRACE("(%p,%p)\n", iface, status);
@@ -632,7 +632,7 @@ static HRESULT WINAPI PrimaryBufferImpl_GetStatus(
static HRESULT WINAPI PrimaryBufferImpl_GetFormat(
- LPDIRECTSOUNDBUFFER8 iface,
+ LPDIRECTSOUNDBUFFER iface,
LPWAVEFORMATEX lpwf,
DWORD wfsize,
LPDWORD wfwritten)
@@ -667,7 +667,7 @@ static HRESULT WINAPI PrimaryBufferImpl_GetFormat(
}
static HRESULT WINAPI PrimaryBufferImpl_Lock(
- LPDIRECTSOUNDBUFFER8 iface,DWORD writecursor,DWORD writebytes,LPVOID *lplpaudioptr1,LPDWORD audiobytes1,LPVOID *lplpaudioptr2,LPDWORD audiobytes2,DWORD flags
+ LPDIRECTSOUNDBUFFER iface,DWORD writecursor,DWORD writebytes,LPVOID *lplpaudioptr1,LPDWORD audiobytes1,LPVOID *lplpaudioptr2,LPDWORD audiobytes2,DWORD flags
) {
HRESULT hres;
DirectSoundDevice *device = ((PrimaryBufferImpl *)iface)->device;
@@ -747,7 +747,7 @@ static HRESULT WINAPI PrimaryBufferImpl_Lock(
}
static HRESULT WINAPI PrimaryBufferImpl_SetCurrentPosition(
- LPDIRECTSOUNDBUFFER8 iface,DWORD newpos
+ LPDIRECTSOUNDBUFFER iface,DWORD newpos
) {
PrimaryBufferImpl *This = (PrimaryBufferImpl *)iface;
TRACE("(%p,%d)\n",This,newpos);
@@ -758,7 +758,7 @@ static HRESULT WINAPI PrimaryBufferImpl_SetCurrentPosition(
}
static HRESULT WINAPI PrimaryBufferImpl_SetPan(
- LPDIRECTSOUNDBUFFER8 iface,LONG pan
+ LPDIRECTSOUNDBUFFER iface,LONG pan
) {
DirectSoundDevice *device = ((PrimaryBufferImpl *)iface)->device;
DWORD ampfactors;
@@ -803,7 +803,7 @@ static HRESULT WINAPI PrimaryBufferImpl_SetPan(
}
static HRESULT WINAPI PrimaryBufferImpl_GetPan(
- LPDIRECTSOUNDBUFFER8 iface,LPLONG pan
+ LPDIRECTSOUNDBUFFER iface,LPLONG pan
) {
DirectSoundDevice *device = ((PrimaryBufferImpl *)iface)->device;
DWORD ampfactors;
@@ -829,7 +829,7 @@ static HRESULT WINAPI PrimaryBufferImpl_GetPan(
}
static HRESULT WINAPI PrimaryBufferImpl_Unlock(
- LPDIRECTSOUNDBUFFER8 iface,LPVOID p1,DWORD x1,LPVOID p2,DWORD x2
+ LPDIRECTSOUNDBUFFER iface,LPVOID p1,DWORD x1,LPVOID p2,DWORD x2
) {
DirectSoundDevice *device = ((PrimaryBufferImpl *)iface)->device;
TRACE("(%p,%p,%d,%p,%d)\n", iface, p1, x1, p2, x2);
@@ -853,7 +853,7 @@ static HRESULT WINAPI PrimaryBufferImpl_Unlock(
}
static HRESULT WINAPI PrimaryBufferImpl_Restore(
- LPDIRECTSOUNDBUFFER8 iface
+ LPDIRECTSOUNDBUFFER iface
) {
PrimaryBufferImpl *This = (PrimaryBufferImpl *)iface;
FIXME("(%p):stub\n",This);
@@ -861,7 +861,7 @@ static HRESULT WINAPI PrimaryBufferImpl_Restore(
}
static HRESULT WINAPI PrimaryBufferImpl_GetFrequency(
- LPDIRECTSOUNDBUFFER8 iface,LPDWORD freq
+ LPDIRECTSOUNDBUFFER iface,LPDWORD freq
) {
DirectSoundDevice *device = ((PrimaryBufferImpl *)iface)->device;
TRACE("(%p,%p)\n", iface, freq);
@@ -882,46 +882,8 @@ static HRESULT WINAPI PrimaryBufferImpl_GetFrequency(
return DS_OK;
}
-static HRESULT WINAPI PrimaryBufferImpl_SetFX(
- LPDIRECTSOUNDBUFFER8 iface,DWORD dwEffectsCount,LPDSEFFECTDESC pDSFXDesc,LPDWORD pdwResultCodes
-) {
- PrimaryBufferImpl *This = (PrimaryBufferImpl *)iface;
- DWORD u;
- FIXME("(%p,%u,%p,%p): stub\n",This,dwEffectsCount,pDSFXDesc,pdwResultCodes);
-
- if (pdwResultCodes)
- for (u=0; u<dwEffectsCount; u++) pdwResultCodes[u] = DSFXR_UNKNOWN;
-
- WARN("control unavailable\n");
- return DSERR_CONTROLUNAVAIL;
-}
-
-static HRESULT WINAPI PrimaryBufferImpl_AcquireResources(
- LPDIRECTSOUNDBUFFER8 iface,DWORD dwFlags,DWORD dwEffectsCount,LPDWORD pdwResultCodes
-) {
- PrimaryBufferImpl *This = (PrimaryBufferImpl *)iface;
- DWORD u;
- FIXME("(%p,%08u,%u,%p): stub\n",This,dwFlags,dwEffectsCount,pdwResultCodes);
-
- if (pdwResultCodes)
- for (u=0; u<dwEffectsCount; u++) pdwResultCodes[u] = DSFXR_UNKNOWN;
-
- WARN("control unavailable\n");
- return DSERR_CONTROLUNAVAIL;
-}
-
-static HRESULT WINAPI PrimaryBufferImpl_GetObjectInPath(
- LPDIRECTSOUNDBUFFER8 iface,REFGUID rguidObject,DWORD dwIndex,REFGUID rguidInterface,LPVOID* ppObject
-) {
- PrimaryBufferImpl *This = (PrimaryBufferImpl *)iface;
- FIXME("(%p,%s,%u,%s,%p): stub\n",This,debugstr_guid(rguidObject),dwIndex,debugstr_guid(rguidInterface),ppObject);
-
- WARN("control unavailable\n");
- return DSERR_CONTROLUNAVAIL;
-}
-
static HRESULT WINAPI PrimaryBufferImpl_Initialize(
- LPDIRECTSOUNDBUFFER8 iface,LPDIRECTSOUND dsound,LPCDSBUFFERDESC dbsd
+ LPDIRECTSOUNDBUFFER iface,LPDIRECTSOUND dsound,LPCDSBUFFERDESC dbsd
) {
PrimaryBufferImpl *This = (PrimaryBufferImpl *)iface;
FIXME("(%p,%p,%p):stub\n",This,dsound,dbsd);
@@ -931,7 +893,7 @@ static HRESULT WINAPI PrimaryBufferImpl_Initialize(
}
static HRESULT WINAPI PrimaryBufferImpl_GetCaps(
- LPDIRECTSOUNDBUFFER8 iface,LPDSBCAPS caps
+ LPDIRECTSOUNDBUFFER iface,LPDSBCAPS caps
) {
DirectSoundDevice *device = ((PrimaryBufferImpl *)iface)->device;
TRACE("(%p,%p)\n", iface, caps);
@@ -963,7 +925,7 @@ static HRESULT WINAPI PrimaryBufferImpl_GetCaps(
}
static HRESULT WINAPI PrimaryBufferImpl_QueryInterface(
- LPDIRECTSOUNDBUFFER8 iface,REFIID riid,LPVOID *ppobj
+ LPDIRECTSOUNDBUFFER iface,REFIID riid,LPVOID *ppobj
) {
PrimaryBufferImpl *This = (PrimaryBufferImpl *)iface;
DirectSoundDevice *device = This->device;
@@ -1023,7 +985,7 @@ static HRESULT WINAPI PrimaryBufferImpl_QueryInterface(
return E_NOINTERFACE;
}
-static const IDirectSoundBuffer8Vtbl dspbvt =
+static const IDirectSoundBufferVtbl dspbvt =
{
PrimaryBufferImpl_QueryInterface,
PrimaryBufferImpl_AddRef,
@@ -1045,10 +1007,7 @@ static const IDirectSoundBuffer8Vtbl dspbvt =
PrimaryBufferImpl_SetFrequency,
PrimaryBufferImpl_Stop,
PrimaryBufferImpl_Unlock,
- PrimaryBufferImpl_Restore,
- PrimaryBufferImpl_SetFX,
- PrimaryBufferImpl_AcquireResources,
- PrimaryBufferImpl_GetObjectInPath
+ PrimaryBufferImpl_Restore
};
HRESULT PrimaryBufferImpl_Create(
diff --git a/dlls/dsound/tests/dsound8.c b/dlls/dsound/tests/dsound8.c
index 9e5425c..3a0063f 100644
--- a/dlls/dsound/tests/dsound8.c
+++ b/dlls/dsound/tests/dsound8.c
@@ -395,6 +395,7 @@ static HRESULT test_primary8(LPGUID lpGuid)
HRESULT rc;
LPDIRECTSOUND8 dso=NULL;
LPDIRECTSOUNDBUFFER primary=NULL,second=NULL,third=NULL;
+ LPDIRECTSOUNDBUFFER8 pb8 = NULL;
DSBUFFERDESC bufdesc;
DSCAPS dscaps;
WAVEFORMATEX wfx;
@@ -495,6 +496,10 @@ static HRESULT test_primary8(LPGUID lpGuid)
ok(rc!=DS_OK,"IDirectSound8_DuplicateSoundBuffer() primary buffer "
"should have failed %s\n",DXGetErrorString8(rc));
+ /* Primary buffers don't have an IDirectSoundBuffer8 */
+ rc = IDirectSoundBuffer_QueryInterface(primary, &IID_IDirectSoundBuffer8, (LPVOID*)&pb8);
+ ok(FAILED(rc), "Primary buffer does have an IDirectSoundBuffer8: %s\n", DXGetErrorString8(rc));
+
rc=IDirectSoundBuffer_GetVolume(primary,&vol);
ok(rc==DS_OK,"IDirectSoundBuffer_GetVolume() failed: %s\n",
DXGetErrorString8(rc));
--
1.4.4.2
More information about the wine-patches
mailing list