Use the audio device lock for the SDL2 backend
This commit is contained in:
parent
52ca70d98e
commit
58760e6184
@ -50,8 +50,8 @@ static void ALCsdl2Backend_stop(ALCsdl2Backend *self);
|
|||||||
static DECLARE_FORWARD2(ALCsdl2Backend, ALCbackend, ALCenum, captureSamples, void*, ALCuint)
|
static DECLARE_FORWARD2(ALCsdl2Backend, ALCbackend, ALCenum, captureSamples, void*, ALCuint)
|
||||||
static DECLARE_FORWARD(ALCsdl2Backend, ALCbackend, ALCuint, availableSamples)
|
static DECLARE_FORWARD(ALCsdl2Backend, ALCbackend, ALCuint, availableSamples)
|
||||||
static DECLARE_FORWARD(ALCsdl2Backend, ALCbackend, ClockLatency, getClockLatency)
|
static DECLARE_FORWARD(ALCsdl2Backend, ALCbackend, ClockLatency, getClockLatency)
|
||||||
static DECLARE_FORWARD(ALCsdl2Backend, ALCbackend, void, lock)
|
static void ALCsdl2Backend_lock(ALCsdl2Backend *self);
|
||||||
static DECLARE_FORWARD(ALCsdl2Backend, ALCbackend, void, unlock)
|
static void ALCsdl2Backend_unlock(ALCsdl2Backend *self);
|
||||||
DECLARE_DEFAULT_ALLOCATORS(ALCsdl2Backend)
|
DECLARE_DEFAULT_ALLOCATORS(ALCsdl2Backend)
|
||||||
|
|
||||||
DEFINE_ALCBACKEND_VTABLE(ALCsdl2Backend);
|
DEFINE_ALCBACKEND_VTABLE(ALCsdl2Backend);
|
||||||
@ -97,10 +97,9 @@ static void ALCsdl2Backend_audioCallback(void *ptr, Uint8* stream, int len)
|
|||||||
ALsizei frameSize = FrameSizeFromDevFmt(
|
ALsizei frameSize = FrameSizeFromDevFmt(
|
||||||
device->FmtChans, device->FmtType, device->AmbiOrder
|
device->FmtChans, device->FmtType, device->AmbiOrder
|
||||||
);
|
);
|
||||||
|
|
||||||
assert(len % frameSize == 0);
|
assert(len % frameSize == 0);
|
||||||
ALCsdl2Backend_lock(self);
|
|
||||||
aluMixData(device, stream, len / frameSize);
|
aluMixData(device, stream, len / frameSize);
|
||||||
ALCsdl2Backend_unlock(self);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static ALCenum ALCsdl2Backend_open(ALCsdl2Backend *self, const ALCchar *name)
|
static ALCenum ALCsdl2Backend_open(ALCsdl2Backend *self, const ALCchar *name)
|
||||||
@ -181,6 +180,16 @@ static void ALCsdl2Backend_stop(ALCsdl2Backend *self)
|
|||||||
SDL_PauseAudioDevice(self->deviceID, 1);
|
SDL_PauseAudioDevice(self->deviceID, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void ALCsdl2Backend_lock(ALCsdl2Backend *self)
|
||||||
|
{
|
||||||
|
SDL_LockAudioDevice(self->deviceID);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ALCsdl2Backend_unlock(ALCsdl2Backend *self)
|
||||||
|
{
|
||||||
|
SDL_UnlockAudioDevice(self->deviceID);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
typedef struct ALCsdl2BackendFactory {
|
typedef struct ALCsdl2BackendFactory {
|
||||||
DERIVE_FROM_TYPE(ALCbackendFactory);
|
DERIVE_FROM_TYPE(ALCbackendFactory);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user