Avoid unnecessary uses of ExchangeInt/Ptr

This commit is contained in:
Chris Robinson
2015-02-04 19:19:43 -08:00
parent efb7b11d7f
commit 61743a3a00
4 changed files with 23 additions and 15 deletions
+9 -3
View File
@@ -1599,11 +1599,14 @@ void ALCcontext_DeferUpdates(ALCcontext *context)
SetMixerFPUMode(&oldMode);
V0(device->Backend,lock)();
if(!ExchangeInt(&context->DeferUpdates, AL_TRUE))
if(!context->DeferUpdates)
{
ALboolean UpdateSources;
ALvoice *voice, *voice_end;
ALeffectslot **slot, **slot_end;
context->DeferUpdates = AL_TRUE;
/* Make sure all pending updates are performed */
UpdateSources = ATOMIC_EXCHANGE(ALenum, &context->UpdateSources, AL_FALSE);
@@ -1649,10 +1652,12 @@ void ALCcontext_ProcessUpdates(ALCcontext *context)
ALCdevice *device = context->Device;
V0(device->Backend,lock)();
if(ExchangeInt(&context->DeferUpdates, AL_FALSE))
if(context->DeferUpdates)
{
ALsizei pos;
context->DeferUpdates = AL_FALSE;
LockUIntMapRead(&context->SourceMap);
for(pos = 0;pos < context->SourceMap.size;pos++)
{
@@ -1667,7 +1672,8 @@ void ALCcontext_ProcessUpdates(ALCcontext *context)
ReadUnlock(&Source->queue_lock);
}
new_state = ExchangeInt(&Source->new_state, AL_NONE);
new_state = Source->new_state;
Source->new_state = AL_NONE;
if(new_state)
SetSourceState(Source, context, new_state);
}
+1 -1
View File
@@ -60,7 +60,7 @@ void MidiSynth_Destruct(MidiSynth *self);
ALenum MidiSynth_selectSoundfonts(MidiSynth *self, ALCcontext *context, ALsizei count, const ALuint *ids);
inline void MidiSynth_setGain(MidiSynth *self, ALfloat gain) { self->Gain = gain; }
inline ALfloat MidiSynth_getGain(const MidiSynth *self) { return self->Gain; }
inline void MidiSynth_setState(MidiSynth *self, ALenum state) { ExchangeInt(&self->State, state); }
inline void MidiSynth_setState(MidiSynth *self, ALenum state) { self->State = state; }
inline ALenum MidiSynth_getState(const MidiSynth *self) { return self->State; }
void MidiSynth_stop(MidiSynth *self);
inline void MidiSynth_reset(MidiSynth *self) { MidiSynth_stop(self); }
+4 -2
View File
@@ -716,8 +716,10 @@ static ALenum FSynth_selectSoundfonts(FSynth *self, ALCcontext *context, ALsizei
else
{
ERR("Failed to allocate space for %d font IDs!\n", count);
fontid = ExchangePtr((XchgPtr*)&self->FontIDs, NULL);
count = ExchangeInt(&self->NumFontIDs, 0);
fontid = self->FontIDs;
count = self->NumFontIDs;
self->FontIDs = NULL;
self->NumFontIDs = 0;
}
for(i = 0;i < count;i++)
+9 -9
View File
@@ -360,26 +360,26 @@ ALsoundfont *ALsoundfont_getDefSoundfont(ALCcontext *context)
void ALsoundfont_deleteSoundfont(ALsoundfont *self, ALCdevice *device)
{
ALsfpreset **presets;
ALsizei num_presets;
ALsfpreset **presets = self->Presets;
ALsizei num_presets = self->NumPresets;
VECTOR(ALbuffer*) buffers;
ALsizei i;
VECTOR_INIT(buffers);
presets = ExchangePtr((XchgPtr*)&self->Presets, NULL);
num_presets = ExchangeInt(&self->NumPresets, 0);
self->Presets = NULL;
self->NumPresets = 0;
for(i = 0;i < num_presets;i++)
{
ALsfpreset *preset = presets[i];
ALfontsound **sounds;
ALsizei num_sounds;
ALfontsound **sounds = preset->Sounds;
ALsizei num_sounds = preset->NumSounds;
ALboolean deleting;
ALsizei j;
sounds = ExchangePtr((XchgPtr*)&preset->Sounds, NULL);
num_sounds = ExchangeInt(&preset->NumSounds, 0);
preset->Sounds = NULL;
preset->NumSounds = 0;
DeletePreset(device, preset);
preset = NULL;