Hotfix DSound Stream
This commit is contained in:
parent
0ede9c223d
commit
5e58773956
|
@ -3394,6 +3394,8 @@ HRESULT WINAPI XTL::EMUPATCH(CDirectSoundStream_SetFormat)
|
|||
LOG_FUNC_ARG(pwfxFormat)
|
||||
LOG_FUNC_END;
|
||||
|
||||
XTL::EMUPATCH(CDirectSoundStream_Flush)(pThis);
|
||||
|
||||
return HybridDirectSoundBuffer_SetFormat(pThis->EmuDirectSoundBuffer8, pwfxFormat, pThis->EmuBufferDesc,
|
||||
pThis->EmuFlags, pThis->EmuPlayFlags, pThis->EmuDirectSound3DBuffer8,
|
||||
0, pThis->X_BufferCache, pThis->X_BufferCacheSize);
|
||||
|
|
|
@ -286,7 +286,10 @@ inline void GeneratePCMFormat(
|
|||
GenerateXboxBufferCache(pDSBufferDesc, dwEmuFlags, X_BufferSizeRequest, X_BufferCache, X_BufferCacheSize);
|
||||
}
|
||||
|
||||
pDSBufferDesc->dwBufferBytes = DSoundBufferGetPCMBufferSize(dwEmuFlags, X_BufferCacheSize);
|
||||
// Handle DSound Buffer only
|
||||
if (X_BufferCacheSize > 0) {
|
||||
pDSBufferDesc->dwBufferBytes = DSoundBufferGetPCMBufferSize(dwEmuFlags, X_BufferCacheSize);
|
||||
}
|
||||
}
|
||||
|
||||
inline void DSoundGenericUnlock(
|
||||
|
@ -1060,6 +1063,11 @@ inline HRESULT HybridDirectSoundBuffer_SetFormat(
|
|||
if (g_pDSoundPrimaryBuffer == pDSBuffer) {
|
||||
hRet = pDSBuffer->SetFormat(pBufferDesc->lpwfxFormat);
|
||||
} else {
|
||||
// DSound Stream only
|
||||
if (X_BufferCacheSize == 0) {
|
||||
// Allocate at least 5 second worth of bytes in PCM format.
|
||||
pBufferDesc->dwBufferBytes = pBufferDesc->lpwfxFormat->nAvgBytesPerSec * 5;
|
||||
}
|
||||
DSoundBufferReplace(pDSBuffer, pBufferDesc, dwPlayFlags, pDS3DBuffer);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue