mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-14 10:05:44 -04:00
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:
parent
7d881ad452
commit
2634c0bb12
@ -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;
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user