#include "../../SDL_internal.h"
#ifdef SDL_THREAD_N3DS
#include "SDL_sysmutex_c.h"
SDL_mutex *
SDL_CreateMutex(void)
{
SDL_mutex *mutex;
mutex = (SDL_mutex *) SDL_malloc(sizeof(*mutex));
if (mutex) {
RecursiveLock_Init(&mutex->lock);
} else {
SDL_OutOfMemory();
}
return mutex;
}
void
SDL_DestroyMutex(SDL_mutex *mutex)
{
if (mutex) {
SDL_free(mutex);
}
}
int
SDL_LockMutex(SDL_mutex *mutex)
{
if (mutex == NULL) {
return SDL_SetError("Passed a NULL mutex");
}
RecursiveLock_Lock(&mutex->lock);
return 0;
}
int
SDL_TryLockMutex(SDL_mutex *mutex)
{
if (mutex == NULL) {
return SDL_SetError("Passed a NULL mutex");
}
return RecursiveLock_TryLock(&mutex->lock);
}
int
SDL_mutexV(SDL_mutex *mutex)
{
if (mutex == NULL) {
return SDL_SetError("Passed a NULL mutex");
}
RecursiveLock_Unlock(&mutex->lock);
return 0;
}
#endif