Vijay Kiran Kamuju : xactengine3_7: Implement IXACT3Engine::CreateStreamingWaveBank.
Alexandre Julliard
julliard at winehq.org
Thu Aug 6 16:33:43 CDT 2020
Module: wine
Branch: master
Commit: 996e706ad346dc7fd61dc9856764167dc1592712
URL: https://source.winehq.org/git/wine.git/?a=commit;h=996e706ad346dc7fd61dc9856764167dc1592712
Author: Vijay Kiran Kamuju <infyquest at gmail.com>
Date: Sat Jul 18 22:44:31 2020 +0200
xactengine3_7: Implement IXACT3Engine::CreateStreamingWaveBank.
Based on patch from Ethan Lee.
Signed-off-by: Vijay Kiran Kamuju <infyquest at gmail.com>
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/xactengine3_7/xact_dll.c | 43 +++++++++++++++++++++++++++++++++++++++++--
1 file changed, 41 insertions(+), 2 deletions(-)
diff --git a/dlls/xactengine3_7/xact_dll.c b/dlls/xactengine3_7/xact_dll.c
index 43d2833cd7..dc4d9c01ac 100644
--- a/dlls/xactengine3_7/xact_dll.c
+++ b/dlls/xactengine3_7/xact_dll.c
@@ -690,8 +690,47 @@ static HRESULT WINAPI IXACT3EngineImpl_CreateStreamingWaveBank(IXACT3Engine *ifa
IXACT3WaveBank **ppWaveBank)
{
XACT3EngineImpl *This = impl_from_IXACT3Engine(iface);
- FIXME("(%p)->(%p, %p): stub!\n", This, pParms, ppWaveBank);
- return E_NOTIMPL;
+ FACTStreamingParameters fakeParms;
+ wrap_readfile_struct *fake;
+ XACT3WaveBankImpl *wb;
+ FACTWaveBank *fwb;
+ UINT ret;
+
+ TRACE("(%p)->(%p, %p)\n", This, pParms, ppWaveBank);
+
+ /* We have to wrap the file to fix up the callbacks! */
+ fake = (wrap_readfile_struct*) CoTaskMemAlloc(
+ sizeof(wrap_readfile_struct));
+ fake->engine = This;
+ fake->file = pParms->file;
+ fakeParms.file = fake;
+ fakeParms.flags = pParms->flags;
+ fakeParms.offset = pParms->offset;
+ fakeParms.packetSize = pParms->packetSize;
+
+ ret = FACTAudioEngine_CreateStreamingWaveBank(This->fact_engine, &fakeParms,
+ &fwb);
+ if(ret != 0)
+ {
+ ERR("Failed to CreateWaveBank: %d\n", ret);
+ return E_FAIL;
+ }
+
+ wb = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*wb));
+ if (!wb)
+ {
+ FACTWaveBank_Destroy(fwb);
+ ERR("Failed to allocate XACT3WaveBankImpl!");
+ return E_OUTOFMEMORY;
+ }
+
+ wb->IXACT3WaveBank_iface.lpVtbl = &XACT3WaveBank_Vtbl;
+ wb->fact_wavebank = fwb;
+ *ppWaveBank = (IXACT3WaveBank*)wb;
+
+ TRACE("Created streaming WaveBank: %p\n", wb);
+
+ return S_OK;
}
static HRESULT WINAPI IXACT3EngineImpl_PrepareInMemoryWave(IXACT3Engine *iface,
More information about the wine-cvs
mailing list