diff --git a/docs/README-migration.md b/docs/README-migration.md index aa1b044f12..85949df581 100644 --- a/docs/README-migration.md +++ b/docs/README-migration.md @@ -707,6 +707,8 @@ The following functions have been renamed: ## SDL_mutex.h +SDL_MUTEX_MAXWAIT has been removed; it suggested there was a maximum timeout one could outlive, instead of an infinite wait. Instead, pass a -1 to functions that accepted this symbol. + SDL_LockMutex and SDL_UnlockMutex now return void; if the mutex is valid (including being a NULL pointer, which returns immediately), these functions never fail. If the mutex is invalid or the caller does something illegal, like unlock another thread's mutex, this is considered undefined behavior. The following functions have been renamed: diff --git a/include/SDL3/SDL_mutex.h b/include/SDL3/SDL_mutex.h index a87fce8770..559fda79e6 100644 --- a/include/SDL3/SDL_mutex.h +++ b/include/SDL3/SDL_mutex.h @@ -121,11 +121,6 @@ extern "C" { */ #define SDL_MUTEX_TIMEDOUT 1 -/** - * This is the timeout value which corresponds to never time out. - */ -#define SDL_MUTEX_MAXWAIT -1 - /** * \name Mutex functions @@ -535,7 +530,7 @@ extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_Semaphore *sem); * semaphore value. * * This function is the equivalent of calling SDL_WaitSemaphoreTimeout() with - * a time length of `SDL_MUTEX_MAXWAIT`. + * a time length of -1. * * \param sem the semaphore wait on * \returns 0 on success or a negative error code on failure; call @@ -722,7 +717,7 @@ extern DECLSPEC int SDLCALL SDL_BroadcastCondition(SDL_Condition *cond); * behavior. * * This function is the equivalent of calling SDL_WaitConditionTimeout() with - * a time length of `SDL_MUTEX_MAXWAIT`. + * a time length of -1. * * \param cond the condition variable to wait on * \param mutex the mutex used to coordinate thread access @@ -755,7 +750,7 @@ extern DECLSPEC int SDLCALL SDL_WaitCondition(SDL_Condition *cond, SDL_Mutex *mu * \param cond the condition variable to wait on * \param mutex the mutex used to coordinate thread access * \param timeoutMS the maximum time to wait, in milliseconds, or - * `SDL_MUTEX_MAXWAIT` to wait indefinitely + * -1 to wait indefinitely * \returns 0 if the condition variable is signaled, `SDL_MUTEX_TIMEDOUT` if * the condition is not signaled in the allotted time, or a negative * error code on failure; call SDL_GetError() for more information. diff --git a/src/thread/SDL_thread.c b/src/thread/SDL_thread.c index e062a96f91..7328316e63 100644 --- a/src/thread/SDL_thread.c +++ b/src/thread/SDL_thread.c @@ -472,7 +472,7 @@ void SDL_DetachThread(SDL_Thread *thread) int SDL_WaitSemaphore(SDL_Semaphore *sem) { - return SDL_WaitSemaphoreTimeoutNS(sem, SDL_MUTEX_MAXWAIT); + return SDL_WaitSemaphoreTimeoutNS(sem, -1); } int SDL_TryWaitSemaphore(SDL_Semaphore *sem) @@ -494,7 +494,7 @@ int SDL_WaitSemaphoreTimeout(SDL_Semaphore *sem, Sint32 timeoutMS) int SDL_WaitCondition(SDL_Condition *cond, SDL_Mutex *mutex) { - return SDL_WaitConditionTimeoutNS(cond, mutex, SDL_MUTEX_MAXWAIT); + return SDL_WaitConditionTimeoutNS(cond, mutex, -1); } int SDL_WaitConditionTimeout(SDL_Condition *cond, SDL_Mutex *mutex, Sint32 timeoutMS) diff --git a/src/thread/n3ds/SDL_syssem.c b/src/thread/n3ds/SDL_syssem.c index 1c197f553a..261609b278 100644 --- a/src/thread/n3ds/SDL_syssem.c +++ b/src/thread/n3ds/SDL_syssem.c @@ -67,7 +67,7 @@ int SDL_WaitSemaphoreTimeoutNS(SDL_Semaphore *sem, Sint64 timeoutNS) return SDL_InvalidParamError("sem"); } - if (timeoutNS == SDL_MUTEX_MAXWAIT) { + if (timeoutNS == -1) { // -1 == wait indefinitely. LightSemaphore_Acquire(&sem->semaphore, 1); return 0; } diff --git a/src/thread/ngage/SDL_syssem.cpp b/src/thread/ngage/SDL_syssem.cpp index 8b15be46e2..e7306e8a16 100644 --- a/src/thread/ngage/SDL_syssem.cpp +++ b/src/thread/ngage/SDL_syssem.cpp @@ -114,7 +114,7 @@ int SDL_WaitSemaphoreTimeoutNS(SDL_Semaphore *sem, Sint64 timeoutNS) return SDL_MUTEX_TIMEOUT; } - if (timeoutNS == SDL_MUTEX_MAXWAIT) { + if (timeoutNS == -1) { // -1 == wait indefinitely. WaitAll(sem); return 0; } diff --git a/src/thread/ps2/SDL_syssem.c b/src/thread/ps2/SDL_syssem.c index 3878d09ed4..587bf49417 100644 --- a/src/thread/ps2/SDL_syssem.c +++ b/src/thread/ps2/SDL_syssem.c @@ -96,7 +96,7 @@ int SDL_WaitSemaphoreTimeoutNS(SDL_Semaphore *sem, Sint64 timeoutNS) return 0; } - if (timeoutNS != SDL_MUTEX_MAXWAIT) { + if (timeoutNS != -1) { // -1 == wait indefinitely. SetTimerAlarm(&alarm, MSec2TimerBusClock(SDL_NS_TO_MS(timeoutNS)), &usercb, (void *)GetThreadId()); } diff --git a/src/thread/psp/SDL_syssem.c b/src/thread/psp/SDL_syssem.c index d65c9f1ace..f54e53ccfe 100644 --- a/src/thread/psp/SDL_syssem.c +++ b/src/thread/psp/SDL_syssem.c @@ -70,7 +70,7 @@ void SDL_DestroySemaphore(SDL_Semaphore *sem) } /* TODO: This routine is a bit overloaded. - * If the timeout is 0 then just poll the semaphore; if it's SDL_MUTEX_MAXWAIT, pass + * If the timeout is 0 then just poll the semaphore; if it's -1, pass * NULL to sceKernelWaitSema() so that it waits indefinitely; and if the timeout * is specified, convert it to microseconds. */ int SDL_WaitSemaphoreTimeoutNS(SDL_Semaphore *sem, Sint64 timeoutNS) diff --git a/src/thread/vita/SDL_syssem.c b/src/thread/vita/SDL_syssem.c index 784f88ed48..105b18d247 100644 --- a/src/thread/vita/SDL_syssem.c +++ b/src/thread/vita/SDL_syssem.c @@ -71,7 +71,7 @@ void SDL_DestroySemaphore(SDL_Semaphore *sem) } /* TODO: This routine is a bit overloaded. - * If the timeout is 0 then just poll the semaphore; if it's SDL_MUTEX_MAXWAIT, pass + * If the timeout is 0 then just poll the semaphore; if it's -1, pass * NULL to sceKernelWaitSema() so that it waits indefinitely; and if the timeout * is specified, convert it to microseconds. */ int SDL_WaitSemaphoreTimeoutNS(SDL_Semaphore *sem, Sint64 timeoutNS) diff --git a/src/timer/SDL_timer.c b/src/timer/SDL_timer.c index 0052ff60f5..67296bbb84 100644 --- a/src/timer/SDL_timer.c +++ b/src/timer/SDL_timer.c @@ -141,7 +141,7 @@ static int SDLCALL SDL_TimerThread(void *_data) } /* Initial delay if there are no timers */ - delay = (Uint64)SDL_MUTEX_MAXWAIT; + delay = (Uint64)-1; tick = SDL_GetTicksNS();