aboutsummaryrefslogtreecommitdiffstats
path: root/al/eax/call.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'al/eax/call.cpp')
-rw-r--r--al/eax/call.cpp23
1 files changed, 22 insertions, 1 deletions
diff --git a/al/eax/call.cpp b/al/eax/call.cpp
index f779c2b0..abb27933 100644
--- a/al/eax/call.cpp
+++ b/al/eax/call.cpp
@@ -151,7 +151,28 @@ EaxCall::EaxCall(
fail("EAX version out of range.");
}
- if(!(property_id&deferred_flag))
+ switch(property_id)
+ {
+ case EAXCONTEXT_LASTERROR:
+ case EAXCONTEXT_SPEAKERCONFIG:
+ case EAXCONTEXT_EAXSESSION:
+ case EAXFXSLOT_NONE:
+ case EAXFXSLOT_ALLPARAMETERS:
+ case EAXFXSLOT_LOADEFFECT:
+ case EAXFXSLOT_VOLUME:
+ case EAXFXSLOT_LOCK:
+ case EAXFXSLOT_FLAGS:
+ case EAXFXSLOT_OCCLUSION:
+ case EAXFXSLOT_OCCLUSIONLFRATIO:
+ // EAX allow to set "defer" flag on immediate-only properties.
+ // If we don't clear our flag then "applyAllUpdates" in EAX context won't be called.
+ is_deferred_ = false;
+ break;
+ default:
+ break;
+ }
+
+ if(!is_deferred_)
{
if(property_set_id_ != EaxCallPropertySetId::fx_slot && property_id_ != 0)
{