diff options
author | Elias Fleckenstein <54945686+EliasFleckenstein03@users.noreply.github.com> | 2020-11-04 16:57:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-04 16:57:47 +0100 |
commit | 3e16c3a78fff61c20e63ba730d15e94e3bb877b4 (patch) | |
tree | c070350db219f2c4241d22bc31949685c7b42fe9 /src/porting_android.cpp | |
parent | 5d9ae5a91c544fc7fbd475decf47cef7e09ef8fc (diff) | |
parent | 6ccb5835ff55d85156be91473c598eca9d6cb9a6 (diff) | |
download | dragonfireclient-3e16c3a78fff61c20e63ba730d15e94e3bb877b4.tar.xz |
Merge branch 'master' into master
Diffstat (limited to 'src/porting_android.cpp')
-rw-r--r-- | src/porting_android.cpp | 136 |
1 files changed, 66 insertions, 70 deletions
diff --git a/src/porting_android.cpp b/src/porting_android.cpp index f3754d835..41b521ec2 100644 --- a/src/porting_android.cpp +++ b/src/porting_android.cpp @@ -51,8 +51,7 @@ void android_main(android_app *app) main(ARRLEN(argv) - 1, argv); free(argv[0]); } catch (std::exception &e) { - errorstream << "Uncaught exception in main thread: " << e.what() - << std::endl; + errorstream << "Uncaught exception in main thread: " << e.what() << std::endl; retval = -1; } catch (...) { errorstream << "Uncaught exception in main thread!" << std::endl; @@ -70,20 +69,19 @@ void android_main(android_app *app) * ToDo: this doesn't work as expected, there's a workaround for it right now */ extern "C" { -JNIEXPORT void JNICALL Java_net_minetest_minetest_GameActivity_putMessageBoxResult( - JNIEnv *env, jclass thiz, jstring text) -{ - errorstream << "Java_net_minetest_minetest_GameActivity_putMessageBoxResult got: " - << std::string((const char *)env->GetStringChars(text, nullptr)) - << std::endl; -} + JNIEXPORT void JNICALL Java_net_minetest_minetest_GameActivity_putMessageBoxResult( + JNIEnv *env, jclass thiz, jstring text) + { + errorstream << + "Java_net_minetest_minetest_GameActivity_putMessageBoxResult got: " << + std::string((const char*) env->GetStringChars(text, nullptr)) << std::endl; + } } -namespace porting -{ +namespace porting { android_app *app_global; -JNIEnv *jnienv; -jclass nativeActivity; +JNIEnv *jnienv; +jclass nativeActivity; jclass findClass(const std::string &classname) { @@ -94,12 +92,12 @@ jclass findClass(const std::string &classname) jmethodID getClassLoader = jnienv->GetMethodID( nativeactivity, "getClassLoader", "()Ljava/lang/ClassLoader;"); jobject cls = jnienv->CallObjectMethod( - app_global->activity->clazz, getClassLoader); + app_global->activity->clazz, getClassLoader); jclass classLoader = jnienv->FindClass("java/lang/ClassLoader"); jmethodID findClass = jnienv->GetMethodID(classLoader, "loadClass", - "(Ljava/lang/String;)Ljava/lang/Class;"); + "(Ljava/lang/String;)Ljava/lang/Class;"); jstring strClassName = jnienv->NewStringUTF(classname.c_str()); - return (jclass)jnienv->CallObjectMethod(cls, findClass, strClassName); + return (jclass) jnienv->CallObjectMethod(cls, findClass, strClassName); } void initAndroid() @@ -118,14 +116,14 @@ void initAndroid() nativeActivity = findClass("net/minetest/minetest/GameActivity"); if (nativeActivity == nullptr) - errorstream << "porting::initAndroid unable to find java native activity " - "class" - << std::endl; + errorstream << + "porting::initAndroid unable to find java native activity class" << + std::endl; #ifdef GPROF // in the start-up code - __android_log_print( - ANDROID_LOG_ERROR, PROJECT_NAME_C, "Initializing GPROF profiler"); + __android_log_print(ANDROID_LOG_ERROR, PROJECT_NAME_C, + "Initializing GPROF profiler"); monstartup("libMinetest.so"); #endif } @@ -173,7 +171,7 @@ static std::string getAndroidPath( ob_file = jnienv->CallStaticObjectMethod(cls, mt_getter); // Call getAbsolutePath - auto js_path = (jstring)jnienv->CallObjectMethod(ob_file, mt_getAbsPath); + auto js_path = (jstring) jnienv->CallObjectMethod(ob_file, mt_getAbsPath); return javaStringToUTF8(js_path); } @@ -185,15 +183,15 @@ void initializePathsAndroid() // Get File class jclass cls_File = jnienv->FindClass("java/io/File"); // Get getAbsolutePath method - jmethodID mt_getAbsPath = jnienv->GetMethodID( - cls_File, "getAbsolutePath", "()Ljava/lang/String;"); - std::string path_storage = getAndroidPath( - cls_Env, nullptr, mt_getAbsPath, "getExternalStorageDirectory"); - - path_user = path_storage + DIR_DELIM + PROJECT_NAME_C; - path_share = path_storage + DIR_DELIM + PROJECT_NAME_C; - path_cache = getAndroidPath(nativeActivity, app_global->activity->clazz, - mt_getAbsPath, "getCacheDir"); + jmethodID mt_getAbsPath = jnienv->GetMethodID(cls_File, + "getAbsolutePath", "()Ljava/lang/String;"); + std::string path_storage = getAndroidPath(cls_Env, nullptr, + mt_getAbsPath, "getExternalStorageDirectory"); + + path_user = path_storage + DIR_DELIM + PROJECT_NAME_C; + path_share = path_storage + DIR_DELIM + PROJECT_NAME_C; + path_cache = getAndroidPath(nativeActivity, + app_global->activity->clazz, mt_getAbsPath, "getCacheDir"); migrateCachePath(); } @@ -201,27 +199,27 @@ void showInputDialog(const std::string &acceptButton, const std::string &hint, const std::string ¤t, int editType) { jmethodID showdialog = jnienv->GetMethodID(nativeActivity, "showDialog", - "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V"); + "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V"); - FATAL_ERROR_IF(showdialog == nullptr, "porting::showInputDialog unable to find " - "java show dialog method"); + FATAL_ERROR_IF(showdialog == nullptr, + "porting::showInputDialog unable to find java show dialog method"); jstring jacceptButton = jnienv->NewStringUTF(acceptButton.c_str()); - jstring jhint = jnienv->NewStringUTF(hint.c_str()); - jstring jcurrent = jnienv->NewStringUTF(current.c_str()); - jint jeditType = editType; + jstring jhint = jnienv->NewStringUTF(hint.c_str()); + jstring jcurrent = jnienv->NewStringUTF(current.c_str()); + jint jeditType = editType; - jnienv->CallVoidMethod(app_global->activity->clazz, showdialog, jacceptButton, - jhint, jcurrent, jeditType); + jnienv->CallVoidMethod(app_global->activity->clazz, showdialog, + jacceptButton, jhint, jcurrent, jeditType); } void openURLAndroid(const std::string &url) { - jmethodID url_open = jnienv->GetMethodID( - nativeActivity, "openURL", "(Ljava/lang/String;)V"); + jmethodID url_open = jnienv->GetMethodID(nativeActivity, "openURL", + "(Ljava/lang/String;)V"); FATAL_ERROR_IF(url_open == nullptr, - "porting::openURLAndroid unable to find java openURL method"); + "porting::openURLAndroid unable to find java openURL method"); jstring jurl = jnienv->NewStringUTF(url.c_str()); jnienv->CallVoidMethod(app_global->activity->clazz, url_open, jurl); @@ -229,29 +227,29 @@ void openURLAndroid(const std::string &url) int getInputDialogState() { - jmethodID dialogstate = - jnienv->GetMethodID(nativeActivity, "getDialogState", "()I"); + jmethodID dialogstate = jnienv->GetMethodID(nativeActivity, + "getDialogState", "()I"); - FATAL_ERROR_IF(dialogstate == nullptr, "porting::getInputDialogState unable to " - "find java dialog state method"); + FATAL_ERROR_IF(dialogstate == nullptr, + "porting::getInputDialogState unable to find java dialog state method"); return jnienv->CallIntMethod(app_global->activity->clazz, dialogstate); } std::string getInputDialogValue() { - jmethodID dialogvalue = jnienv->GetMethodID( - nativeActivity, "getDialogValue", "()Ljava/lang/String;"); + jmethodID dialogvalue = jnienv->GetMethodID(nativeActivity, + "getDialogValue", "()Ljava/lang/String;"); - FATAL_ERROR_IF(dialogvalue == nullptr, "porting::getInputDialogValue unable to " - "find java dialog value method"); + FATAL_ERROR_IF(dialogvalue == nullptr, + "porting::getInputDialogValue unable to find java dialog value method"); - jobject result = jnienv->CallObjectMethod( - app_global->activity->clazz, dialogvalue); + jobject result = jnienv->CallObjectMethod(app_global->activity->clazz, + dialogvalue); - const char *javachars = jnienv->GetStringUTFChars((jstring)result, nullptr); + const char *javachars = jnienv->GetStringUTFChars((jstring) result, nullptr); std::string text(javachars); - jnienv->ReleaseStringUTFChars((jstring)result, javachars); + jnienv->ReleaseStringUTFChars((jstring) result, javachars); return text; } @@ -263,11 +261,11 @@ float getDisplayDensity() static float value = 0; if (firstrun) { - jmethodID getDensity = - jnienv->GetMethodID(nativeActivity, "getDensity", "()F"); + jmethodID getDensity = jnienv->GetMethodID(nativeActivity, + "getDensity", "()F"); - FATAL_ERROR_IF(getDensity == nullptr, "porting::getDisplayDensity unable " - "to find java getDensity method"); + FATAL_ERROR_IF(getDensity == nullptr, + "porting::getDisplayDensity unable to find java getDensity method"); value = jnienv->CallFloatMethod(app_global->activity->clazz, getDensity); firstrun = false; @@ -281,25 +279,23 @@ v2u32 getDisplaySize() static v2u32 retval; if (firstrun) { - jmethodID getDisplayWidth = jnienv->GetMethodID( - nativeActivity, "getDisplayWidth", "()I"); + jmethodID getDisplayWidth = jnienv->GetMethodID(nativeActivity, + "getDisplayWidth", "()I"); FATAL_ERROR_IF(getDisplayWidth == nullptr, - "porting::getDisplayWidth unable to find java " - "getDisplayWidth method"); + "porting::getDisplayWidth unable to find java getDisplayWidth method"); - retval.X = jnienv->CallIntMethod( - app_global->activity->clazz, getDisplayWidth); + retval.X = jnienv->CallIntMethod(app_global->activity->clazz, + getDisplayWidth); - jmethodID getDisplayHeight = jnienv->GetMethodID( - nativeActivity, "getDisplayHeight", "()I"); + jmethodID getDisplayHeight = jnienv->GetMethodID(nativeActivity, + "getDisplayHeight", "()I"); FATAL_ERROR_IF(getDisplayHeight == nullptr, - "porting::getDisplayHeight unable to find java " - "getDisplayHeight method"); + "porting::getDisplayHeight unable to find java getDisplayHeight method"); - retval.Y = jnienv->CallIntMethod( - app_global->activity->clazz, getDisplayHeight); + retval.Y = jnienv->CallIntMethod(app_global->activity->clazz, + getDisplayHeight); firstrun = false; } |