Browse Source

Set SDL_MAIN_AVAILABLE for all platforms

Sam Lantinga 1 week ago
parent
commit
1c46c8a3dc
2 changed files with 21 additions and 8 deletions
  1. 12 5
      include/SDL3/SDL_main.h
  2. 9 3
      src/main/SDL_runapp.c

+ 12 - 5
include/SDL3/SDL_main.h

@@ -167,12 +167,10 @@
         */
         #define SDL_MAIN_NEEDED
 
-    #elif defined(SDL_PLATFORM_IOS)
-        /* On iOS SDL provides a main function that creates an application delegate
-           and starts the iOS application run loop.
+    #elif defined(SDL_PLATFORM_IOS) || defined(SDL_PLATFORM_TVOS)
+        /* On iOS and tvOS SDL provides a main function that creates an application delegate and starts the application run loop.
 
-           To use it, just #include SDL_main.h in the source file that contains your
-           main() function.
+           To use it, just #include <SDL3/SDL_main.h> in the source file that contains your main() function.
 
            See src/video/uikit/SDL_uikitappdelegate.m for more details.
          */
@@ -230,6 +228,15 @@
         */
         #define SDL_MAIN_AVAILABLE
 
+    #else
+        /*
+          This platform SDL provides a main function that sets up the main
+          thread and calls your main function.
+
+          If you provide this yourself, you may define SDL_MAIN_HANDLED
+        */
+        #define SDL_MAIN_AVAILABLE
+
     #endif
 #endif /* SDL_MAIN_HANDLED */
 

+ 9 - 3
src/main/SDL_runapp.c

@@ -21,9 +21,15 @@
 #include "SDL_internal.h"
 #include "SDL_main_callbacks.h"
 
-/* Most platforms that use/need SDL_main have their own SDL_RunApp() implementation.
- * If not, you can special case it here by appending || defined(__YOUR_PLATFORM__) */
-#if ( !defined(SDL_MAIN_NEEDED) && !defined(SDL_MAIN_AVAILABLE) ) || defined(SDL_PLATFORM_ANDROID)
+// Add your platform here if you define a custom SDL_RunApp() implementation
+#if !defined(SDL_PLATFORM_WIN32) && \
+    !defined(SDL_PLATFORM_GDK) && \
+    !defined(SDL_PLATFORM_IOS) && \
+    !defined(SDL_PLATFORM_TVOS) && \
+    !defined(SDL_PLATFORM_EMSCRIPTEN) && \
+    !defined(SDL_PLATFORM_PSP) && \
+    !defined(SDL_PLATFORM_PS2) && \
+    !defined(SDL_PLATFORM_3DS)
 
 int SDL_RunApp(int argc, char *argv[], SDL_main_func mainFunction, void * reserved)
 {