|
@@ -9,10 +9,6 @@ SDL headers should now be included as `#include <SDL3/SDL.h>`. Typically that's
|
|
|
CMake users should use this snippet to include SDL support in their project:
|
|
|
```
|
|
|
find_package(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3)
|
|
|
-find_package(SDL3 REQUIRED CONFIG COMPONENTS SDL3_main)
|
|
|
-if(TARGET SDL3::SDL3_main)
|
|
|
- target_link_libraries(mygame PRIVATE SDL3::SDL3_main)
|
|
|
-endif()
|
|
|
target_link_libraries(mygame PRIVATE SDL3::SDL3)
|
|
|
```
|
|
|
|
|
@@ -28,7 +24,9 @@ CFLAGS += $(shell pkg-config sdl3 --cflags)
|
|
|
LDFLAGS += $(shell pkg-config sdl3 --libs)
|
|
|
```
|
|
|
|
|
|
-The SDL3main and SDL3test libraries have been renamed SDL3_main and SDL3_test, respectively.
|
|
|
+The SDL3test library has been renamed SDL3_test.
|
|
|
+
|
|
|
+There is no static SDLmain library anymore, it's now header-only, see below in the SDL_main.h section.
|
|
|
|
|
|
|
|
|
## SDL_cpuinfo.h
|
|
@@ -63,6 +61,34 @@ SDL_GetEventState used to be a macro, now it's a real function, but otherwise fu
|
|
|
|
|
|
Removed SDL_GameControllerGetSensorDataWithTimestamp(), if you want timestamps for the sensor data, you should use the sensor_timestamp member of SDL_CONTROLLERSENSORUPDATE events.
|
|
|
|
|
|
+## SDL_main.h
|
|
|
+
|
|
|
+SDL3 doesn't have a static libSDLmain to link against anymore.
|
|
|
+Instead SDL_main.h is now a header-only library **and not included by SDL.h anymore**.
|
|
|
+
|
|
|
+Using it is really simple: Just `#include <SDL3/SDL_main.h>` in the source file with your standard
|
|
|
+`int main(int argc, char* argv[])` function.
|
|
|
+
|
|
|
+The rest happens automatically: If your target platform needs the SDL_main functionality,
|
|
|
+your `main` function will be renamed to `SDL_main` (with a macro, just like in SDL2),
|
|
|
+and the real main-function will be implemented by inline code from SDL_main.h - and if your target
|
|
|
+platform doesn't need it, nothing happens.
|
|
|
+Like in SDL2, if you want to handle the platform-specific main yourself instead of using the SDL_main magic,
|
|
|
+you can `#define SDL_MAIN_HANDLED` before `#include <SDL3/SDL_main.h>` - don't forget to call `SDL_SetMainReady()`!
|
|
|
+
|
|
|
+If you need SDL_main.h in another source file (that doesn't implement main()), you also need to
|
|
|
+`#define SDL_MAIN_HANDLED` there, to avoid that multiple main functions are generated by SDL_main.h
|
|
|
+
|
|
|
+There is currently one platform where this approach doesn't always work: WinRT.
|
|
|
+It requires WinMain to be implemented in a C++ source file that's compiled with `/ZW`. If your main
|
|
|
+is implemented in plain C, or you can't use `/ZW` on that file, you can add another .cpp
|
|
|
+source file that just contains `#include <SDL3/SDL_main.h>` and compile that with `/ZW` - but keep
|
|
|
+in mind that the source file with your standard main also needs that include!
|
|
|
+See [README-winrt.md](./README-winrt.md) for more details.
|
|
|
+
|
|
|
+Furthermore, the different `SDL_*RunApp()` functions (SDL_WinRtRunApp, SDL_GDKRunApp, SDL_UIKitRunApp)
|
|
|
+have been unified into just `int SDL_RunApp(int argc, char* argv[], void * reserved)` (which is also
|
|
|
+used by additional platforms that didn't have a SDL_RunApp-like function before).
|
|
|
|
|
|
## SDL_platform.h
|
|
|
|