From d42077680890fee9e8f150e99bc259435bbe5d44 Mon Sep 17 00:00:00 2001 From: "Boris I. Bendovsky" Date: Tue, 8 Feb 2022 18:20:46 +0200 Subject: EAX various fixes (#657) * [EAX] Fix effect GUID validation Only NULL and REVERB was valid. * [EAX] Fix default FX slot flags EAX4 and EAX5 both sets to ENVIRONMENT. * [EAX] Set default values for legacy FX slots in the initialization * [EAX] Fix FX slot locking policy Fail on attempt to load an effect or change a lock for EAX4 "set" call. Unlock legacy FX slots on any EAX5 call. * [EAX] Allow DEFER flag for "get" calls. * [EAX] Make speaker configuration read-only * [EAX] Initialize speaker configuration * [EAX] Commit EAX source on a 3D source parameter call Reference: EAX 4.0 Programmer's Guide * [EAX] Commit EAX source on a 3D listener parameter call Reference: EAX 4.0 Programmer's Guide * [EAX] Commit source when it begins to play Reference: EAX 4.0 Programmer's Guide --- alc/context.h | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'alc/context.h') diff --git a/alc/context.h b/alc/context.h index 331b21b0..682012c7 100644 --- a/alc/context.h +++ b/alc/context.h @@ -229,6 +229,8 @@ public: void eax_update_filters(); + void eax_on_3d_listener_param_call(); + void eax_set_last_error() noexcept; @@ -319,6 +321,7 @@ private: bool eax_is_initialized_{}; bool eax_is_tried_{}; + bool eax_are_legacy_fx_slots_unlocked_{}; long eax_last_error_{}; unsigned long eax_speaker_config_{}; @@ -365,12 +368,14 @@ private: void eax_ensure_compatibility(); + unsigned long eax_detect_speaker_configuration() const; + void eax_update_speaker_configuration(); + + void eax_initialize_filter_gain(); void eax_set_last_error_defaults() noexcept; - void eax_set_speaker_config_defaults() noexcept; - void eax_set_session_defaults() noexcept; void eax_set_context_defaults() noexcept; @@ -380,6 +385,9 @@ private: void eax_initialize_sources(); + void eax_unlock_legacy_fx_slots(const EaxEaxCall& eax_call) noexcept; + + void eax_dispatch_fx_slot( const EaxEaxCall& eax_call); @@ -507,9 +515,6 @@ private: void eax_defer_hf_reference( const EaxEaxCall& eax_call); - void eax_set_speaker_config( - const EaxEaxCall& eax_call); - void eax_set_session( const EaxEaxCall& eax_call); -- cgit v1.2.3