mirror of
https://github.com/switchbrew/libnx.git
synced 2025-08-05 16:09:24 +02:00
fix audout events being missed.
This commit is contained in:
parent
70ea18a477
commit
f19847dda4
@ -105,12 +105,18 @@ static Result _audoutCmdNoInOutU32(Service* srv, u32 *out, u32 cmd_id) {
|
||||
}
|
||||
|
||||
Result audoutWaitPlayFinish(AudioOutBuffer **released, u32* released_count, u64 timeout) {
|
||||
// Wait on the buffer event handle
|
||||
Result rc = eventWait(&g_audoutBufferEvent, timeout);
|
||||
// Check if we already have a buffer free
|
||||
eventClear(&g_audoutBufferEvent);
|
||||
Result rc = audoutGetReleasedAudioOutBuffer(released, released_count);
|
||||
|
||||
if (R_SUCCEEDED(rc)) {
|
||||
// Grab the released buffer
|
||||
rc = audoutGetReleasedAudioOutBuffer(released, released_count);
|
||||
if (R_FAILED(rc) || !(*released_count)) {
|
||||
// Wait on the buffer event handle
|
||||
rc = eventWait(&g_audoutBufferEvent, timeout);
|
||||
|
||||
if (R_SUCCEEDED(rc)) {
|
||||
// Grab the released buffer
|
||||
rc = audoutGetReleasedAudioOutBuffer(released, released_count);
|
||||
}
|
||||
}
|
||||
|
||||
return rc;
|
||||
@ -203,7 +209,7 @@ Result audoutAppendAudioOutBuffer(AudioOutBuffer *Buffer) {
|
||||
}
|
||||
|
||||
static Result _audoutRegisterBufferEvent(Event *BufferEvent) {
|
||||
return _audoutCmdGetEvent(&g_audoutIAudioOut, BufferEvent, true, 4);
|
||||
return _audoutCmdGetEvent(&g_audoutIAudioOut, BufferEvent, false, 4);
|
||||
}
|
||||
|
||||
Result audoutGetReleasedAudioOutBuffer(AudioOutBuffer **Buffer, u32 *ReleasedBuffersCount) {
|
||||
|
Loading…
Reference in New Issue
Block a user