From d8f2263a7f647ed7f233dec3998def634ff6f64c Mon Sep 17 00:00:00 2001 From: pelya Date: Tue, 7 Jun 2011 17:21:10 +0300 Subject: [PATCH] VCMI crashes when loading libapplication.so, it does not even reach SDL_main, debugging on emulator did not help, so I'm giving up for now on porting it --- project/jni/application/commandergenius | 2 +- .../jni/application/vcmi/vcmi-android.diff | 41 +++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 project/jni/application/vcmi/vcmi-android.diff diff --git a/project/jni/application/commandergenius b/project/jni/application/commandergenius index 72d8bf896..16d2f9676 160000 --- a/project/jni/application/commandergenius +++ b/project/jni/application/commandergenius @@ -1 +1 @@ -Subproject commit 72d8bf89698fe03583ef07c0dc0c854368d3a9d3 +Subproject commit 16d2f967622ed96111d64366168e19de63ec2d62 diff --git a/project/jni/application/vcmi/vcmi-android.diff b/project/jni/application/vcmi/vcmi-android.diff new file mode 100644 index 000000000..10949f9fd --- /dev/null +++ b/project/jni/application/vcmi/vcmi-android.diff @@ -0,0 +1,41 @@ +Index: global.h +=================================================================== +--- global.h (revision 2170) ++++ global.h (working copy) +@@ -10,6 +10,10 @@ + using boost::logic::tribool; + #include + #include ++#ifdef ANDROID ++#include ++#include ++#endif + //filesystem version 3 causes problems (and it's default as of boost 1.46) + #define BOOST_FILESYSTEM_VERSION 2 + typedef boost::uint64_t ui64; //unsigned int 64 bits (8 bytes) +@@ -623,7 +627,25 @@ + CLogger& operator<<(std::ostream& (*fun)(std::ostream&)) + { + if(lvl < CONSOLE_LOGGING_LEVEL) ++ { ++#ifdef ANDROID ++ std::ostringstream os; ++ os << fun; ++ int loglevel = ANDROID_LOG_INFO; ++ switch(lvl) { ++ case 0: loglevel = ANDROID_LOG_INFO; break; ++ case 1: loglevel = ANDROID_LOG_FATAL; break; ++ case 2: loglevel = ANDROID_LOG_ERROR; break; ++ case 3: loglevel = ANDROID_LOG_WARN; break; ++ case 4: loglevel = ANDROID_LOG_INFO; break; ++ case 5: loglevel = ANDROID_LOG_DEBUG; break; ++ case 6: case -2: loglevel = ANDROID_LOG_VERBOSE; break; ++ }; ++ __android_log_print(loglevel, "VCMI", "%s", os.str().c_str()); ++#else + std::cout << fun; ++#endif ++ } + if((lvl < FILE_LOGGING_LEVEL) && logfile) + *logfile << fun; + return *this;