From 3f0dd2e97afc418aac9d47c18d7658760951a446 Mon Sep 17 00:00:00 2001 From: Gerhard Stein Date: Sun, 13 Oct 2013 22:01:21 +0200 Subject: [PATCH] SDL2 for SDL_Main --- changeAppSettings.sh | 2 ++ .../src/org/libsdl/app/SDLActivity.java | 2 +- project/jni/sdl_main/sdl_main.c | 31 +++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/changeAppSettings.sh b/changeAppSettings.sh index f8c8c2269..d5b1d43ed 100755 --- a/changeAppSettings.sh +++ b/changeAppSettings.sh @@ -1218,8 +1218,10 @@ MainLibrariesToLoad="" for lib in $CompatibilityHacksAdditionalPreloadedSharedLibraries; do MainLibrariesToLoad="$MainLibrariesToLoad \\\"$lib\\\"," done + MainLibrariesToLoad="$MainLibrariesToLoad \\\"application\\\", \\\"sdl_main\\\"" + if [ "$CustomBuildScript" = "n" ] ; then CustomBuildScript= fi diff --git a/project/jni/sdl-2.0/android-project/src/org/libsdl/app/SDLActivity.java b/project/jni/sdl-2.0/android-project/src/org/libsdl/app/SDLActivity.java index 014af000f..880f24bde 100644 --- a/project/jni/sdl-2.0/android-project/src/org/libsdl/app/SDLActivity.java +++ b/project/jni/sdl-2.0/android-project/src/org/libsdl/app/SDLActivity.java @@ -58,7 +58,7 @@ public class SDLActivity extends Activity { //System.loadLibrary("SDL2_net"); //System.loadLibrary("SDL2_ttf"); System.loadLibrary("application"); - System.loadLibrary("sdl_main"); + System.loadLibrary("sdl2_main"); } // Setup diff --git a/project/jni/sdl_main/sdl_main.c b/project/jni/sdl_main/sdl_main.c index d1f5df926..b03d4fcad 100644 --- a/project/jni/sdl_main/sdl_main.c +++ b/project/jni/sdl_main/sdl_main.c @@ -1,3 +1,8 @@ + +#if SDL_VERSION_ATLEAST(2,0,0) +#include "SDL_config.h" +#endif + #include #include #include @@ -8,6 +13,32 @@ #include "SDL_main.h" #if SDL_VERSION_ATLEAST(2,0,0) + + + +// Called before SDL_main() to initialize JNI bindings in SDL library +extern void SDL_Android_Init(JNIEnv* env, jclass cls); + +// Start up the SDL app +void Java_org_libsdl_app_SDLActivity_nativeInit(JNIEnv* env, jclass cls, jobject obj) +{ + /* This interface could expand with ABI negotiation, calbacks, etc. */ + SDL_Android_Init(env, cls); + + SDL_SetMainReady(); + + /* Run the application code! */ + int status; + char *argv[2]; + argv[0] = SDL_strdup("SDL_app"); + argv[1] = NULL; + status = SDL_main(1, argv); + + /* Do not issue an exit or the whole application will terminate instead of just the SDL thread */ + //exit(status); +} + + #else #include "SDL_android.h" #endif