summaryrefslogtreecommitdiff
path: root/src/porting_android.cpp
diff options
context:
space:
mode:
authorShadowNinja <shadowninja@minetest.net>2015-10-15 00:23:29 -0400
committerkwolekr <kwolekr@minetest.net>2015-10-15 00:47:43 -0400
commit659922fd30d5ee3d7876b22e4d26b116d1ae2513 (patch)
treef20271499596ebee32ee7adbf2af769f14ad5b3d /src/porting_android.cpp
parent6f2d785d0ff761961912d7e79a7d16c4adf86861 (diff)
downloadminetest-659922fd30d5ee3d7876b22e4d26b116d1ae2513.tar.gz
minetest-659922fd30d5ee3d7876b22e4d26b116d1ae2513.tar.bz2
minetest-659922fd30d5ee3d7876b22e4d26b116d1ae2513.zip
Remove explicit syslog printing for uncaught exceptions on Android
All log operations are now added to the syslog implicitly. Also, pass along mutable string to argument vector for main().
Diffstat (limited to 'src/porting_android.cpp')
-rw-r--r--src/porting_android.cpp35
1 files changed, 17 insertions, 18 deletions
diff --git a/src/porting_android.cpp b/src/porting_android.cpp
index 06cc929dd..c7e28cc9a 100644
--- a/src/porting_android.cpp
+++ b/src/porting_android.cpp
@@ -21,13 +21,17 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#error This file may only be compiled for android!
#endif
+#include "util/numeric.h"
#include "porting.h"
#include "porting_android.h"
#include "threading/thread.h"
#include "config.h"
#include "filesys.h"
#include "log.h"
+
#include <sstream>
+#include <exception>
+#include <stdlib.h>
#ifdef GPROF
#include "prof.h"
@@ -40,28 +44,23 @@ void android_main(android_app *app)
int retval = 0;
porting::app_global = app;
- Thread::setName("MainThread");
+ Thread::setName("Main");
try {
app_dummy();
- char *argv[] = {(char*) "minetest"};
- main(sizeof(argv) / sizeof(argv[0]), argv);
- } catch (BaseException &e) {
- std::stringstream msg;
- msg << "Exception handled by main: " << e.what();
- const char *message = msg.str().c_str();
- __android_log_print(ANDROID_LOG_ERROR, PROJECT_NAME, "%s", message);
- errorstream << msg << std::endl;
+ char *argv[] = {strdup(PROJECT_NAME), NULL};
+ main(ARRLEN(argv) - 1, argv);
+ free(argv[0]);
+ } catch (std::exception &e) {
+ errorstream << "Uncaught exception in main thread: " << e.what() << std::endl;
retval = -1;
} catch (...) {
- __android_log_print(ANDROID_LOG_ERROR, PROJECT_NAME,
- "An unknown exception occured!");
errorstream << "Uncaught exception in main thread!" << std::endl;
retval = -1;
}
porting::cleanupAndroid();
- errorstream << "Shutting down." << std::endl;
+ infostream << "Shutting down." << std::endl;
exit(retval);
}
@@ -125,7 +124,7 @@ void initAndroid()
JavaVM *jvm = app_global->activity->vm;
JavaVMAttachArgs lJavaVMAttachArgs;
lJavaVMAttachArgs.version = JNI_VERSION_1_6;
- lJavaVMAttachArgs.name = "MinetestNativeThread";
+ lJavaVMAttachArgs.name = PROJECT_NAME_C "NativeThread";
lJavaVMAttachArgs.group = NULL;
#ifdef NDEBUG
// This is a ugly hack as arm v7a non debuggable builds crash without this
@@ -146,7 +145,7 @@ void initAndroid()
#ifdef GPROF
/* in the start-up code */
- __android_log_print(ANDROID_LOG_ERROR, PROJECT_NAME,
+ __android_log_print(ANDROID_LOG_ERROR, PROJECT_NAME_C,
"Initializing GPROF profiler");
monstartup("libminetest.so");
#endif
@@ -186,8 +185,8 @@ void setExternalStorageDir(JNIEnv* lJNIEnv)
lJNIEnv->ReleaseStringUTFChars(StringPath, externalPath);
path_storage = userPath;
- path_user = userPath + DIR_DELIM + PROJECT_NAME;
- path_share = userPath + DIR_DELIM + PROJECT_NAME;
+ path_user = userPath + DIR_DELIM + PROJECT_NAME_C;
+ path_share = userPath + DIR_DELIM + PROJECT_NAME_C;
}
void showInputDialog(const std::string& acceptButton, const std::string& hint,
@@ -240,7 +239,7 @@ std::string getInputDialogValue()
return text;
}
-#if not defined(SERVER)
+#ifndef SERVER
float getDisplayDensity()
{
static bool firstrun = true;
@@ -290,5 +289,5 @@ v2u32 getDisplaySize()
}
return retval;
}
-#endif //SERVER
+#endif // ndef SERVER
}