diff --git a/patches/dsdmo-fx-support/0001-dsdmo-Add-Echo-FX-Support.patch b/patches/dsdmo-fx-support/0001-dsdmo-Add-Echo-FX-Support.patch deleted file mode 100644 index 94eb1728..00000000 --- a/patches/dsdmo-fx-support/0001-dsdmo-Add-Echo-FX-Support.patch +++ /dev/null @@ -1,144 +0,0 @@ -From 042e39ff36dcecd47af4102e8bb890cb9779db5e Mon Sep 17 00:00:00 2001 -From: Alistair Leslie-Hughes -Date: Sat, 13 Aug 2022 11:57:20 +1000 -Subject: [PATCH 1/2] dsdmo: Add Echo FX Support - ---- - dlls/dsdmo/dsdmo.idl | 8 ++++ - dlls/dsdmo/main.c | 97 ++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 105 insertions(+) - -diff --git a/dlls/dsdmo/dsdmo.idl b/dlls/dsdmo/dsdmo.idl -index 7f172084828..c8130f8a1ce 100644 ---- a/dlls/dsdmo/dsdmo.idl -+++ b/dlls/dsdmo/dsdmo.idl -@@ -41,3 +41,11 @@ coclass DirectSoundParamEqDMO {} - uuid(87fc0268-9a55-4360-95aa-004a1d9de26c) - ] - coclass DirectSoundWavesReverbDMO {} -+ -+[ -+ uuid(ef3e932c-d40b-4f51-8ccf-3f98f1b29d5d), -+ threading(both), -+ progid("Microsoft.DirectSoundEchoDMO.1"), -+ vi_progid("Microsoft.DirectSoundEchoDMO") -+] -+coclass DirectSoundEchoDMO {} -diff --git a/dlls/dsdmo/main.c b/dlls/dsdmo/main.c -index 3b106a8f633..200293f5214 100644 ---- a/dlls/dsdmo/main.c -+++ b/dlls/dsdmo/main.c -@@ -947,6 +947,102 @@ static HRESULT waves_reverb_create(IUnknown *outer, IUnknown **out) - return S_OK; - } - -+struct dmo_echofx -+{ -+ struct effect effect; -+ IDirectSoundFXEcho IDirectSoundFXEcho_iface; -+}; -+ -+static inline struct dmo_echofx *impl_from_IDirectSoundFXEcho(IDirectSoundFXEcho *iface) -+{ -+ return CONTAINING_RECORD(iface, struct dmo_echofx, IDirectSoundFXEcho_iface); -+} -+ -+static HRESULT WINAPI echofx_QueryInterface(IDirectSoundFXEcho *iface, REFIID iid, void **out) -+{ -+ struct dmo_echofx *effect = impl_from_IDirectSoundFXEcho(iface); -+ return IUnknown_QueryInterface(effect->effect.outer_unk, iid, out); -+} -+ -+static ULONG WINAPI echofx_AddRef(IDirectSoundFXEcho *iface) -+{ -+ struct dmo_echofx *effect = impl_from_IDirectSoundFXEcho(iface); -+ return IUnknown_AddRef(effect->effect.outer_unk); -+} -+ -+static ULONG WINAPI echofx_Release(IDirectSoundFXEcho *iface) -+{ -+ struct dmo_echofx *effect = impl_from_IDirectSoundFXEcho(iface); -+ return IUnknown_Release(effect->effect.outer_unk); -+} -+ -+static HRESULT WINAPI echofx_SetAllParameters(IDirectSoundFXEcho *iface, const DSFXEcho *echo) -+{ -+ struct dmo_echofx *effect = impl_from_IDirectSoundFXEcho(iface); -+ FIXME("(%p) %p\n", effect, echo); -+ -+ return E_NOTIMPL; -+} -+ -+static HRESULT WINAPI echofx_GetAllParameters(IDirectSoundFXEcho *iface, DSFXEcho *echo) -+{ -+ struct dmo_echofx *effect = impl_from_IDirectSoundFXEcho(iface); -+ FIXME("(%p) %p\n", effect, echo); -+ -+ return E_NOTIMPL; -+} -+ -+static const struct IDirectSoundFXEchoVtbl echofx_vtbl = -+{ -+ echofx_QueryInterface, -+ echofx_AddRef, -+ echofx_Release, -+ echofx_SetAllParameters, -+ echofx_GetAllParameters -+}; -+ -+static struct dmo_echofx *impl_echo_from_effect(struct effect *iface) -+{ -+ return CONTAINING_RECORD(iface, struct dmo_echofx, effect); -+} -+ -+static void *echo_query_interface(struct effect *iface, REFIID iid) -+{ -+ struct dmo_echofx *effect = impl_echo_from_effect(iface); -+ -+ if (IsEqualGUID(iid, &IID_IDirectSoundFXEcho)) -+ return &effect->IDirectSoundFXEcho_iface; -+ return NULL; -+} -+ -+static void echo_destroy(struct effect *iface) -+{ -+ struct dmo_echofx *effect = impl_echo_from_effect(iface); -+ -+ free(effect); -+} -+ -+static const struct effect_ops echo_ops = -+{ -+ .destroy = echo_destroy, -+ .query_interface = echo_query_interface, -+}; -+ -+static HRESULT echo_create(IUnknown *outer, IUnknown **out) -+{ -+ struct dmo_echofx *object; -+ -+ if (!(object = calloc(1, sizeof(*object)))) -+ return E_OUTOFMEMORY; -+ -+ effect_init(&object->effect, outer, &echo_ops); -+ object->IDirectSoundFXEcho_iface.lpVtbl = &echofx_vtbl; -+ -+ TRACE("Created echo effect %p.\n", object); -+ *out = &object->effect.IUnknown_inner; -+ return S_OK; -+} -+ - struct class_factory - { - IClassFactory IClassFactory_iface; -@@ -1031,6 +1127,7 @@ class_factories[] = - {&GUID_DSFX_STANDARD_I3DL2REVERB, {{&class_factory_vtbl}, reverb_create}}, - {&GUID_DSFX_STANDARD_PARAMEQ, {{&class_factory_vtbl}, eq_create}}, - {&GUID_DSFX_WAVES_REVERB, {{&class_factory_vtbl}, waves_reverb_create}}, -+ {&GUID_DSFX_STANDARD_ECHO, {{&class_factory_vtbl}, echo_create}}, - }; - - HRESULT WINAPI DllGetClassObject(REFCLSID clsid, REFIID iid, void **out) --- -2.35.1 - diff --git a/patches/dsdmo-fx-support/0002-dsdmo-Add-Compressor-FX-Support.patch b/patches/dsdmo-fx-support/0002-dsdmo-Add-Compressor-FX-Support.patch deleted file mode 100644 index d43776c6..00000000 --- a/patches/dsdmo-fx-support/0002-dsdmo-Add-Compressor-FX-Support.patch +++ /dev/null @@ -1,145 +0,0 @@ -From 7a9faf6c5f18a24f4fcbda2fc3066a4b7dd9a892 Mon Sep 17 00:00:00 2001 -From: Alistair Leslie-Hughes -Date: Sat, 13 Aug 2022 15:03:46 +1000 -Subject: [PATCH 2/2] dsdmo: Add Compressor FX Support - ---- - dlls/dsdmo/dsdmo.idl | 8 ++++ - dlls/dsdmo/main.c | 97 ++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 105 insertions(+) - -diff --git a/dlls/dsdmo/dsdmo.idl b/dlls/dsdmo/dsdmo.idl -index c8130f8a1ce..ee3154f64d1 100644 ---- a/dlls/dsdmo/dsdmo.idl -+++ b/dlls/dsdmo/dsdmo.idl -@@ -49,3 +49,11 @@ coclass DirectSoundWavesReverbDMO {} - vi_progid("Microsoft.DirectSoundEchoDMO") - ] - coclass DirectSoundEchoDMO {} -+ -+[ -+ uuid(ef011f79-4000-406d-87af-bffb3fc39d57), -+ threading(both), -+ progid("Microsoft.DirectSoundCompressorDMO.1"), -+ vi_progid("Microsoft.DirectSoundCompressorDMO") -+] -+coclass DirectSoundCompressorDMO {} -\ No newline at end of file -diff --git a/dlls/dsdmo/main.c b/dlls/dsdmo/main.c -index 200293f5214..bb19b7b7e2e 100644 ---- a/dlls/dsdmo/main.c -+++ b/dlls/dsdmo/main.c -@@ -1043,6 +1043,102 @@ static HRESULT echo_create(IUnknown *outer, IUnknown **out) - return S_OK; - } - -+struct dmo_compressorfx -+{ -+ struct effect effect; -+ IDirectSoundFXCompressor IDirectSoundFXCompressor_iface; -+}; -+ -+static inline struct dmo_compressorfx *impl_from_IDirectSoundFXCompressor(IDirectSoundFXCompressor *iface) -+{ -+ return CONTAINING_RECORD(iface, struct dmo_compressorfx, IDirectSoundFXCompressor_iface); -+} -+ -+static HRESULT WINAPI compressorfx_QueryInterface(IDirectSoundFXCompressor *iface, REFIID iid, void **out) -+{ -+ struct dmo_compressorfx *effect = impl_from_IDirectSoundFXCompressor(iface); -+ return IUnknown_QueryInterface(effect->effect.outer_unk, iid, out); -+} -+ -+static ULONG WINAPI compressorfx_AddRef(IDirectSoundFXCompressor *iface) -+{ -+ struct dmo_compressorfx *effect = impl_from_IDirectSoundFXCompressor(iface); -+ return IUnknown_AddRef(effect->effect.outer_unk); -+} -+ -+static ULONG WINAPI compressorfx_Release(IDirectSoundFXCompressor *iface) -+{ -+ struct dmo_compressorfx *effect = impl_from_IDirectSoundFXCompressor(iface); -+ return IUnknown_Release(effect->effect.outer_unk); -+} -+ -+static HRESULT WINAPI compressorfx_SetAllParameters(IDirectSoundFXCompressor *iface, const DSFXCompressor *compressor) -+{ -+ struct dmo_compressorfx *This = impl_from_IDirectSoundFXCompressor(iface); -+ FIXME("(%p) %p\n", This, compressor); -+ -+ return E_NOTIMPL; -+} -+ -+static HRESULT WINAPI compressorfx_GetAllParameters(IDirectSoundFXCompressor *iface, DSFXCompressor *compressor) -+{ -+ struct dmo_compressorfx *This = impl_from_IDirectSoundFXCompressor(iface); -+ FIXME("(%p) %p\n", This, compressor); -+ -+ return E_NOTIMPL; -+} -+ -+static const struct IDirectSoundFXCompressorVtbl compressor_vtbl = -+{ -+ compressorfx_QueryInterface, -+ compressorfx_AddRef, -+ compressorfx_Release, -+ compressorfx_SetAllParameters, -+ compressorfx_GetAllParameters -+}; -+ -+static struct dmo_compressorfx *impl_compressor_from_effect(struct effect *iface) -+{ -+ return CONTAINING_RECORD(iface, struct dmo_compressorfx, effect); -+} -+ -+static void *compressor_query_interface(struct effect *iface, REFIID iid) -+{ -+ struct dmo_compressorfx *effect = impl_compressor_from_effect(iface); -+ -+ if (IsEqualGUID(iid, &IID_IDirectSoundFXCompressor)) -+ return &effect->IDirectSoundFXCompressor_iface; -+ return NULL; -+} -+ -+static void compressor_destroy(struct effect *iface) -+{ -+ struct dmo_compressorfx *effect = impl_compressor_from_effect(iface); -+ -+ free(effect); -+} -+ -+static const struct effect_ops compressor_ops = -+{ -+ .destroy = compressor_destroy, -+ .query_interface = compressor_query_interface, -+}; -+ -+static HRESULT compressor_create(IUnknown *outer, IUnknown **out) -+{ -+ struct dmo_compressorfx *object; -+ -+ if (!(object = calloc(1, sizeof(*object)))) -+ return E_OUTOFMEMORY; -+ -+ effect_init(&object->effect, outer, &compressor_ops); -+ object->IDirectSoundFXCompressor_iface.lpVtbl = &compressor_vtbl; -+ -+ TRACE("Created compressor effect %p.\n", object); -+ *out = &object->effect.IUnknown_inner; -+ return S_OK; -+} -+ - struct class_factory - { - IClassFactory IClassFactory_iface; -@@ -1128,6 +1224,7 @@ class_factories[] = - {&GUID_DSFX_STANDARD_PARAMEQ, {{&class_factory_vtbl}, eq_create}}, - {&GUID_DSFX_WAVES_REVERB, {{&class_factory_vtbl}, waves_reverb_create}}, - {&GUID_DSFX_STANDARD_ECHO, {{&class_factory_vtbl}, echo_create}}, -+ {&GUID_DSFX_STANDARD_COMPRESSOR, {{&class_factory_vtbl}, compressor_create}}, - }; - - HRESULT WINAPI DllGetClassObject(REFCLSID clsid, REFIID iid, void **out) --- -2.35.1 - diff --git a/patches/dsdmo-fx-support/definition b/patches/dsdmo-fx-support/definition deleted file mode 100644 index 3da7f580..00000000 --- a/patches/dsdmo-fx-support/definition +++ /dev/null @@ -1 +0,0 @@ -Fixes: [52396] dsdmo: Add More FX interfaces. diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index d88baba4..1c4d52a5 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -106,7 +106,6 @@ patch_enable_all () enable_ddraw_Silence_FIXMEs="$1" enable_ddraw_version_check="$1" enable_dinput_joy_mappings="$1" - enable_dsdmo_fx_support="$1" enable_dsound_EAX="$1" enable_dsound_Fast_Mixer="$1" enable_eventfd_synchronization="$1" @@ -342,9 +341,6 @@ patch_enable () dinput-joy-mappings) enable_dinput_joy_mappings="$2" ;; - dsdmo-fx-support) - enable_dsdmo_fx_support="$2" - ;; dsound-EAX) enable_dsound_EAX="$2" ;; @@ -1662,19 +1658,6 @@ if test "$enable_dinput_joy_mappings" -eq 1; then patch_apply dinput-joy-mappings/0004-dinput-Allow-mapping-of-controls-based-of-Genre-type.patch fi -# Patchset dsdmo-fx-support -# | -# | This patchset fixes the following Wine bugs: -# | * [#52396] dsdmo: Add More FX interfaces. -# | -# | Modified files: -# | * dlls/dsdmo/dsdmo.idl, dlls/dsdmo/main.c -# | -if test "$enable_dsdmo_fx_support" -eq 1; then - patch_apply dsdmo-fx-support/0001-dsdmo-Add-Echo-FX-Support.patch - patch_apply dsdmo-fx-support/0002-dsdmo-Add-Compressor-FX-Support.patch -fi - # Patchset dsound-Fast_Mixer # | # | This patchset fixes the following Wine bugs: diff --git a/staging/upstream-commit b/staging/upstream-commit index 58d772f3..0ed7fa60 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -4608e1e1257a377cd554a0e885368e3feb7d286f +4a3c7e2758ac10b7947e859015f2a755d25fd7fe