aboutsummaryrefslogtreecommitdiffstats
path: root/Alc
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2011-05-29 02:56:00 -0700
committerChris Robinson <[email protected]>2011-05-29 02:56:00 -0700
commit60a55aa89714e06d547b294ae71902a72fef59c4 (patch)
tree159eb36f7849baf6785e2b9f31dbd877993089d5 /Alc
parent9325a78043df57d393135673ad40022f3d0e2b93 (diff)
Hold the global lock while the device is being updated
Diffstat (limited to 'Alc')
-rw-r--r--Alc/ALc.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/Alc/ALc.c b/Alc/ALc.c
index 42e8e9c3..46177332 100644
--- a/Alc/ALc.c
+++ b/Alc/ALc.c
@@ -1199,8 +1199,13 @@ static ALCboolean UpdateDeviceParams(ALCdevice *device, const ALCint *attrList)
if(running)
return ALC_TRUE;
+
+ SuspendContext(NULL);
if(ALCdevice_ResetPlayback(device) == ALC_FALSE)
+ {
+ ProcessContext(NULL);
return ALC_FALSE;
+ }
aluInitPanning(device);
@@ -1262,6 +1267,7 @@ static ALCboolean UpdateDeviceParams(ALCdevice *device, const ALCint *attrList)
if(ALEffect_DeviceUpdate(slot->EffectState, device) == AL_FALSE)
{
ProcessContext(context);
+ ProcessContext(NULL);
return ALC_FALSE;
}
ALEffect_Update(slot->EffectState, context, &slot->effect);
@@ -1285,6 +1291,7 @@ static ALCboolean UpdateDeviceParams(ALCdevice *device, const ALCint *attrList)
}
ProcessContext(context);
}
+ ProcessContext(NULL);
return ALC_TRUE;
}