Mercurial > pidgin.yaz
diff src/gtkdebug.c @ 7150:e09020153d85
[gaim-migrate @ 7717]
I fixed this! It doesn't hate me.
How could it?
committer: Tailor Script <tailor@pidgin.im>
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Sat, 04 Oct 2003 23:45:00 +0000 |
parents | 6faeeecab0dc |
children | cada5ddc21f5 |
line wrap: on
line diff
--- a/src/gtkdebug.c Sat Oct 04 23:15:45 2003 +0000 +++ b/src/gtkdebug.c Sat Oct 04 23:45:00 2003 +0000 @@ -47,7 +47,7 @@ static char debug_fg_colors[][8] = { "#000000", /**< All debug levels. */ - "#666666", /**< Blather. */ + "#666666", /**< Misc. */ "#000000", /**< Information. */ "#660000", /**< Warnings. */ "#FF0000", /**< Errors. */ @@ -215,6 +215,57 @@ gaim_gtk_debug_window_hide(); } +static void +gaim_glib_log_handler(const gchar *domain, GLogLevelFlags flags, + const gchar *msg, gpointer user_data) +{ + GaimDebugLevel level; + char *new_msg = NULL; + char *new_domain = NULL; + + if ((flags & G_LOG_LEVEL_MASK) == G_LOG_LEVEL_ERROR) + level = GAIM_DEBUG_ERROR; + else if ((flags & G_LOG_LEVEL_MASK) == G_LOG_LEVEL_CRITICAL) + level = GAIM_DEBUG_FATAL; + else if ((flags & G_LOG_LEVEL_MASK) == G_LOG_LEVEL_WARNING) + level = GAIM_DEBUG_WARNING; + else if ((flags & G_LOG_LEVEL_MASK) == G_LOG_LEVEL_MESSAGE) + level = GAIM_DEBUG_INFO; + else if ((flags & G_LOG_LEVEL_MASK) == G_LOG_LEVEL_INFO) + level = GAIM_DEBUG_INFO; + else if ((flags & G_LOG_LEVEL_MASK) == G_LOG_LEVEL_DEBUG) + level = GAIM_DEBUG_MISC; + else { + gaim_debug(GAIM_DEBUG_WARNING, "gtkdebug", + "Unknown glib logging level in %d\n", flags); + + level = GAIM_DEBUG_MISC; /* This will never happen. */ + } + + if (msg != NULL) + new_msg = gaim_utf8_try_convert(msg); + + if (domain != NULL) + new_domain = gaim_utf8_try_convert(domain); + + if (new_msg != NULL) { + gaim_debug(GAIM_DEBUG_MISC, new_domain ? new_domain : "g_log", + "%s\n", new_msg); + + g_free(new_msg); + } + + if (new_domain != NULL) + g_free(new_domain); +} + +#ifdef _WIN32 +static void +gaim_glib_dummy_print_handler(const gchar *string) +{ +} +#endif + void gaim_gtk_debug_init(void) { @@ -235,6 +286,25 @@ gaim_prefs_connect_callback("/gaim/gtk/debug/enabled", debug_enabled_cb, NULL); + +#define REGISTER_G_LOG_HANDLER(name) \ + g_log_set_handler((name), G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL \ + | G_LOG_FLAG_RECURSION, \ + gaim_glib_log_handler, NULL) + + /* Register the glib/gtk log handlers. */ + REGISTER_G_LOG_HANDLER(NULL); + REGISTER_G_LOG_HANDLER("Gdk"); + REGISTER_G_LOG_HANDLER("Gtk"); + REGISTER_G_LOG_HANDLER("GLib"); + REGISTER_G_LOG_HANDLER("GModule"); + REGISTER_G_LOG_HANDLER("GLib-GObject"); + REGISTER_G_LOG_HANDLER("GThread"); + +#ifdef _WIN32 + if (!opt_debug) + g_set_print_handler(gaim_glib_dummy_print_handler); +#endif } void