diff options
author | Steven Rostedt <srostedt@redhat.com> | 2010-06-11 14:59:17 -0400 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2010-06-11 14:59:17 -0400 |
commit | 14451def6df920d72a7cfcb89791da285d89e85c (patch) | |
tree | edd39ee76a9e945fe3fc67772bbfec319437853c | |
parent | e5d57574f5c33207a58aba33773f05acca18c88e (diff) |
kernelshark: Add trace_dialog_register_alt_warning()
Add trace_dialog_register_alt_warning() that will allow the tools to
override the warning messages. To hide warnings from poping up,
or to record them elsewhere, this allows to do so.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r-- | trace-dialog.c | 21 | ||||
-rw-r--r-- | trace-gui.h | 1 |
2 files changed, 22 insertions, 0 deletions
diff --git a/trace-dialog.c b/trace-dialog.c index c220a52..3f5e1ea 100644 --- a/trace-dialog.c +++ b/trace-dialog.c | |||
@@ -38,6 +38,8 @@ static GString *statusstr; | |||
38 | 38 | ||
39 | static GtkWidget *parent_window; | 39 | static GtkWidget *parent_window; |
40 | 40 | ||
41 | static void (*alt_warning)(const char *fmt, va_list ap); | ||
42 | |||
41 | void pr_stat(char *fmt, ...) | 43 | void pr_stat(char *fmt, ...) |
42 | { | 44 | { |
43 | GString *str; | 45 | GString *str; |
@@ -79,11 +81,30 @@ void trace_dialog_register_window(GtkWidget *window) | |||
79 | parent_window = window; | 81 | parent_window = window; |
80 | } | 82 | } |
81 | 83 | ||
84 | /** | ||
85 | * trace_dialog_register_alt_warning - register an alternate function for warning() | ||
86 | * @alt: the function to be called instead of warning. | ||
87 | * | ||
88 | * Add an alternate warning function to be called instead of a popup. | ||
89 | * To go back to the popup, simply call this again with NULL. | ||
90 | */ | ||
91 | void trace_dialog_register_alt_warning(void (*alt)(const char *fmt, va_list ap)) | ||
92 | { | ||
93 | alt_warning = alt; | ||
94 | } | ||
95 | |||
82 | void warning(char *fmt, ...) | 96 | void warning(char *fmt, ...) |
83 | { | 97 | { |
84 | GString *str; | 98 | GString *str; |
85 | va_list ap; | 99 | va_list ap; |
86 | 100 | ||
101 | if (alt_warning) { | ||
102 | va_start(ap, fmt); | ||
103 | alt_warning(fmt, ap); | ||
104 | va_end(ap); | ||
105 | return; | ||
106 | } | ||
107 | |||
87 | if (!parent_window) { | 108 | if (!parent_window) { |
88 | va_start(ap, fmt); | 109 | va_start(ap, fmt); |
89 | __vwarning(fmt, ap); | 110 | __vwarning(fmt, ap); |
diff --git a/trace-gui.h b/trace-gui.h index a2d261f..bcf8737 100644 --- a/trace-gui.h +++ b/trace-gui.h | |||
@@ -32,6 +32,7 @@ enum trace_dialog_type { | |||
32 | GtkWidget *trace_status_bar_new(void); | 32 | GtkWidget *trace_status_bar_new(void); |
33 | 33 | ||
34 | void trace_dialog_register_window(GtkWidget *window); | 34 | void trace_dialog_register_window(GtkWidget *window); |
35 | void trace_dialog_register_alt_warning(void (*alt)(const char *fmt, va_list ap)); | ||
35 | 36 | ||
36 | void trace_show_help(GtkWidget *window, const gchar *link, GError **error); | 37 | void trace_show_help(GtkWidget *window, const gchar *link, GError **error); |
37 | 38 | ||