PSP: Use cooperative threading for map gen

Also fix OpenAL backend not properly resetting error state before calling important functions that may set the error state
This commit is contained in:
UnknownShadow200 2024-02-08 18:26:57 +11:00
parent 7d881ad452
commit 2634c0bb12
2 changed files with 5 additions and 1 deletions

View File

@ -219,7 +219,7 @@ void Audio_Close(struct AudioContext* ctx) {
if (ctx->source) {
Audio_Stop(ctx);
Audio_Reset(ctx);
_alGetError();
_alGetError(); /* Reset error state */
}
ClearFree(ctx);
AudioBase_Clear(ctx);
@ -228,6 +228,7 @@ void Audio_Close(struct AudioContext* ctx) {
cc_result Audio_SetFormat(struct AudioContext* ctx, int channels, int sampleRate) {
ALenum i, err;
if (!ctx->source) {
_alGetError(); /* Reset error state */
_alGenSources(1, &ctx->source);
if ((err = _alGetError())) return err;
@ -257,6 +258,7 @@ cc_result Audio_QueueChunk(struct AudioContext* ctx, void* chunk, cc_uint32 size
if (!ctx->free) return ERR_INVALID_ARGUMENT;
buffer = ctx->freeIDs[--ctx->free];
_alGetError(); /* Reset error state */
_alBufferData(buffer, ctx->channels, chunk, size, ctx->sampleRate);
if ((err = _alGetError())) return err;
@ -278,6 +280,7 @@ cc_result Audio_Poll(struct AudioContext* ctx, int* inUse) {
*inUse = 0;
if (!ctx->source) return 0;
_alGetError(); /* Reset error state */
_alGetSourcei(ctx->source, AL_BUFFERS_PROCESSED, &processed);
if ((err = _alGetError())) return err;

View File

@ -276,6 +276,7 @@ typedef cc_uint8 cc_bool;
#define CC_BUILD_PSP
#define CC_BUILD_OPENAL
#define CC_BUILD_HTTPCLIENT
#define CC_BUILD_COOPTHREADED
#define CC_BUILD_BEARSSL
#define CC_BUILD_LOWMEM
#define CC_BUILD_CONSOLE