Add mutexes to 3DS audio backend

Doesn't seem to fix the annoying crashes though...
This commit is contained in:
Clownacy 2020-10-11 14:42:04 +01:00
parent 75a31005d1
commit 80725016f7

View file

@ -19,6 +19,9 @@ static short *stream_buffer;
static ndspWaveBuf dsp_buffers[2]; static ndspWaveBuf dsp_buffers[2];
static bool current_dsp_buffer; static bool current_dsp_buffer;
static LightLock mixer_mutex;
static LightLock organya_mutex;
static void FullBuffer(short *stream, size_t frames_total) static void FullBuffer(short *stream, size_t frames_total)
{ {
size_t frames_done = 0; size_t frames_done = 0;
@ -104,7 +107,8 @@ unsigned long SoftwareMixerBackend_Init(void (*callback)(long *stream, size_t fr
dsp_buffers[1].data_vaddr = &stream_buffer[FRAMES_PER_BUFFER * 2 * 1]; dsp_buffers[1].data_vaddr = &stream_buffer[FRAMES_PER_BUFFER * 2 * 1];
dsp_buffers[1].nsamples = FRAMES_PER_BUFFER; dsp_buffers[1].nsamples = FRAMES_PER_BUFFER;
FullBuffer(stream_buffer, FRAMES_PER_BUFFER * 2); LightLock_Init(&mixer_mutex);
LightLock_Init(&organya_mutex);
return SAMPLE_RATE; return SAMPLE_RATE;
} }
@ -132,6 +136,8 @@ void SoftwareMixerBackend_Deinit(void)
bool SoftwareMixerBackend_Start(void) bool SoftwareMixerBackend_Start(void)
{ {
FullBuffer(stream_buffer, FRAMES_PER_BUFFER * 2);
ndspChnWaveBufAdd(0, &dsp_buffers[0]); ndspChnWaveBufAdd(0, &dsp_buffers[0]);
ndspChnWaveBufAdd(0, &dsp_buffers[1]); ndspChnWaveBufAdd(0, &dsp_buffers[1]);
@ -140,20 +146,20 @@ bool SoftwareMixerBackend_Start(void)
void SoftwareMixerBackend_LockMixerMutex(void) void SoftwareMixerBackend_LockMixerMutex(void)
{ {
// ma_mutex_lock(&mutex); LightLock_Lock(&mixer_mutex);
} }
void SoftwareMixerBackend_UnlockMixerMutex(void) void SoftwareMixerBackend_UnlockMixerMutex(void)
{ {
// ma_mutex_unlock(&mutex); LightLock_Unlock(&mixer_mutex);
} }
void SoftwareMixerBackend_LockOrganyaMutex(void) void SoftwareMixerBackend_LockOrganyaMutex(void)
{ {
// ma_mutex_lock(&organya_mutex); LightLock_Lock(&organya_mutex);
} }
void SoftwareMixerBackend_UnlockOrganyaMutex(void) void SoftwareMixerBackend_UnlockOrganyaMutex(void)
{ {
// ma_mutex_unlock(&organya_mutex); LightLock_Unlock(&organya_mutex);
} }