diff options
author | Chris Robinson <[email protected]> | 2008-01-16 13:20:09 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2008-01-16 13:20:09 -0800 |
commit | bb7b18d4e10b1f1e4d76847f58e0bf778584dc9e (patch) | |
tree | 52dbc231ca022d217acab62ec408fdfec36ea4f0 /OpenAL32/alSource.c | |
parent | 4742dedb4504f1d9925101a3aa7e5db27fc8370f (diff) |
Keep track of references to effect slots, so they aren't deleted while in use
Diffstat (limited to 'OpenAL32/alSource.c')
-rw-r--r-- | OpenAL32/alSource.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/OpenAL32/alSource.c b/OpenAL32/alSource.c index 69da0df4..f0ac5847 100644 --- a/OpenAL32/alSource.c +++ b/OpenAL32/alSource.c @@ -745,7 +745,13 @@ ALAPI void ALAPIENTRY alSource3i(ALuint source, ALenum eParam, ALint lValue1, AL ALeffectslot *ALEffectSlot = (ALeffectslot*)ALTHUNK_LOOKUPENTRY(lValue1); ALfilter *ALFilter = (ALfilter*)ALTHUNK_LOOKUPENTRY(lValue3); + /* Release refcount on the previous slot, and add one for + * the new slot */ + if(pSource->Send[lValue2].Slot) + pSource->Send[lValue2].Slot->refcount--; pSource->Send[lValue2].Slot = ALEffectSlot; + if(pSource->Send[lValue2].Slot) + pSource->Send[lValue2].Slot->refcount++; if(!ALFilter) { |