wine-staging/patches/dsound-EAX/0008-dsound-Add-EAX-init-and-free-stubs.patch
2020-02-04 08:36:15 +11:00

104 lines
3.4 KiB
Diff

From b26a890a50b5c35d20c8f42993c4f578777584f0 Mon Sep 17 00:00:00 2001
From: Mark Harmstone <mark@harmstone.com>
Date: Fri, 27 Mar 2015 20:58:37 +0000
Subject: [PATCH] dsound: Add EAX init and free stubs.
---
dlls/dsound/buffer.c | 6 +++++-
dlls/dsound/dsound_private.h | 2 ++
dlls/dsound/eax.c | 28 +++++++++++++++++++++++++++-
3 files changed, 34 insertions(+), 2 deletions(-)
diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c
index 22e1a713ee6..10daf4fa71a 100644
--- a/dlls/dsound/buffer.c
+++ b/dlls/dsound/buffer.c
@@ -1131,7 +1131,9 @@ HRESULT secondarybuffer_create(DirectSoundDevice *device, const DSBUFFERDESC *ds
} else
DSOUND_RecalcVolPan(&(dsb->volpan));
- InitializeSRWLock(&dsb->lock);
+ InitializeSRWLock(&dsb->lock);
+ if (dsb->device->eax.using_eax)
+ init_eax_buffer(dsb);
/* register buffer */
err = DirectSoundDevice_AddBuffer(device, dsb);
@@ -1174,6 +1176,8 @@ void secondarybuffer_destroy(IDirectSoundBufferImpl *This)
HeapFree(GetProcessHeap(), 0, This->filters);
}
+ free_eax_buffer(This);
+
HeapFree(GetProcessHeap(), 0, This);
TRACE("(%p) released\n", This);
diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h
index 3b4c4f290a4..8dbb9edb594 100644
--- a/dlls/dsound/dsound_private.h
+++ b/dlls/dsound/dsound_private.h
@@ -234,6 +234,8 @@ HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
HRESULT WINAPI EAX_Set(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
ULONG dwPropID, void *pInstanceData, ULONG cbInstanceData, void *pPropData,
ULONG cbPropData) DECLSPEC_HIDDEN;
+void free_eax_buffer(IDirectSoundBufferImpl *dsb) DECLSPEC_HIDDEN;
+void init_eax_buffer(IDirectSoundBufferImpl *dsb) DECLSPEC_HIDDEN;
/* mixer.c */
void DSOUND_CheckEvent(const IDirectSoundBufferImpl *dsb, DWORD playpos, int len) DECLSPEC_HIDDEN;
diff --git a/dlls/dsound/eax.c b/dlls/dsound/eax.c
index 3931681d295..c0afb0f1acf 100644
--- a/dlls/dsound/eax.c
+++ b/dlls/dsound/eax.c
@@ -92,20 +92,46 @@ static const EFXEAXREVERBPROPERTIES efx_presets[] = {
{ 0.0625f, 0.5000f, 0.3162f, 0.8404f, 1.0000f, 7.5600f, 0.9100f, 1.0000f, 0.4864f, 0.0200f, { 0.0000f, 0.0000f, 0.0000f }, 2.4378f, 0.0300f, { 0.0000f, 0.0000f, 0.0000f }, 0.2500f, 0.0000f, 4.0000f, 1.0000f, 0.9943f, 5000.0000f, 250.0000f, 0.0000f, 0x0 } /* psychotic */
};
-static BOOL ReverbDeviceUpdate(DirectSoundDevice *dev)
+static void ReverbUpdate(IDirectSoundBufferImpl *dsb)
{
/* stub */
+}
+
+static BOOL ReverbDeviceUpdate(DirectSoundDevice *dev)
+{
+ int i;
+
+ for (i = 0; i < dev->nrofbuffers; i++) {
+ ReverbUpdate(dev->buffers[i]);
+ }
+
return TRUE;
}
+void init_eax_buffer(IDirectSoundBufferImpl *dsb)
+{
+ ReverbUpdate(dsb);
+}
+
static void init_eax(DirectSoundDevice *dev)
{
+ int i;
+
dev->eax.using_eax = TRUE;
dev->eax.environment = presets[0].environment;
dev->eax.volume = presets[0].fVolume;
dev->eax.damping = presets[0].fDamping;
memcpy(&dev->eax.eax_props, &efx_presets[0], sizeof(dev->eax.eax_props));
dev->eax.eax_props.flDecayTime = presets[0].fDecayTime_sec;
+
+ for (i = 0; i < dev->nrofbuffers; i++) {
+ init_eax_buffer(dev->buffers[i]);
+ }
+}
+
+void free_eax_buffer(IDirectSoundBufferImpl *dsb)
+{
+ /* stub */
}
HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
--
2.17.1