Fix:Core:Correct layering of android surfaces
[navit-package] / navit / debug.c
index 9b3edaa..05fd753 100644 (file)
 #include <time.h>
 #include <sys/time.h>
 #include <glib.h>
+#include "config.h"
 #include "file.h"
 #include "item.h"
 #include "debug.h"
 
+#ifdef HAVE_API_ANDROID
+#include <android/log.h>
+#endif
+
 #ifdef DEBUG_WIN32_CE_MESSAGEBOX
 #include <windows.h>
 #include <windowsx.h>
@@ -77,12 +82,12 @@ debug_init(const char *program_name)
 static void
 debug_update_level(gpointer key, gpointer value, gpointer user_data)
 {
-       if (debug_level < (int) value)
-               debug_level=(int) value;
+       if (debug_level < GPOINTER_TO_INT(value))
+               debug_level = GPOINTER_TO_INT(value);
 }
 
 void
-debug_level_set(const char *name, int level)
+debug_level_set(const char *name, gint level)
 {
        if (!strcmp(name, "segv")) {
                segv_level=level;
@@ -94,7 +99,7 @@ debug_level_set(const char *name, int level)
                timestamp_prefix=level;
        } else {
                debug_level=0;
-               g_hash_table_insert(debug_hash, g_strdup(name), (gpointer) level);
+               g_hash_table_insert(debug_hash, g_strdup(name), GINT_TO_POINTER(level));
                g_hash_table_foreach(debug_hash, debug_update_level, NULL);
        }
 }
@@ -117,7 +122,7 @@ debug_level_get(const char *name)
 {
        if (!debug_hash)
                return 0;
-       return (int)(g_hash_table_lookup(debug_hash, name));
+       return GPOINTER_TO_INT(g_hash_table_lookup(debug_hash, name));
 }
 
 static void debug_timestamp(FILE *fp)
@@ -147,7 +152,24 @@ debug_vprintf(int level, const char *module, const int mlen, const char *functio
 
        sprintf(buffer, "%s:%s", module, function);
        if (debug_level_get(module) >= level || debug_level_get(buffer) >= level) {
-#ifndef DEBUG_WIN32_CE_MESSAGEBOX
+#if defined(DEBUG_WIN32_CE_MESSAGEBOX) || defined(HAVE_API_ANDROID)
+               char xbuffer[4096];
+               wchar_t muni[4096];
+               int len=0;
+               if (prefix) {
+                       strcpy(xbuffer,buffer);
+                       len=strlen(buffer);
+                       xbuffer[len++]=':';
+               }
+               vsprintf(xbuffer+len,fmt,ap);
+#endif
+#ifdef DEBUG_WIN32_CE_MESSAGEBOX
+               mbstowcs(muni, xbuffer, strlen(xbuffer)+1);
+               MessageBoxW(NULL, muni, TEXT("Navit - Error"), MB_APPLMODAL|MB_OK|MB_ICONERROR);
+#else
+#ifdef HAVE_API_ANDROID
+               __android_log_print(ANDROID_LOG_ERROR,"navit", "%s", xbuffer);
+#else
                if (! fp)
                        fp = stderr;
                if (timestamp_prefix)
@@ -156,18 +178,7 @@ debug_vprintf(int level, const char *module, const int mlen, const char *functio
                        fprintf(fp,"%s:",buffer);
                vfprintf(fp,fmt, ap);
                fflush(fp);
-#else
-       wchar_t muni[4096];
-       char xbuffer[4096];
-       int len=0;
-       if (prefix) {
-               strcpy(xbuffer,buffer);
-               len=strlen(buffer);
-               xbuffer[len++]=':';
-       }
-       vsprintf(xbuffer+len,fmt,ap);
-       mbstowcs(muni, xbuffer, strlen(xbuffer)+1);
-       MessageBoxW(NULL, muni, TEXT("Navit - Error"), MB_APPLMODAL|MB_OK|MB_ICONERROR);
+#endif
 #endif
        }
 }