changeset 15985:6dc5dc83a61b

Add a whimpy ui op to the debug API that returns TRUE if debugging is turned on in the UI. This allows the core to avoid having a call to g_strdup_vprintf() for each debug message when debugging is turned off. The change should provide a very very small speed improvement, since we tend to print a lot of debug output.
author Mark Doliner <mark@kingant.net>
date Tue, 03 Apr 2007 06:26:20 +0000
parents 20c0ab6ea008
children 0315b014741b
files finch/gntdebug.c libpurple/debug.c libpurple/debug.h pidgin/gtkdebug.c
diffstat 4 files changed, 19 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/finch/gntdebug.c	Mon Apr 02 00:38:21 2007 +0000
+++ b/finch/gntdebug.c	Tue Apr 03 06:26:20 2007 +0000
@@ -106,9 +106,16 @@
 	}
 }
 
+static gboolean
+finch_debug_is_enabled(PurpleDebugLevel level, const char *category)
+{
+	return debug.window && !debug.paused;
+}
+
 static PurpleDebugUiOps uiops =
 {
 	finch_debug_print,
+	finch_debug_is_enabled
 };
 
 PurpleDebugUiOps *finch_debug_get_ui_ops()
--- a/libpurple/debug.c	Mon Apr 02 00:38:21 2007 +0000
+++ b/libpurple/debug.c	Tue Apr 03 06:26:20 2007 +0000
@@ -53,7 +53,8 @@
 
 	ops = purple_debug_get_ui_ops();
 
-	if (!debug_enabled && ((ops == NULL) || (ops->print == NULL)))
+	if (!debug_enabled && ((ops == NULL) || (ops->print == NULL) ||
+			(ops->is_enabled && !ops->is_enabled(level, category))))
 		return;
 
 	arg_s = g_strdup_vprintf(format, args);
--- a/libpurple/debug.h	Mon Apr 02 00:38:21 2007 +0000
+++ b/libpurple/debug.h	Tue Apr 03 06:26:20 2007 +0000
@@ -49,6 +49,8 @@
 {
 	void (*print)(PurpleDebugLevel level, const char *category,
 				  const char *arg_s);
+	gboolean (*is_enabled)(PurpleDebugLevel level,
+			const char *category);
 } PurpleDebugUiOps;
 
 #ifdef __cplusplus
--- a/pidgin/gtkdebug.c	Mon Apr 02 00:38:21 2007 +0000
+++ b/pidgin/gtkdebug.c	Tue Apr 03 06:26:20 2007 +0000
@@ -1104,9 +1104,17 @@
 	g_free(s);
 }
 
+static gboolean
+pidgin_debug_is_enabled(PurpleDebugLevel level, const char *category)
+{
+	return (purple_prefs_get_bool("/purple/gtk/debug/enabled") &&
+			debug_win != NULL);
+}
+
 static PurpleDebugUiOps ops =
 {
 	pidgin_debug_print,
+	pidgin_debug_is_enabled
 };
 
 PurpleDebugUiOps *