android: use Android logging utilities.
authorDaniel Charles <daniel.charles@intel.com>
Thu, 2 Aug 2012 17:30:44 +0000 (10:30 -0700)
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>
Tue, 7 Aug 2012 14:18:37 +0000 (16:18 +0200)
Log functions available are now Android compatible and log statements
will show on user space android logging system.

Defined a LOG_TAG and make it available for all versions of Android.

Signed-off-by: Daniel Charles <daniel.charles@intel.com>
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
va/Android.mk
va/sysdeps.h
va/va.c

index d0ea4fd..e94c4b0 100755 (executable)
@@ -27,6 +27,11 @@ LOCAL_PATH:= $(call my-dir)
 
 LIBVA_DRIVERS_PATH = /system/lib
 
+# Version set to Android Jelly Bean
+ALOG_VERSION_REQ := 4.1
+ALOG_VERSION := $(filter $(ALOG_VERSION_REQ),$(firstword $(sort $(PLATFORM_VERSION) \
+                                   $(ALOG_VERSION_REQ))))
+
 include $(CLEAR_VARS)
 
 #LIBVA_MINOR_VERSION := 31
@@ -41,6 +46,13 @@ LOCAL_CFLAGS += \
        -DANDROID \
        -DVA_DRIVERS_PATH="\"$(LIBVA_DRIVERS_PATH)\""
 
+# Android Jelly Bean defined ALOGx, older versions use LOGx
+ifeq ($(ALOG_VERSION), $(ALOG_VERSION_REQ))
+LOCAL_CFLAGS += -DANDROID_ALOG
+else
+LOCAL_CFLAGS += -DANDROID_LOG
+endif
+
 LOCAL_C_INCLUDES += \
        $(TARGET_OUT_HEADERS)/libva \
        $(LOCAL_PATH)/x11 \
index 77db28a..730735b 100644 (file)
 # define Bool  int
 # define True  1
 # define False 0
+
+/* Android logging utilities */
+# define LOG_TAG "lib-va"
+# include <utils/Log.h>
+
+# ifdef ANDROID_ALOG
+#  define va_log_error(buffer)  do { ALOGE("%s", buffer); } while (0)
+#  define va_log_info(buffer)   do { ALOGI("%s", buffer); } while (0)
+# elif ANDROID_LOG
+#  define va_log_error(buffer)  do { LOGE("%s", buffer); } while (0)
+#  define va_log_info(buffer)   do { LOGI("%s", buffer); } while (0)
+# endif
+#endif
+
+#ifndef va_log_error
+#define va_log_error(buffer) do {                       \
+        fprintf(stderr, "libva error: %s", buffer);     \
+    } while (0)
+#endif
+
+#ifndef va_log_info
+#define va_log_info(buffer) do {                        \
+        fprintf(stderr, "libva info: %s", buffer);      \
+    } while (0)
 #endif
 
 #if defined __GNUC__ && defined HAVE_GNUC_VISIBILITY_ATTRIBUTE
diff --git a/va/va.c b/va/va.c
index 01a1994..6e8fada 100644 (file)
--- a/va/va.c
+++ b/va/va.c
@@ -105,22 +105,52 @@ int vaDisplayIsValid(VADisplay dpy)
 
 void va_errorMessage(const char *msg, ...)
 {
+    char buf[512], *dynbuf;
     va_list args;
+    int n, len;
 
-    fprintf(stderr, "libva error: ");
     va_start(args, msg);
-    vfprintf(stderr, msg, args);
+    len = vsnprintf(buf, sizeof(buf), msg, args);
     va_end(args);
+
+    if (len >= (int)sizeof(buf)) {
+        dynbuf = malloc(len + 1);
+        if (!dynbuf)
+            return;
+        va_start(args, msg);
+        n = vsnprintf(dynbuf, len + 1, msg, args);
+        va_end(args);
+        if (n == len)
+            va_log_error(dynbuf);
+        free(dynbuf);
+    }
+    else if (len > 0)
+        va_log_error(buf);
 }
 
 void va_infoMessage(const char *msg, ...)
 {
+    char buf[512], *dynbuf;
     va_list args;
+    int n, len;
 
-    fprintf(stderr, "libva: ");
     va_start(args, msg);
-    vfprintf(stderr, msg, args);
+    len = vsnprintf(buf, sizeof(buf), msg, args);
     va_end(args);
+
+    if (len >= (int)sizeof(buf)) {
+        dynbuf = malloc(len + 1);
+        if (!dynbuf)
+            return;
+        va_start(args, msg);
+        n = vsnprintf(dynbuf, len + 1, msg, args);
+        va_end(args);
+        if (n == len)
+            va_log_info(dynbuf);
+        free(dynbuf);
+    }
+    else if (len > 0)
+        va_log_info(buf);
 }
 
 static bool va_checkVtable(void *ptr, char *function)