X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fdll%2Fdirectx%2Fdsound_new%2Fsecondary.c;h=c2f29bf58a48faa854dc90a37350f89d4333b84e;hp=4474c2665eac90043ed5760a30a7d21bf57c754e;hb=a12bfcf5d5db8c3579a47de09524c9bfa17e021e;hpb=8c8041b1d656df4f76ae6fa64e2f3186fa1dbfb2 diff --git a/reactos/dll/directx/dsound_new/secondary.c b/reactos/dll/directx/dsound_new/secondary.c index 4474c2665ea..c2f29bf58a4 100644 --- a/reactos/dll/directx/dsound_new/secondary.c +++ b/reactos/dll/directx/dsound_new/secondary.c @@ -17,6 +17,7 @@ typedef struct LPFILTERINFO Filter; DWORD dwLevel; + DWORD dwFlags; LPWAVEFORMATEX Format; PUCHAR Buffer; DWORD BufferSize; @@ -97,8 +98,27 @@ SecondaryDirectSoundBuffer8Impl_fnGetCaps( LPDIRECTSOUNDBUFFER8 iface, LPDSBCAPS pDSBufferCaps) { - UNIMPLEMENTED - return DSERR_INVALIDPARAM; + LPCDirectSoundBuffer This = (LPCDirectSoundBuffer)CONTAINING_RECORD(iface, CDirectSoundBuffer, lpVtbl); + + if (!pDSBufferCaps) + { + /* invalid parameter */ + return DSERR_INVALIDPARAM; + } + + if (pDSBufferCaps->dwSize < sizeof(DSBCAPS)) + { + /* invalid buffer size */ + return DSERR_INVALIDPARAM; + } + + /* get buffer details */ + pDSBufferCaps->dwUnlockTransferRate = 0; + pDSBufferCaps->dwPlayCpuOverhead = 0; + pDSBufferCaps->dwSize = This->BufferSize; + pDSBufferCaps->dwFlags = This->dwFlags; + + return DS_OK; } HRESULT @@ -528,6 +548,7 @@ NewSecondarySoundBuffer( This->lpVtbl = &vt_DirectSoundBuffer8; This->Filter = Filter; This->dwLevel = dwLevel; + This->dwFlags = lpcDSBufferDesc->dwFlags; This->State = KSSTATE_STOP; This->Flags = 0; This->Position = 0;