Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix SDL_MAIN_USE_CALLBACKS with Android, introduce SDL_MAIN_EXPORTED
My simplification of the conditions for including SDL_main_impl.h had one problem: I forgot that SDL_main_impl.h must be included even on Android when SDL_MAIN_USE_CALLBACKS is used, because then a SDL_main() function that makes sure the callbacks get called is needed, and that function is implemented in SDL_main_impl.h But OTOH, even when SDL_MAIN_USE_CALLBACKS is used, SDL_main_impl.h should not implement a standard `int main(...)` function on Android (because there the SDL-using native code is compiled as a library and the entry point is in SDLActivity.java, which calls SDL_main() in said library). So the check for platforms that don't have *any* native main function but just SDL_main() called from the outside should be handled in SDL_main_impl.h, so both the normal and the callback case can avoid generating a standard main() in the same way. To do this, SDL_MAIN_EXPORTED is defined for platforms like Android, where the real entry point (main() function) is outside of the code that uses SDL, so - SDL_main() must be visibly exported with SDL_DECLSPEC, so the outside code can call it - SDL_main_impl.h must not implement a "real" main() function Another small change based on this is defining SDLMAIN_DECLSPEC at a more general place. If another platform like Android (where the entry point is somewhere else entirely, possibly implemented in a different programming language) turns up, defining SDL_MAIN_NEEDED (so the users main() is renamed to SDL_main()) and SDL_MAIN_EXPORTED should be all that's needed on the SDL_main.h side - and if not then at least the implementation is cleaner and clearer now, IMHO. fixes libsdl-org#11162
- Loading branch information