vlc | branch: master | Rafaël Carré <[email protected]> | Fri Jan 20 18:35:23 2012 -0500| [a43414d06f78d2a6e7d5c87ae612c32b69bc6d19] | committer: Rafaël Carré
logger: support android > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a43414d06f78d2a6e7d5c87ae612c32b69bc6d19 --- modules/misc/Modules.am | 5 ++++ modules/misc/logger.c | 48 +++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/modules/misc/Modules.am b/modules/misc/Modules.am index 4697942..37d4ba2 100644 --- a/modules/misc/Modules.am +++ b/modules/misc/Modules.am @@ -44,6 +44,11 @@ libmce_plugin_la_DEPENDENCIES = EXTRA_LTLIBRARIES += libmce_plugin.la libvlc_LTLIBRARIES += $(LTLIBmce) +liblogger_plugin_la_LIBADD = $(AM_LIBADD) +if HAVE_ANDROID +liblogger_plugin_la_LIBADD += -llog +endif + libvlc_LTLIBRARIES += \ libaudioscrobbler_plugin.la \ liblogger_plugin.la diff --git a/modules/misc/logger.c b/modules/misc/logger.c index 7f7ed6c..9927357 100644 --- a/modules/misc/logger.c +++ b/modules/misc/logger.c @@ -38,6 +38,10 @@ #include <stdarg.h> #include <assert.h> +#ifdef __ANDROID__ +# include <android/log.h> +#endif + #define MODE_TEXT 0 #define MODE_HTML 1 #define MODE_SYSLOG 2 @@ -95,6 +99,9 @@ static void HtmlPrint(void *, int, const msg_item_t *, const char *, va_list); static void SyslogPrint(void *, int, const msg_item_t *, const char *, va_list); #endif +#ifdef __ANDROID__ +static void AndroidPrint(void *, int, const msg_item_t *, const char *, va_list); +#endif /***************************************************************************** * Module descriptor @@ -103,11 +110,17 @@ static const char *const mode_list[] = { "text", "html" #ifdef HAVE_SYSLOG_H ,"syslog" #endif +#ifdef __ANDROID__ +,"android" +#endif }; static const char *const mode_list_text[] = { N_("Text"), "HTML" #ifdef HAVE_SYSLOG_H , "syslog" #endif +#ifdef __ANDROID__ +,"android" +#endif }; #define LOGMODE_TEXT N_("Log format") @@ -117,8 +130,9 @@ static const char *const mode_list_text[] = { N_("Text"), "HTML" #else #define LOGMODE_LONGTEXT N_("Specify the log format. Available choices are " \ - "\"text\" (default), \"html\", and \"syslog\" (special mode to send to " \ - "syslog instead of file.") + "\"text\" (default), \"html\", \"syslog\" (special mode to send to " \ + "syslog instead of file), and \"android\" (special mode to send to " \ + "android logging facility).") #define SYSLOG_FACILITY_TEXT N_("Syslog facility") #define SYSLOG_FACILITY_LONGTEXT N_("Select the syslog facility where logs " \ @@ -212,6 +226,10 @@ static int Open( vlc_object_t *p_this ) else if( !strcmp( mode, "syslog" ) ) cb = SyslogPrint; #endif +#ifdef __ANDROID__ + else if( !strcmp( mode, "android" ) ) + cb = AndroidPrint; +#endif else if( strcmp( mode, "text" ) ) msg_Warn( p_intf, "invalid log mode `%s', using `text'", mode ); free( mode ); @@ -254,6 +272,9 @@ static int Open( vlc_object_t *p_this ) } else #endif +#ifdef __ANDROID__ + if( cb != AndroidPrint ) +#endif { char *psz_file = var_InheritString( p_intf, "logfile" ); if( !psz_file ) @@ -338,6 +359,29 @@ static const char ppsz_type[4][9] = { " debug", }; +#ifdef __ANDROID__ +static const android_LogPriority prioritytype[4] = { + ANDROID_LOG_INFO, + ANDROID_LOG_ERROR, + ANDROID_LOG_WARN, + ANDROID_LOG_DEBUG +}; + +static void AndroidPrint( void *opaque, int type, const msg_item_t *item, + const char *fmt, va_list ap ) +{ + (void)item; + intf_thread_t *p_intf = opaque; + + if( IgnoreMessage( p_intf, type ) ) + return; + + int canc = vlc_savecancel(); + __android_log_vprint(prioritytype[type], "vlc", fmt, ap); + vlc_restorecancel( canc ); +} +#endif + static void TextPrint( void *opaque, int type, const msg_item_t *item, const char *fmt, va_list ap ) { _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
