From 8ea0607befc4c1ad349cd85c6587aa91a6d0220d Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Fri, 2 Oct 2020 17:23:24 +1000 Subject: [PATCH] xactengine3_7: Explicity copy the XACT_RUNTIME_PARAMETERS members. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49911 Signed-off-by: Alistair Leslie-Hughes Signed-off-by: Alexandre Julliard --- dlls/xactengine3_7/xact_dll.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/dlls/xactengine3_7/xact_dll.c b/dlls/xactengine3_7/xact_dll.c index 84ed35d2c4d..281aecc154b 100644 --- a/dlls/xactengine3_7/xact_dll.c +++ b/dlls/xactengine3_7/xact_dll.c @@ -776,7 +776,16 @@ static HRESULT WINAPI IXACT3EngineImpl_Initialize(IXACT3Engine *iface, TRACE("(%p)->(%p)\n", This, pParams); - memcpy(¶ms, pParams, sizeof(FACTRuntimeParameters)); + memset(¶ms, 0, sizeof(FACTRuntimeParameters)); + /* Explicitly copy to the FAudio structure as the packing is wrong under 64 bits */ + params.lookAheadTime = pParams->lookAheadTime; + params.pGlobalSettingsBuffer = pParams->pGlobalSettingsBuffer; + params.globalSettingsBufferSize = pParams->globalSettingsBufferSize; + params.globalSettingsFlags = pParams->globalSettingsFlags; + params.globalSettingsAllocAttributes = pParams->globalSettingsAllocAttributes; + params.pRendererID = (int16_t*)pParams->pRendererID; + params.pXAudio2 = NULL; + params.pMasteringVoice = NULL; /* FIXME: pXAudio2 and pMasteringVoice are pointers to * IXAudio2/IXAudio2MasteringVoice objects. FACT wants pointers to @@ -789,12 +798,10 @@ static HRESULT WINAPI IXACT3EngineImpl_Initialize(IXACT3Engine *iface, * -flibit */ if (pParams->pXAudio2 != NULL){ - FIXME("pXAudio2 parameter not supported! Falling back to NULL\n"); - params.pXAudio2 = NULL; + FIXME("pXAudio2 parameter not supported!\n"); if (pParams->pMasteringVoice != NULL){ - FIXME("pXAudio2 parameter not supported! Falling back to NULL\n"); - params.pMasteringVoice = NULL; + FIXME("pMasteringVoice parameter not supported!\n"); } }