From c013fcea61d37591e6d329dc008570fa318c8d5c Mon Sep 17 00:00:00 2001 From: Deve Date: Tue, 6 Dec 2016 23:13:10 +0100 Subject: [PATCH 1/3] Allow to log messages to file on android --- src/utils/log.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/utils/log.cpp b/src/utils/log.cpp index f77f0bcfc..e5d39167e 100644 --- a/src/utils/log.cpp +++ b/src/utils/log.cpp @@ -140,11 +140,11 @@ void Log::printMessage(int level, const char *component, const char *format, android_LogPriority alp; switch (level) { - // STK is using the levels slightly different from android - // (debug lowest, verbose above it; while android reverses - // this order. So to get the same behaviour (e.g. filter - // out debug message, but still get verbose, we swap - // the order here. + // STK is using the levels slightly different from android + // (debug lowest, verbose above it; while android reverses + // this order. So to get the same behaviour (e.g. filter + // out debug message, but still get verbose, we swap + // the order here. case LL_VERBOSE: alp = ANDROID_LOG_DEBUG; break; case LL_DEBUG: alp = ANDROID_LOG_VERBOSE; break; case LL_INFO: alp = ANDROID_LOG_INFO; break; @@ -153,8 +153,8 @@ void Log::printMessage(int level, const char *component, const char *format, case LL_FATAL: alp = ANDROID_LOG_FATAL; break; default: alp = ANDROID_LOG_FATAL; } - __android_log_vprint(alp, "SuperTuxKart", format, args); -#else +#endif + static const char *names[] = {"debug", "verbose ", "info ", "warn ", "error ", "fatal "}; @@ -178,8 +178,12 @@ void Log::printMessage(int level, const char *component, const char *format, va_copy(out, args); setTerminalColor((LogLevel)level); + #ifdef ANDROID + __android_log_vprint(alp, "SuperTuxKart", format, out); + #else printf("[%s] %s: ", names[level], component); vprintf(format, out); + #endif resetTerminalColor(); // this prints a \n va_end(out); @@ -225,8 +229,6 @@ void Log::printMessage(int level, const char *component, const char *format, MessageBoxA(NULL, message.c_str(), "SuperTuxKart - Fatal error", MB_OK); } #endif - -#endif } // printMessage From 5fad8a135edf8d8b85b56940d4558f10c67ef10a Mon Sep 17 00:00:00 2001 From: Deve Date: Tue, 6 Dec 2016 23:23:12 +0100 Subject: [PATCH 2/3] Destroy egl context on exit --- .../source/Irrlicht/COGLES2Driver.cpp | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/lib/irrlicht/source/Irrlicht/COGLES2Driver.cpp b/lib/irrlicht/source/Irrlicht/COGLES2Driver.cpp index 58f98b85e..d57f564f8 100644 --- a/lib/irrlicht/source/Irrlicht/COGLES2Driver.cpp +++ b/lib/irrlicht/source/Irrlicht/COGLES2Driver.cpp @@ -341,11 +341,25 @@ namespace video delete BridgeCalls; #if defined(EGL_VERSION_1_0) - // HACK : the following is commented because destroying the context crashes under Linux (Thibault 04-feb-10) - /*eglMakeCurrent(EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); - eglDestroyContext(EglDisplay, EglContext); - eglDestroySurface(EglDisplay, EglSurface);*/ - eglTerminate(EglDisplay); + eglMakeCurrent(EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + + if (EglContext != EGL_NO_CONTEXT) + { + eglDestroyContext(EglDisplay, EglContext); + EglContext = EGL_NO_CONTEXT; + } + + if (EglSurface != EGL_NO_SURFACE) + { + eglDestroySurface(EglDisplay, EglSurface); + EglSurface = EGL_NO_SURFACE; + } + + if (EglDisplay != EGL_NO_DISPLAY) + { + eglTerminate(EglDisplay); + EglDisplay = EGL_NO_DISPLAY; + } #if defined(_IRR_COMPILE_WITH_WINDOWS_DEVICE_) if (HDc) From 66f57ada613177ef05e467f40d9b6e8f032a9665 Mon Sep 17 00:00:00 2001 From: Deve Date: Wed, 7 Dec 2016 00:07:22 +0100 Subject: [PATCH 3/3] Fixed a crash when GLES device is re-created --- lib/irrlicht/source/Irrlicht/COGLES2Driver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/irrlicht/source/Irrlicht/COGLES2Driver.cpp b/lib/irrlicht/source/Irrlicht/COGLES2Driver.cpp index d57f564f8..501152864 100644 --- a/lib/irrlicht/source/Irrlicht/COGLES2Driver.cpp +++ b/lib/irrlicht/source/Irrlicht/COGLES2Driver.cpp @@ -341,7 +341,7 @@ namespace video delete BridgeCalls; #if defined(EGL_VERSION_1_0) - eglMakeCurrent(EGL_NO_DISPLAY, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); + eglMakeCurrent(EglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT); if (EglContext != EGL_NO_CONTEXT) {