From 06cee381984bbccc2d5eb0004bd2e62fe3a22cd4 Mon Sep 17 00:00:00 2001 From: lubomyr Date: Sat, 28 Feb 2015 17:58:04 +0000 Subject: [PATCH] glshim: added log output --- project/jni/glshim/Android.mk | 2 +- project/jni/glshim/include/android_debug.h | 69 ++++++++++++++++++++++ project/jni/glshim/src/glx/lookup.c | 6 +- 3 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 project/jni/glshim/include/android_debug.h diff --git a/project/jni/glshim/Android.mk b/project/jni/glshim/Android.mk index ef0cfa613..e2c7e8508 100644 --- a/project/jni/glshim/Android.mk +++ b/project/jni/glshim/Android.mk @@ -41,7 +41,7 @@ LOCAL_SRC_FILES := \ src/glx/lookup.c \ src/glx/streaming.c -LOCAL_CFLAGS += -g -std=c99 -funwind-tables -O3 -DBCMHOST +LOCAL_CFLAGS += -g -std=c99 -funwind-tables -O3 -DBCMHOST -include include/android_debug.h LOCAL_LDLIBS := -ldl -llog -lEGL diff --git a/project/jni/glshim/include/android_debug.h b/project/jni/glshim/include/android_debug.h new file mode 100644 index 000000000..fca4445fd --- /dev/null +++ b/project/jni/glshim/include/android_debug.h @@ -0,0 +1,69 @@ +#ifndef __ANDROID_DEBUG_H__ +#define __ANDROID_DEBUG_H__ + +// Redirect printf() to Android log +// Put this file into CFLAGS: "-include ../android_debug.h" + +#include +#include +#include + +#ifdef __cplusplus +// Include everything beforehand, so we wont' get compiler eerors because of our #define +#include +#include +#include +#include +#include +#include + +namespace std +{ + class android_cout: public ostringstream + { + public: + android_cout() {} + template + android_cout &operator<<(const T &v) + { + *((ostringstream*)this) << v; + if( this->str().find('\n') != ::std::string::npos ) + { + __android_log_print(ANDROID_LOG_INFO, "glshim", "%s", this->str().c_str()); + this->str().clear(); + } + return *this; + } + ~android_cout() + { + __android_log_print(ANDROID_LOG_INFO, "glshim", "%s", this->str().c_str()); + this->str().clear(); + } + }; + static const char * android_endl = "\n"; +} +#define cout android_cout() +#define cerr android_cout() +#define endl android_endl + +#endif + +#define printf(...) __android_log_print(ANDROID_LOG_INFO, "glshim", __VA_ARGS__) + +// Override fprintf(stderr, ...) constructs +static inline int __sdl_logged_fprintf(FILE *stream, const char *format, ...) +{ + int ret = 0; + va_list args; + va_start(args, format); + if( stream == stderr || stream == stdout ) + ret = __android_log_vprint(ANDROID_LOG_INFO, "glshim", format, args); + else + ret = vfprintf(stream, format, args); + va_end(args); + return ret; +} + +#define fprintf(...) __sdl_logged_fprintf(__VA_ARGS__) + +#endif diff --git a/project/jni/glshim/src/glx/lookup.c b/project/jni/glshim/src/glx/lookup.c index ba69a3941..55d0fdabb 100755 --- a/project/jni/glshim/src/glx/lookup.c +++ b/project/jni/glshim/src/glx/lookup.c @@ -1,6 +1,5 @@ #ifdef ANDROID #include "../gl/gl.h" -#include #else #include "glx.h" #endif @@ -445,11 +444,8 @@ void *glXGetProcAddressARB(const char *name) { STUB(glIndexPointerEXT); STUB(glIndexPointer); -#ifdef ANDROID - __android_log_print(ANDROID_LOG_INFO, "glshim","glXGetProcAddress: %s not found.\n", name); -#else printf("glXGetProcAddress: %s not found.\n", name); -#endif + return NULL; }