[vlc-devel] [PATCH] Push messages to Android stack
Rémi Denis-Courmont
remi at remlab.net
Fri Jan 20 08:52:23 CET 2012
On Thu, 19 Jan 2012 17:12:32 -0500, Rafaël Carré <funman at videolan.org>
wrote:
> From: Jean-Baptiste Kempf <jb at videolan.org>
>
> Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
> Signed-off-by: Rafaël Carré <funman at videolan.org>
> ---
> configure.ac | 4 ++++
> src/misc/messages.c | 7 +++++++
> src/posix/thread.c | 16 ++++++++++++----
> 3 files changed, 23 insertions(+), 4 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 4f09324..e242138 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -469,6 +469,10 @@ glibc run-time. Alternatively, build with
> --disable-nls.])
> ])
> ])
>
> +if test "${HAVE_ANDROID}" = "1"; then
> + VLC_ADD_LIBS([libvlccore],[-llog])
> +fi
> +
> dnl Plugin compilation stuff
>
> VLC_LIBRARY_SUFFIX
> diff --git a/src/misc/messages.c b/src/misc/messages.c
> index 66bd62e..fa00fed 100644
> --- a/src/misc/messages.c
> +++ b/src/misc/messages.c
> @@ -228,10 +228,17 @@ void vlc_vaLog (vlc_object_t *obj, int type, const
> char *module,
> va_list ap;
>
> va_copy (ap, args);
> +#ifdef __ANDROID__
> +#include <android/log.h>
> + static const android_LogPriority prioritytype[4] =
{ANDROID_LOG_INFO,
> ANDROID_LOG_ERROR,
> + ANDROID_LOG_WARN,
> ANDROID_LOG_DEBUG };
> + __android_log_vprint(prioritytype[type], "vlc", format, ap);
That belongs in the logger.
> +#else
> if (priv->b_color)
> PrintColorMsg (&priv->i_verbose, type, &msg, format, ap);
> else
> PrintMsg (&priv->i_verbose, type, &msg, format, ap);
> +#endif
> va_end (ap);
>
> #ifdef WIN32
> diff --git a/src/posix/thread.c b/src/posix/thread.c
> index 7c4860e..473095a 100644
> --- a/src/posix/thread.c
> +++ b/src/posix/thread.c
> @@ -136,6 +136,14 @@ static struct timespec mtime_to_ts (mtime_t date)
> return ts;
> }
>
> +#if defined(__ANDROID__) && !defined(NDEBUG)
> +# include <android/log.h>
> +# define LOG_TAG "VLC/pthread"
> +# define FATAL(...)
> __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
> +#else
> +# define FATAL(...) fprintf(stderr, __VA_ARGS__)
> +#endif
> +
> /**
> * Print a backtrace to the standard error for debugging purpose.
> */
> @@ -176,8 +184,8 @@ vlc_thread_fatal (const char *action, int error,
> const char *function, const char *file, unsigned
line)
> {
> int canc = vlc_savecancel ();
> - fprintf (stderr, "LibVLC fatal error %s (%d) in thread %lu ",
> - action, error, vlc_threadid ());
> + FATAL ("LibVLC fatal error %s (%d) in thread %lu ",
> + action, error, vlc_threadid ());
> vlc_trace (function, file, line);
>
> /* Sometimes strerror_r() crashes too, so make sure we print an
error
> @@ -185,7 +193,7 @@ vlc_thread_fatal (const char *action, int error,
> #ifdef __GLIBC__
> /* Avoid the strerror_r() prototype brain damage in glibc */
> errno = error;
> - fprintf (stderr, " Error message: %m\n");
> + FATAL (" Error message: %m\n");
> #else
> char buf[1000];
> const char *msg;
> @@ -202,7 +210,7 @@ vlc_thread_fatal (const char *action, int error,
> msg = "unknown (invalid error number)";
> break;
> }
> - fprintf (stderr, " Error message: %s\n", msg);
> + FATAL (" Error message: %s\n", msg);
That does not beling in POSIX threads.
NACK.
--
Rémi Denis-Courmont
http://www.remlab.net/
More information about the vlc-devel
mailing list