Assert return value of mutex functions
Mutex functions may only fail due to a programming error.
Use assertions in debug builds, and ignore the value in release builds.
static inline void
mutex_lock(SDL_mutex *mutex) {
- if (SDL_LockMutex(mutex)) {
- LOGC("Could not lock mutex");
+ int r = SDL_LockMutex(mutex);
+#ifndef NDEBUG
+ if (r) {
+ LOGC("Could not lock mutex: %s", SDL_GetError());
abort();
}
+#else
+ (void) r;
+#endif
}
static inline void
mutex_unlock(SDL_mutex *mutex) {
- if (SDL_UnlockMutex(mutex)) {
- LOGC("Could not unlock mutex");
+ int r = SDL_UnlockMutex(mutex);
+#ifndef NDEBUG
+ if (r) {
+ LOGC("Could not unlock mutex: %s", SDL_GetError());
abort();
}
+#else
+ (void) r;
+#endif
}
static inline void
cond_wait(SDL_cond *cond, SDL_mutex *mutex) {
- if (SDL_CondWait(cond, mutex)) {
- LOGC("Could not wait on condition");
+ int r = SDL_CondWait(cond, mutex);
+#ifndef NDEBUG
+ if (r) {
+ LOGC("Could not wait on condition: %s", SDL_GetError());
abort();
}
+#else
+ (void) r;
+#endif
}
static inline int
cond_wait_timeout(SDL_cond *cond, SDL_mutex *mutex, uint32_t ms) {
int r = SDL_CondWaitTimeout(cond, mutex, ms);
+#ifndef NDEBUG
if (r < 0) {
- LOGC("Could not wait on condition with timeout");
+ LOGC("Could not wait on condition with timeout: %s", SDL_GetError());
abort();
}
+#endif
return r;
}
static inline void
cond_signal(SDL_cond *cond) {
- if (SDL_CondSignal(cond)) {
- LOGC("Could not signal a condition");
+ int r = SDL_CondSignal(cond);
+#ifndef NDEBUG
+ if (r) {
+ LOGC("Could not signal a condition: %s", SDL_GetError());
abort();
}
+#else
+ (void) r;
+#endif
}
#endif
