diff options
Diffstat (limited to 'al/effects/reverb.cpp')
-rw-r--r-- | al/effects/reverb.cpp | 86 |
1 files changed, 34 insertions, 52 deletions
diff --git a/al/effects/reverb.cpp b/al/effects/reverb.cpp index 044430d4..a0e62da9 100644 --- a/al/effects/reverb.cpp +++ b/al/effects/reverb.cpp @@ -593,21 +593,18 @@ private: struct State1 { - bool changed{false}; Props1 i; // Immediate. Props1 d; // Deferred. }; // State1 struct State2 { - bool changed{false}; Props2 i; // Immediate. Props2 d; // Deferred. }; // State2 struct State3 { - bool changed{false}; Props3 i; // Immediate. Props3 d; // Deferred. }; // State3 @@ -1112,6 +1109,7 @@ private: }; // EnvironmentSizeDeferrer3 int version_; + bool changed_{}; Props3 props_{}; State1 state1_{}; State2 state2_{}; @@ -1563,51 +1561,36 @@ void EaxReverbEffect::get(const EaxCall& call) /*[[nodiscard]]*/ bool EaxReverbEffect::commit() { - if((version_ == 1 && !state1_.changed) - || (version_ == 2 && !state2_.changed) - || (version_ == 3 && !state3_.changed) - || (version_ == 4 && !state4_.changed) - || (version_ == 5 && !state5_.changed)) - { + if(!changed_) return false; - } + changed_ = false; const auto props = props_; - - switch (version_) + switch(version_) { - case 1: - state1_.changed = false; - state1_.i = state1_.d; - translate(state1_.d, props_); - break; - - case 2: - state2_.changed = false; - state2_.i = state2_.d; - translate(state2_.d, props_); - break; - - case 3: - state3_.changed = false; - state3_.i = state3_.d; - props_ = state3_.d; - break; - - case 4: - state4_.changed = false; - state4_.i = state4_.d; - props_ = state4_.d; - break; - - case 5: - state5_.changed = false; - state5_.i = state5_.d; - props_ = state5_.d; - break; + case 1: + state1_.i = state1_.d; + translate(state1_.d, props_); + break; + case 2: + state2_.i = state2_.d; + translate(state2_.d, props_); + break; + case 3: + state3_.i = state3_.d; + props_ = state3_.d; + break; + case 4: + state4_.i = state4_.d; + props_ = state4_.d; + break; + case 5: + state5_.i = state5_.d; + props_ = state5_.d; + break; - default: - fail_unknown_version(); + default: + fail_unknown_version(); } auto is_dirty = false; @@ -1953,17 +1936,16 @@ void EaxReverbEffect::set3(const EaxCall& call, Props3& props) void EaxReverbEffect::set(const EaxCall& call) { const auto version = call.get_version(); - - switch (version) + switch(version) { - case 1: set1(call, state1_.d); state1_.changed = true; break; - case 2: set2(call, state2_.d); state2_.changed = true; break; - case 3: set3(call, state3_.d); state3_.changed = true; break; - case 4: set3(call, state4_.d); state4_.changed = true; break; - case 5: set3(call, state5_.d); state5_.changed = true; break; - default: fail_unknown_version(); + case 1: set1(call, state1_.d); break; + case 2: set2(call, state2_.d); break; + case 3: set3(call, state3_.d); break; + case 4: set3(call, state4_.d); break; + case 5: set3(call, state5_.d); break; + default: fail_unknown_version(); } - + changed_ = true; version_ = version; } |