SDL: mutex: Removed SDL_MUTEX_MAXWAIT.

From e6116d399a144b4f0f6c8e1ad7bef206718ce9b3 Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Thu, 26 Oct 2023 14:21:53 -0400
Subject: [PATCH] mutex: Removed SDL_MUTEX_MAXWAIT.

Fixes #8436.
---
 docs/README-migration.md        |  2 ++
 include/SDL3/SDL_mutex.h        | 11 +++--------
 src/thread/SDL_thread.c         |  4 ++--
 src/thread/n3ds/SDL_syssem.c    |  2 +-
 src/thread/ngage/SDL_syssem.cpp |  2 +-
 src/thread/ps2/SDL_syssem.c     |  2 +-
 src/thread/psp/SDL_syssem.c     |  2 +-
 src/thread/vita/SDL_syssem.c    |  2 +-
 src/timer/SDL_timer.c           |  2 +-
 9 files changed, 13 insertions(+), 16 deletions(-)

diff --git a/docs/README-migration.md b/docs/README-migration.md
index aa1b044f1209..85949df58155 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 a87fce87707d..559fda79e6f6 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 e062a96f918c..7328316e6313 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 1c197f553ad6..261609b27846 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 8b15be46e280..e7306e8a16a1 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 3878d09ed464..587bf494172b 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 d65c9f1ace4d..f54e53ccfe34 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 784f88ed48eb..105b18d247ba 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 0052ff60f537..67296bbb8440 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();