SDL: new method SDL_ANDROID_RestartMyself() that will restart current app

This commit is contained in:
Sergii Pylypenko
2015-06-25 23:07:25 +03:00
parent c026bea0bb
commit 97c256b03d
5 changed files with 27 additions and 0 deletions

View File

@@ -123,6 +123,9 @@ extern DECLSPEC void SDLCALL SDL_ANDROID_OpenExternalApp(const char *package, co
/* Open an Android web browser, or Chrome, or Youtube for video links. Just a wrapper for SDL_ANDROID_OpenExternalApp(NULL, NULL, url) */
extern DECLSPEC void SDLCALL SDL_ANDROID_OpenExternalWebBrowser(const char *url);
/* Restart current app, you can pass a string to the new app instance, which can be retrieved with getenv("SDL_RESTART_PARAMS") */
extern DECLSPEC void SDLCALL SDL_ANDROID_RestartMyself(const char *restartParams);
#ifdef __cplusplus
}
#endif

View File

@@ -85,6 +85,7 @@ static jmethodID JavaRequestNewAdvertisement = NULL;
static jmethodID JavaRequestCloudSave = NULL;
static jmethodID JavaRequestCloudLoad = NULL;
static jmethodID JavaRequestOpenExternalApp = NULL;
static jmethodID JavaRequestRestartMyself = NULL;
static int glContextLost = 0;
static int showScreenKeyboardDeferred = 0;
static const char * showScreenKeyboardOldText = "";
@@ -349,6 +350,7 @@ JAVA_EXPORT_NAME(DemoRenderer_nativeInitJavaCallbacks) ( JNIEnv* env, jobject t
JavaRequestCloudLoad = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "cloudLoad",
"(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z");
JavaRequestOpenExternalApp = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "openExternalApp", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");
JavaRequestRestartMyself = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "restartMyself", "(Ljava/lang/String;)V");
ANDROID_InitOSKeymap();
}
@@ -576,6 +578,15 @@ void SDLCALL SDL_ANDROID_OpenExternalApp(const char *package, const char *activi
(*JavaEnv)->PopLocalFrame(JavaEnv, NULL);
}
void SDLCALL SDL_ANDROID_RestartMyself(const char *restartParams)
{
(*JavaEnv)->PushLocalFrame(JavaEnv, 1);
jstring s1 = restartParams ? (*JavaEnv)->NewStringUTF(JavaEnv, restartParams) : (*JavaEnv)->NewStringUTF(JavaEnv, "");
(*JavaEnv)->CallVoidMethod( JavaEnv, JavaRenderer, JavaRequestRestartMyself, s1 );
(*JavaEnv)->DeleteLocalRef(JavaEnv, s1);
(*JavaEnv)->PopLocalFrame(JavaEnv, NULL);
}
void SDLCALL SDL_ANDROID_OpenExternalWebBrowser(const char *url)
{
SDL_ANDROID_OpenExternalApp(NULL, NULL, url);