You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
Rebase against 8cbbb4f394678411fdb57237553f5d974527877f.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,41 +0,0 @@
|
||||
From c7189e9d48079b0f3993ed8de8f774f3e0a7a97e Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Tue, 7 Jan 2020 22:14:49 +1100
|
||||
Subject: [PATCH] xaudio2_7: Support older XACT3Engine interfaces
|
||||
|
||||
---
|
||||
dlls/xaudio2_7/xact_dll.c | 11 ++++++++++-
|
||||
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/xaudio2_7/xact_dll.c b/dlls/xaudio2_7/xact_dll.c
|
||||
index 07f866606d..91e3ef0afd 100644
|
||||
--- a/dlls/xaudio2_7/xact_dll.c
|
||||
+++ b/dlls/xaudio2_7/xact_dll.c
|
||||
@@ -39,6 +39,10 @@ WINE_DEFAULT_DEBUG_CHANNEL(xact3);
|
||||
|
||||
static HINSTANCE instance;
|
||||
|
||||
+#if XACT3_VER >= 0x0301 && XACT3_VER <= 0x304
|
||||
+DEFINE_GUID(IID_IXACT3Engine301, 0xe72c1b9a, 0xd717, 0x41c0, 0x81, 0xa6, 0x50, 0xeb, 0x56, 0xe8, 0x06, 0x49);
|
||||
+#endif
|
||||
+
|
||||
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD reason, void *pReserved)
|
||||
{
|
||||
TRACE("(%p, %d, %p)\n", hinstDLL, reason, pReserved);
|
||||
@@ -852,7 +856,12 @@ static HRESULT WINAPI IXACT3EngineImpl_QueryInterface(IXACT3Engine *iface,
|
||||
TRACE("(%p)->(%s, %p)\n", This, debugstr_guid(riid), ppvObject);
|
||||
|
||||
if(IsEqualGUID(riid, &IID_IUnknown) ||
|
||||
- IsEqualGUID(riid, &IID_IXACT3Engine)){
|
||||
+#if XACT3_VER >= 0x0301 && XACT3_VER <= 0x304
|
||||
+ IsEqualGUID(riid, &IID_IXACT3Engine301)
|
||||
+#else
|
||||
+ IsEqualGUID(riid, &IID_IXACT3Engine)
|
||||
+#endif
|
||||
+ ){
|
||||
*ppvObject = &This->IXACT3Engine_iface;
|
||||
}
|
||||
else
|
||||
--
|
||||
2.25.1
|
||||
|
@@ -1,93 +0,0 @@
|
||||
From 2335980b1a1e36ce475a99b08498747021b5284c Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Wed, 8 Jan 2020 10:39:02 +1100
|
||||
Subject: [PATCH] xaudio2_7: IXACT3Engine CreateSoundBank return correct
|
||||
HRESULT values.
|
||||
|
||||
---
|
||||
dlls/xaudio2_7/xact_dll.c | 28 ++++++++++++++++------------
|
||||
1 file changed, 16 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/dlls/xaudio2_7/xact_dll.c b/dlls/xaudio2_7/xact_dll.c
|
||||
index 1f580519d4..9cec216002 100644
|
||||
--- a/dlls/xaudio2_7/xact_dll.c
|
||||
+++ b/dlls/xaudio2_7/xact_dll.c
|
||||
@@ -1005,21 +1005,23 @@ static HRESULT WINAPI IXACT3EngineImpl_CreateSoundBank(IXACT3Engine *iface,
|
||||
XACT3EngineImpl *This = impl_from_IXACT3Engine(iface);
|
||||
XACT3SoundBankImpl *sb;
|
||||
FACTSoundBank *fsb;
|
||||
- HRESULT hr;
|
||||
+ UINT ret;
|
||||
|
||||
TRACE("(%p)->(%p, %u, 0x%x, 0x%x, %p)\n", This, pvBuffer, dwSize, dwFlags,
|
||||
dwAllocAttributes, ppSoundBank);
|
||||
|
||||
- hr = FACTAudioEngine_CreateSoundBank(This->fact_engine, pvBuffer, dwSize,
|
||||
+ ret = FACTAudioEngine_CreateSoundBank(This->fact_engine, pvBuffer, dwSize,
|
||||
dwFlags, dwAllocAttributes, &fsb);
|
||||
- if(FAILED(hr))
|
||||
- return hr;
|
||||
+ if (ret != 0) {
|
||||
+ ERR("Failed to CreateSoundBank: %d\n", ret);
|
||||
+ return E_FAIL;
|
||||
+ }
|
||||
|
||||
sb = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*sb));
|
||||
if (!sb){
|
||||
FACTSoundBank_Destroy(fsb);
|
||||
ERR("Failed to allocate XACT3SoundBankImpl!");
|
||||
- return hr;
|
||||
+ return E_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
sb->IXACT3SoundBank_iface.lpVtbl = &XACT3SoundBank_Vtbl;
|
||||
@@ -1028,7 +1030,7 @@ static HRESULT WINAPI IXACT3EngineImpl_CreateSoundBank(IXACT3Engine *iface,
|
||||
|
||||
TRACE("Created SoundBank: %p\n", sb);
|
||||
|
||||
- return hr;
|
||||
+ return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI IXACT3EngineImpl_CreateInMemoryWaveBank(IXACT3Engine *iface,
|
||||
@@ -1038,21 +1040,23 @@ static HRESULT WINAPI IXACT3EngineImpl_CreateInMemoryWaveBank(IXACT3Engine *ifac
|
||||
XACT3EngineImpl *This = impl_from_IXACT3Engine(iface);
|
||||
XACT3WaveBankImpl *wb;
|
||||
FACTWaveBank *fwb;
|
||||
- HRESULT hr;
|
||||
+ UINT ret;
|
||||
|
||||
TRACE("(%p)->(%p, %u, 0x%x, 0x%x, %p)\n", This, pvBuffer, dwSize, dwFlags,
|
||||
dwAllocAttributes, ppWaveBank);
|
||||
|
||||
- hr = FACTAudioEngine_CreateInMemoryWaveBank(This->fact_engine, pvBuffer,
|
||||
+ ret = FACTAudioEngine_CreateInMemoryWaveBank(This->fact_engine, pvBuffer,
|
||||
dwSize, dwFlags, dwAllocAttributes, &fwb);
|
||||
- if(FAILED(hr))
|
||||
- return hr;
|
||||
+ if (ret != 0) {
|
||||
+ ERR("Failed to CreateInMemoryWaveBank: %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 hr;
|
||||
+ return E_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
wb->IXACT3WaveBank_iface.lpVtbl = &XACT3WaveBank_Vtbl;
|
||||
@@ -1061,7 +1065,7 @@ static HRESULT WINAPI IXACT3EngineImpl_CreateInMemoryWaveBank(IXACT3Engine *ifac
|
||||
|
||||
TRACE("Created in-memory WaveBank: %p\n", wb);
|
||||
|
||||
- return hr;
|
||||
+ return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI IXACT3EngineImpl_CreateStreamingWaveBank(IXACT3Engine *iface,
|
||||
--
|
||||
2.25.1
|
||||
|
@@ -1,106 +0,0 @@
|
||||
From 25c1fa51fd49839fe0858493537c1c3c7cdfea30 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Thu, 9 Jan 2020 09:06:01 +1100
|
||||
Subject: [PATCH] xaudio2_7: unwrap structure based of it's type.
|
||||
|
||||
---
|
||||
dlls/xaudio2_7/xact_dll.c | 54 ++++++++++++++++++++++++++++++++++-----
|
||||
1 file changed, 47 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/dlls/xaudio2_7/xact_dll.c b/dlls/xaudio2_7/xact_dll.c
|
||||
index b089f71d4ac..252c44767db 100644
|
||||
--- a/dlls/xaudio2_7/xact_dll.c
|
||||
+++ b/dlls/xaudio2_7/xact_dll.c
|
||||
@@ -1144,42 +1144,82 @@ static HRESULT WINAPI IXACT3EngineImpl_PrepareStreamingWave(IXACT3Engine *iface,
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
+enum { NOTIFY_SoundBank = 0x01,
|
||||
+ NOTIFY_WaveBank = 0x02,
|
||||
+ NOTIFY_Cue = 0x04,
|
||||
+ NOTIFY_Wave = 0x08,
|
||||
+ NOTIFY_cueIndex = 0x10,
|
||||
+ NOTIFY_waveIndex = 0x20 };
|
||||
+
|
||||
static inline void unwrap_notificationdesc(FACTNotificationDescription *fd,
|
||||
const XACT_NOTIFICATION_DESCRIPTION *xd)
|
||||
{
|
||||
+ DWORD flags = 0;
|
||||
memset(fd, 0, sizeof(*fd));
|
||||
/* We have to unwrap the FACT object first! */
|
||||
|
||||
- FIXME("Type %d\n", xd->type);
|
||||
+ TRACE("Type %d\n", xd->type);
|
||||
+ /* Supports SoundBank, Cue index, Cue instance */
|
||||
+ if (xd->type == XACTNOTIFICATIONTYPE_CUEPREPARED || xd->type == XACTNOTIFICATIONTYPE_CUEPLAY ||
|
||||
+ xd->type == XACTNOTIFICATIONTYPE_CUESTOP || xd->type == XACTNOTIFICATIONTYPE_CUEDESTROYED ||
|
||||
+ xd->type == XACTNOTIFICATIONTYPE_MARKER || xd->type == XACTNOTIFICATIONTYPE_LOCALVARIABLECHANGED)
|
||||
+ {
|
||||
+ flags = NOTIFY_SoundBank | NOTIFY_cueIndex | NOTIFY_Cue;
|
||||
+ }
|
||||
+ /* Supports WaveBank */
|
||||
+ else if (xd->type == XACTNOTIFICATIONTYPE_WAVEBANKDESTROYED || xd->type == XACTNOTIFICATIONTYPE_WAVEBANKPREPARED ||
|
||||
+ xd->type == XACTNOTIFICATIONTYPE_WAVEBANKSTREAMING_INVALIDCONTENT)
|
||||
+ {
|
||||
+ flags = NOTIFY_WaveBank;
|
||||
+ }
|
||||
+ /* Supports NOTIFY_SoundBank */
|
||||
+ else if (xd->type == XACTNOTIFICATIONTYPE_SOUNDBANKDESTROYED)
|
||||
+ {
|
||||
+ flags = NOTIFY_SoundBank;
|
||||
+ }
|
||||
+ /* Supports WaveBank, Wave index, Wave instance */
|
||||
+ else if (xd->type == XACTNOTIFICATIONTYPE_WAVEPREPARED || xd->type == XACTNOTIFICATIONTYPE_WAVEDESTROYED)
|
||||
+ {
|
||||
+ flags = NOTIFY_WaveBank | NOTIFY_waveIndex | NOTIFY_Wave;
|
||||
+ }
|
||||
+ /* Supports SoundBank, SoundBank, Cue index, Cue instance, WaveBank, Wave instance */
|
||||
+ else if (xd->type == XACTNOTIFICATIONTYPE_WAVEPLAY || xd->type == XACTNOTIFICATIONTYPE_WAVESTOP ||
|
||||
+ xd->type == XACTNOTIFICATIONTYPE_WAVELOOPED)
|
||||
+ {
|
||||
+ flags = NOTIFY_SoundBank | NOTIFY_cueIndex | NOTIFY_Cue | NOTIFY_WaveBank | NOTIFY_Wave;
|
||||
+ }
|
||||
|
||||
fd->type = xd->type;
|
||||
fd->flags = xd->flags;
|
||||
- fd->cueIndex = xd->cueIndex;
|
||||
- fd->waveIndex = xd->waveIndex;
|
||||
fd->pvContext = xd->pvContext;
|
||||
|
||||
- if (xd->pCue != NULL)
|
||||
+ if (flags & NOTIFY_cueIndex)
|
||||
+ fd->cueIndex = xd->cueIndex;
|
||||
+ if (flags & NOTIFY_waveIndex)
|
||||
+ fd->waveIndex = xd->waveIndex;
|
||||
+
|
||||
+ if (flags & NOTIFY_Cue && xd->pCue != NULL)
|
||||
{
|
||||
XACT3CueImpl *cur = impl_from_IXACT3Cue(xd->pCue);
|
||||
if (cur)
|
||||
fd->pCue = cur->fact_cue;
|
||||
}
|
||||
|
||||
- if (xd->pSoundBank != NULL)
|
||||
+ if (flags & NOTIFY_SoundBank && xd->pSoundBank != NULL)
|
||||
{
|
||||
XACT3SoundBankImpl *sound = impl_from_IXACT3SoundBank(xd->pSoundBank);
|
||||
if (sound)
|
||||
fd->pSoundBank = sound->fact_soundbank;
|
||||
}
|
||||
|
||||
- if (xd->pWaveBank != NULL)
|
||||
+ if (flags & NOTIFY_WaveBank && xd->pWaveBank != NULL)
|
||||
{
|
||||
XACT3WaveBankImpl *bank = impl_from_IXACT3WaveBank(xd->pWaveBank);
|
||||
if (bank)
|
||||
fd->pWaveBank = bank->fact_wavebank;
|
||||
}
|
||||
|
||||
- if (xd->pWave != NULL)
|
||||
+ if (flags & NOTIFY_Wave && xd->pWave != NULL)
|
||||
{
|
||||
XACT3WaveImpl *wave = impl_from_IXACT3Wave(xd->pWave);
|
||||
FIXME("Wave %p\n", wave);
|
||||
--
|
||||
2.25.1
|
||||
|
Reference in New Issue
Block a user