Consistency and fixing thread unit tests

This commit is contained in:
2026-06-01 11:33:27 -05:00
parent db9cc0f4c6
commit df48c8e500
14 changed files with 38 additions and 33 deletions
+1 -1
View File
@@ -179,7 +179,7 @@ errorret_t assetUpdate(void) {
// If an error occured these things need to be true, basically just // If an error occured these things need to be true, basically just
// ensuring the sync loader is setting the error correctly. // ensuring the sync loader is setting the error correctly.
if(ret.code != ERROR_OK) { if(errorIsNotOk(ret)) {
assertTrue( assertTrue(
loading->entry->state == ASSET_ENTRY_STATE_ERROR, loading->entry->state == ASSET_ENTRY_STATE_ERROR,
"Loader did not set entry state to error on failed load." "Loader did not set entry state to error on failed load."
+1 -1
View File
@@ -69,7 +69,7 @@ extern assetloadercallbacks_t ASSET_LOADER_CALLBACKS[ASSET_LOADER_TYPE_COUNT];
* @param ret The error return value to check and chain if it's an error. * @param ret The error return value to check and chain if it's an error.
*/ */
#define assetLoaderErrorChain(loading, ret) {\ #define assetLoaderErrorChain(loading, ret) {\
if(ret.code != ERROR_OK) { \ if(errorIsNotOk(ret)) { \
loading->entry->state = ASSET_ENTRY_STATE_ERROR; \ loading->entry->state = ASSET_ENTRY_STATE_ERROR; \
errorChain(ret); \ errorChain(ret); \
} \ } \
@@ -47,7 +47,7 @@ errorret_t assetMeshLoaderSync(assetloading_t *loading) {
for(uint32_t i = 0; i < triangleCount; i++) { for(uint32_t i = 0; i < triangleCount; i++) {
assetmeshstltriangle_t triData; assetmeshstltriangle_t triData;
ret = assetFileRead(file, &triData, sizeof(triData)); ret = assetFileRead(file, &triData, sizeof(triData));
if(ret.code != ERROR_OK) { if(errorIsNotOk(ret)) {
memoryFree(verts); memoryFree(verts);
out->vertices = NULL; out->vertices = NULL;
assetLoaderErrorChain(loading, ret); assetLoaderErrorChain(loading, ret);
@@ -117,7 +117,7 @@ errorret_t assetMeshLoaderSync(assetloading_t *loading) {
} }
ret = assetFileClose(file); ret = assetFileClose(file);
if(ret.code != ERROR_OK) { if(errorIsNotOk(ret)) {
memoryFree(verts); memoryFree(verts);
out->vertices = NULL; out->vertices = NULL;
assetLoaderErrorChain(loading, ret); assetLoaderErrorChain(loading, ret);
@@ -127,7 +127,7 @@ errorret_t assetMeshLoaderSync(assetloading_t *loading) {
ret = meshInit( ret = meshInit(
&out->mesh, MESH_PRIMITIVE_TYPE_TRIANGLES, triangleCount * 3, verts &out->mesh, MESH_PRIMITIVE_TYPE_TRIANGLES, triangleCount * 3, verts
); );
if(ret.code != ERROR_OK) { if(errorIsNotOk(ret)) {
loading->entry->state = ASSET_ENTRY_STATE_ERROR; loading->entry->state = ASSET_ENTRY_STATE_ERROR;
memoryFree(verts); memoryFree(verts);
out->vertices = NULL; out->vertices = NULL;
@@ -27,7 +27,7 @@ int assetTextureReader(void *user, char *data, int size) {
assertNotNull(file, "Asset file in stb_image callbacks cannot be NULL."); assertNotNull(file, "Asset file in stb_image callbacks cannot be NULL.");
errorret_t ret = assetFileRead(file, data, (size_t)size); errorret_t ret = assetFileRead(file, data, (size_t)size);
if(ret.code != ERROR_OK) { if(errorIsNotOk(ret)) {
errorCatch(errorPrint(ret)); errorCatch(errorPrint(ret));
return -1; return -1;
} }
@@ -40,7 +40,7 @@ void assetTextureSkipper(void *user, int n) {
assertNotNull(file, "Asset file in stb_image callbacks cannot be NULL."); assertNotNull(file, "Asset file in stb_image callbacks cannot be NULL.");
errorret_t ret = assetFileRead(file, NULL, (size_t)n); errorret_t ret = assetFileRead(file, NULL, (size_t)n);
if(ret.code != ERROR_OK) { if(errorIsNotOk(ret)) {
errorCatch(errorPrint(ret)); errorCatch(errorPrint(ret));
} }
} }
@@ -589,7 +589,7 @@ errorret_t assetLocaleGetStringWithVA(
tempBuffer, tempBuffer,
bufferSize bufferSize
); );
if(ret.code != ERROR_OK) { if(errorIsNotOk(ret)) {
memoryFree(tempBuffer); memoryFree(tempBuffer);
return ret; return ret;
} }
@@ -637,7 +637,7 @@ errorret_t assetLocaleGetStringWithArgs(
format, format,
bufferSize bufferSize
); );
if(ret.code != ERROR_OK) { if(errorIsNotOk(ret)) {
memoryFree(format); memoryFree(format);
return ret; return ret;
} }
+3 -3
View File
@@ -77,7 +77,7 @@ errorret_t errorChainImpl(
const char_t *function, const char_t *function,
const int32_t line const int32_t line
) { ) {
if(retval.code == ERROR_OK) return retval; if(errorIsOk(retval)) return retval;
assertNotNull(retval.state, "Error state NULL (Likely missing errorOk)"); assertNotNull(retval.state, "Error state NULL (Likely missing errorOk)");
assertNotNull(retval.state->message, "Message cannot be NULL"); assertNotNull(retval.state->message, "Message cannot be NULL");
@@ -111,7 +111,7 @@ errorret_t errorChainImpl(
} }
void errorCatch(errorret_t retval) { void errorCatch(errorret_t retval) {
if(retval.code == ERROR_OK) return; if(errorIsOk(retval)) return;
assertNotNull(retval.state, "Error state cannot be NULL"); assertNotNull(retval.state, "Error state cannot be NULL");
assertNotNull(retval.state->message, "Message cannot be NULL"); assertNotNull(retval.state->message, "Message cannot be NULL");
@@ -123,7 +123,7 @@ void errorCatch(errorret_t retval) {
} }
errorret_t errorPrint(const errorret_t retval) { errorret_t errorPrint(const errorret_t retval) {
if(retval.code == ERROR_OK) return retval; if(errorIsOk(retval)) return retval;
assertNotNull(retval.state, "Error state cannot be NULL"); assertNotNull(retval.state, "Error state cannot be NULL");
assertNotNull(retval.state->message, "Message cannot be NULL"); assertNotNull(retval.state->message, "Message cannot be NULL");
+2 -1
View File
@@ -127,10 +127,11 @@ errorret_t errorPrint(const errorret_t retval);
return errorChainImpl(errorChainRetval, __FILE__, __func__, __LINE__); \ return errorChainImpl(errorChainRetval, __FILE__, __func__, __LINE__); \
} \ } \
} }
/** /**
* Returns without an error. * Returns without an error.
*
* @return An error state with code ERROR_OK.
*/ */
#define errorOk() \ #define errorOk() \
return errorOkImpl() return errorOkImpl()
+3 -3
View File
@@ -15,7 +15,7 @@ int main(int argc, char **argv) {
// Init engine // Init engine
ret = engineInit(argc, (const char_t **)argv); ret = engineInit(argc, (const char_t **)argv);
if(ret.code != ERROR_OK) { if(errorIsNotOk(ret)) {
errorCatch(errorPrint(ret)); errorCatch(errorPrint(ret));
return ret.code; return ret.code;
} }
@@ -23,14 +23,14 @@ int main(int argc, char **argv) {
// Begin main loop // Begin main loop
do { do {
ret = engineUpdate(); ret = engineUpdate();
if(ret.code != ERROR_OK) { if(errorIsNotOk(ret)) {
errorCatch(errorPrint(ret)); errorCatch(errorPrint(ret));
return ret.code; return ret.code;
} }
} while(ENGINE.running); } while(ENGINE.running);
ret = engineDispose(); ret = engineDispose();
if(ret.code != ERROR_OK) { if(errorIsNotOk(ret)) {
errorCatch(errorPrint(ret)); errorCatch(errorPrint(ret));
return ret.code; return ret.code;
} }
+3 -3
View File
@@ -50,7 +50,7 @@ errorret_t saveLoad(const uint8_t slot) {
saveStreamClosePlatform(&stream); saveStreamClosePlatform(&stream);
#endif #endif
if(ret.code != ERROR_OK) return ret; if(errorIsNotOk(ret)) return ret;
errorChain(saveStreamVerifyChecksumImpl(&stream, slot)); errorChain(saveStreamVerifyChecksumImpl(&stream, slot));
@@ -72,7 +72,7 @@ errorret_t saveWrite(const uint8_t slot) {
errorret_t ret = saveFileWrite(&stream, file); errorret_t ret = saveFileWrite(&stream, file);
if(ret.code == ERROR_OK) { if(errorIsOk(ret)) {
ret = saveStreamFinalizeWriteImpl(&stream); ret = saveStreamFinalizeWriteImpl(&stream);
} }
@@ -80,7 +80,7 @@ errorret_t saveWrite(const uint8_t slot) {
saveStreamClosePlatform(&stream); saveStreamClosePlatform(&stream);
#endif #endif
if(ret.code != ERROR_OK) return ret; if(errorIsNotOk(ret)) return ret;
file->exists = true; file->exists = true;
errorOk(); errorOk();
+4 -2
View File
@@ -14,6 +14,7 @@ void threadInit(thread_t *thread, const threadcallback_t callback) {
assertNotNull(callback, "Thread callback cannot be NULL."); assertNotNull(callback, "Thread callback cannot be NULL.");
memoryZero(thread, sizeof(thread_t)); memoryZero(thread, sizeof(thread_t));
threadMutexInit(&thread->stateMutex);
thread->state = THREAD_STATE_STOPPED; thread->state = THREAD_STATE_STOPPED;
thread->callback = callback; thread->callback = callback;
@@ -59,9 +60,10 @@ void threadStart(thread_t *thread) {
threadStartRequest(thread); threadStartRequest(thread);
threadMutexLock(&thread->stateMutex); threadMutexLock(&thread->stateMutex);
threadMutexWaitLock(&thread->stateMutex); while(thread->state == THREAD_STATE_STARTING) {
threadMutexWaitLock(&thread->stateMutex);
}
threadMutexUnlock(&thread->stateMutex); threadMutexUnlock(&thread->stateMutex);
printf("Thread is now running.\n");
} }
void threadStop(thread_t *thread) { void threadStop(thread_t *thread) {
+2
View File
@@ -10,6 +10,7 @@
void threadMutexInit(threadmutex_t *lock) { void threadMutexInit(threadmutex_t *lock) {
#ifdef DUSK_THREAD_PTHREAD #ifdef DUSK_THREAD_PTHREAD
pthread_mutex_init(&lock->mutex, NULL); pthread_mutex_init(&lock->mutex, NULL);
pthread_cond_init(&lock->cond, NULL);
#endif #endif
} }
@@ -46,5 +47,6 @@ void threadMutexSignal(threadmutex_t *lock) {
void threadMutexDispose(threadmutex_t *lock) { void threadMutexDispose(threadmutex_t *lock) {
#ifdef DUSK_THREAD_PTHREAD #ifdef DUSK_THREAD_PTHREAD
pthread_mutex_destroy(&lock->mutex); pthread_mutex_destroy(&lock->mutex);
pthread_cond_destroy(&lock->cond);
#endif #endif
} }
+1 -1
View File
@@ -10,6 +10,6 @@
#include "error/errorgl.h" #include "error/errorgl.h"
#define assertNoGLError(message) \ #define assertNoGLError(message) \
assertTrue(errorGLCheck().code == ERROR_OK, message) assertTrue(errorIsOk(errorGLCheck()), message)
// EOF // EOF
+9 -9
View File
@@ -40,14 +40,14 @@ errorret_t shaderInitGL(shadergl_t *shader, const shaderdefinitiongl_t *def) {
glShaderSource(shader->vertexShaderId, 1, &def->vert, NULL); glShaderSource(shader->vertexShaderId, 1, &def->vert, NULL);
err = errorGLCheck(); err = errorGLCheck();
if(err.code != ERROR_OK) { if(errorIsNotOk(err)) {
glDeleteShader(shader->vertexShaderId); glDeleteShader(shader->vertexShaderId);
errorChain(err); errorChain(err);
} }
glCompileShader(shader->vertexShaderId); glCompileShader(shader->vertexShaderId);
err = errorGLCheck(); err = errorGLCheck();
if(err.code != ERROR_OK) { if(errorIsNotOk(err)) {
glDeleteShader(shader->vertexShaderId); glDeleteShader(shader->vertexShaderId);
errorChain(err); errorChain(err);
} }
@@ -64,14 +64,14 @@ errorret_t shaderInitGL(shadergl_t *shader, const shaderdefinitiongl_t *def) {
// Create fragment shader // Create fragment shader
shader->fragmentShaderId = glCreateShader(GL_FRAGMENT_SHADER); shader->fragmentShaderId = glCreateShader(GL_FRAGMENT_SHADER);
err = errorGLCheck(); err = errorGLCheck();
if(err.code != ERROR_OK) { if(errorIsNotOk(err)) {
glDeleteShader(shader->vertexShaderId); glDeleteShader(shader->vertexShaderId);
errorChain(err); errorChain(err);
} }
glShaderSource(shader->fragmentShaderId, 1, &def->frag, NULL); glShaderSource(shader->fragmentShaderId, 1, &def->frag, NULL);
err = errorGLCheck(); err = errorGLCheck();
if(err.code != ERROR_OK) { if(errorIsNotOk(err)) {
glDeleteShader(shader->vertexShaderId); glDeleteShader(shader->vertexShaderId);
glDeleteShader(shader->fragmentShaderId); glDeleteShader(shader->fragmentShaderId);
errorChain(err); errorChain(err);
@@ -79,7 +79,7 @@ errorret_t shaderInitGL(shadergl_t *shader, const shaderdefinitiongl_t *def) {
glCompileShader(shader->fragmentShaderId); glCompileShader(shader->fragmentShaderId);
err = errorGLCheck(); err = errorGLCheck();
if(err.code != ERROR_OK) { if(errorIsNotOk(err)) {
glDeleteShader(shader->vertexShaderId); glDeleteShader(shader->vertexShaderId);
glDeleteShader(shader->fragmentShaderId); glDeleteShader(shader->fragmentShaderId);
errorChain(err); errorChain(err);
@@ -97,7 +97,7 @@ errorret_t shaderInitGL(shadergl_t *shader, const shaderdefinitiongl_t *def) {
// Create shader program // Create shader program
shader->shaderProgramId = glCreateProgram(); shader->shaderProgramId = glCreateProgram();
err = errorGLCheck(); err = errorGLCheck();
if(err.code != ERROR_OK) { if(errorIsNotOk(err)) {
glDeleteShader(shader->vertexShaderId); glDeleteShader(shader->vertexShaderId);
glDeleteShader(shader->fragmentShaderId); glDeleteShader(shader->fragmentShaderId);
errorChain(err); errorChain(err);
@@ -105,7 +105,7 @@ errorret_t shaderInitGL(shadergl_t *shader, const shaderdefinitiongl_t *def) {
glAttachShader(shader->shaderProgramId, shader->vertexShaderId); glAttachShader(shader->shaderProgramId, shader->vertexShaderId);
err = errorGLCheck(); err = errorGLCheck();
if(err.code != ERROR_OK) { if(errorIsNotOk(err)) {
glDeleteProgram(shader->shaderProgramId); glDeleteProgram(shader->shaderProgramId);
glDeleteShader(shader->vertexShaderId); glDeleteShader(shader->vertexShaderId);
glDeleteShader(shader->fragmentShaderId); glDeleteShader(shader->fragmentShaderId);
@@ -114,7 +114,7 @@ errorret_t shaderInitGL(shadergl_t *shader, const shaderdefinitiongl_t *def) {
glAttachShader(shader->shaderProgramId, shader->fragmentShaderId); glAttachShader(shader->shaderProgramId, shader->fragmentShaderId);
err = errorGLCheck(); err = errorGLCheck();
if(err.code != ERROR_OK) { if(errorIsNotOk(err)) {
glDeleteProgram(shader->shaderProgramId); glDeleteProgram(shader->shaderProgramId);
glDeleteShader(shader->vertexShaderId); glDeleteShader(shader->vertexShaderId);
glDeleteShader(shader->fragmentShaderId); glDeleteShader(shader->fragmentShaderId);
@@ -123,7 +123,7 @@ errorret_t shaderInitGL(shadergl_t *shader, const shaderdefinitiongl_t *def) {
glLinkProgram(shader->shaderProgramId); glLinkProgram(shader->shaderProgramId);
err = errorGLCheck(); err = errorGLCheck();
if(err.code != ERROR_OK) { if(errorIsNotOk(err)) {
glDeleteProgram(shader->shaderProgramId); glDeleteProgram(shader->shaderProgramId);
glDeleteShader(shader->vertexShaderId); glDeleteShader(shader->vertexShaderId);
glDeleteShader(shader->fragmentShaderId); glDeleteShader(shader->fragmentShaderId);
+2 -2
View File
@@ -101,7 +101,7 @@ errorret_t networkPSPUpdate() {
// Kill the PSP network stack. // Kill the PSP network stack.
errorret_t err = networkPSPTerm(); errorret_t err = networkPSPTerm();
if(err.code != ERROR_OK) { if(errorIsNotOk(err)) {
errorCatch(errorPrint(err)); errorCatch(errorPrint(err));
} }
@@ -203,7 +203,7 @@ void networkPSPRequestDisconnection(
); );
errorret_t err = networkPSPTerm(); errorret_t err = networkPSPTerm();
if(err.code != ERROR_OK) { if(errorIsNotOk(err)) {
errorCatch(errorPrint(err)); errorCatch(errorPrint(err));
} }