aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt <srostedt@redhat.com>2009-12-29 18:25:04 -0500
committerSteven Rostedt <rostedt@goodmis.org>2009-12-29 18:25:04 -0500
commitd4c933761708232329bd255b51748a05a3222ec3 (patch)
tree1e6c595c1c84994e3f30b315f77243980e250016
parentc2fe7bb90488951ec0cce2d60d3ea03acf70ff06 (diff)
trace-graph: Return generic widget for graph
In order to add another column to store the information of a bar (like CPU, or TASK) we need to have more than one widget and control the scrollwindow. This patch places the scrollwindow inside the management of the graph code, and returns a hbox to the caller. Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r--kernel-shark.c23
-rw-r--r--trace-graph-main.c22
-rw-r--r--trace-graph.c23
-rw-r--r--trace-graph.h12
4 files changed, 41 insertions, 39 deletions
diff --git a/kernel-shark.c b/kernel-shark.c
index 0d72459..6e1c206 100644
--- a/kernel-shark.c
+++ b/kernel-shark.c
@@ -169,7 +169,7 @@ void kernel_shark(int argc, char **argv)
169 GtkWidget *menu_item; 169 GtkWidget *menu_item;
170 GtkWidget *sub_item; 170 GtkWidget *sub_item;
171 GtkWidget *scrollwin; 171 GtkWidget *scrollwin;
172 GtkWidget *draw; 172 GtkWidget *widget;
173 GtkWidget *label; 173 GtkWidget *label;
174 GtkWidget *spin; 174 GtkWidget *spin;
175 int c; 175 int c;
@@ -303,26 +303,15 @@ void kernel_shark(int argc, char **argv)
303 gtk_widget_show(vpaned); 303 gtk_widget_show(vpaned);
304 gtk_paned_set_position(GTK_PANED(vpaned), TRACE_HEIGHT / 2); 304 gtk_paned_set_position(GTK_PANED(vpaned), TRACE_HEIGHT / 2);
305 305
306 /* --- Scroll Window --- */
307 scrollwin = gtk_scrolled_window_new(NULL, NULL);
308 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin),
309 GTK_POLICY_AUTOMATIC,
310 GTK_POLICY_AUTOMATIC);
311 gtk_paned_add1(GTK_PANED(vpaned), scrollwin);
312 gtk_widget_show(scrollwin);
313 306
314 /* --- Set up Drawing --- */ 307 /* --- Set up Graph --- */
315 308
316 info->graph_cbs.select = ks_graph_select; 309 info->graph_cbs.select = ks_graph_select;
317 310
318 info->ginfo = trace_graph_create_with_callbacks(handle, GTK_SCROLLED_WINDOW(scrollwin), 311 info->ginfo = trace_graph_create_with_callbacks(handle, &info->graph_cbs);
319 &info->graph_cbs); 312 widget = trace_graph_get_window(info->ginfo);
320 draw = trace_graph_get_draw(info->ginfo); 313 gtk_paned_add1(GTK_PANED(vpaned), widget);
321 314 gtk_widget_show(widget);
322 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrollwin),
323 draw);
324 gtk_widget_show(draw);
325
326 315
327 316
328 /* --- Tree View Vbox --- */ 317 /* --- Tree View Vbox --- */
diff --git a/trace-graph-main.c b/trace-graph-main.c
index 54194e1..de6bd12 100644
--- a/trace-graph-main.c
+++ b/trace-graph-main.c
@@ -51,8 +51,7 @@ void trace_graph(int argc, char **argv)
51 GtkWidget *menu; 51 GtkWidget *menu;
52 GtkWidget *menu_item; 52 GtkWidget *menu_item;
53 GtkWidget *sub_item; 53 GtkWidget *sub_item;
54 GtkWidget *scrollwin; 54 GtkWidget *widget;
55 GtkWidget *draw;
56 int c; 55 int c;
57 56
58 while ((c = getopt(argc, argv, "hi:")) != -1) { 57 while ((c = getopt(argc, argv, "hi:")) != -1) {
@@ -134,22 +133,13 @@ void trace_graph(int argc, char **argv)
134 gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0); 133 gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE, TRUE, 0);
135 gtk_widget_show(hbox); 134 gtk_widget_show(hbox);
136 135
137 /* --- Scroll Window --- */
138 scrollwin = gtk_scrolled_window_new(NULL, NULL);
139 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin),
140 GTK_POLICY_AUTOMATIC,
141 GTK_POLICY_AUTOMATIC);
142 gtk_box_pack_start(GTK_BOX (hbox), scrollwin, TRUE, TRUE, 0);
143 gtk_widget_show(scrollwin);
144 136
145 /* --- Set up Drawing --- */ 137 /* --- Set up the Graph --- */
146 138
147 ginfo = trace_graph_create(handle, GTK_SCROLLED_WINDOW(scrollwin)); 139 ginfo = trace_graph_create(handle);
148 draw = trace_graph_get_draw(ginfo); 140 widget = trace_graph_get_window(ginfo);
149 141 gtk_box_pack_start(GTK_BOX (hbox), widget, TRUE, TRUE, 0);
150 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrollwin), 142 gtk_widget_show(widget);
151 draw);
152 gtk_widget_show(draw);
153 143
154 144
155 /********************************************** 145 /**********************************************
diff --git a/trace-graph.c b/trace-graph.c
index 1f0fedd..b003ab4 100644
--- a/trace-graph.c
+++ b/trace-graph.c
@@ -1227,7 +1227,7 @@ destroy_event(GtkWidget *widget, gpointer data)
1227 1227
1228 1228
1229struct graph_info * 1229struct graph_info *
1230trace_graph_create_with_callbacks(struct tracecmd_input *handle, GtkScrolledWindow *scrollwin, 1230trace_graph_create_with_callbacks(struct tracecmd_input *handle,
1231 struct graph_callbacks *cbs) 1231 struct graph_callbacks *cbs)
1232{ 1232{
1233 struct graph_info *ginfo; 1233 struct graph_info *ginfo;
@@ -1247,8 +1247,19 @@ trace_graph_create_with_callbacks(struct tracecmd_input *handle, GtkScrolledWind
1247 ginfo->start_time = -1ULL; 1247 ginfo->start_time = -1ULL;
1248 ginfo->end_time = 0; 1248 ginfo->end_time = 0;
1249 1249
1250 ginfo->widget = gtk_hbox_new(FALSE, 0);
1251 gtk_widget_show(ginfo->widget);
1252
1253 ginfo->scrollwin = gtk_scrolled_window_new(NULL, NULL);
1254 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ginfo->scrollwin),
1255 GTK_POLICY_AUTOMATIC,
1256 GTK_POLICY_AUTOMATIC);
1257 gtk_widget_show(ginfo->scrollwin);
1258
1259 gtk_box_pack_start(GTK_BOX (ginfo->widget), ginfo->scrollwin, TRUE, TRUE, 0);
1260
1250 ginfo->draw_height = CPU_SPACE(ginfo->cpus); 1261 ginfo->draw_height = CPU_SPACE(ginfo->cpus);
1251 ginfo->vadj = gtk_scrolled_window_get_hadjustment(scrollwin); 1262 ginfo->vadj = gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(ginfo->scrollwin));
1252 1263
1253 gtk_signal_connect(GTK_OBJECT(ginfo->vadj), "value_changed", 1264 gtk_signal_connect(GTK_OBJECT(ginfo->vadj), "value_changed",
1254 (GtkSignalFunc) value_changed, ginfo); 1265 (GtkSignalFunc) value_changed, ginfo);
@@ -1303,11 +1314,15 @@ trace_graph_create_with_callbacks(struct tracecmd_input *handle, GtkScrolledWind
1303 | GDK_POINTER_MOTION_HINT_MASK); 1314 | GDK_POINTER_MOTION_HINT_MASK);
1304 1315
1305 1316
1317 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(ginfo->scrollwin),
1318 ginfo->draw);
1319 gtk_widget_show(ginfo->draw);
1320
1306 return ginfo; 1321 return ginfo;
1307} 1322}
1308 1323
1309struct graph_info * 1324struct graph_info *
1310trace_graph_create(struct tracecmd_input *handle, GtkScrolledWindow *scrollwin) 1325trace_graph_create(struct tracecmd_input *handle)
1311{ 1326{
1312 return trace_graph_create_with_callbacks(handle, scrollwin, NULL); 1327 return trace_graph_create_with_callbacks(handle, NULL);
1313} 1328}
diff --git a/trace-graph.h b/trace-graph.h
index d3e7e5c..d1b6c6f 100644
--- a/trace-graph.h
+++ b/trace-graph.h
@@ -15,6 +15,9 @@ struct graph_info {
15 struct tracecmd_input *handle; 15 struct tracecmd_input *handle;
16 struct pevent *pevent; 16 struct pevent *pevent;
17 gint cpus; 17 gint cpus;
18 GtkWidget *widget; /* Box to hold graph */
19 GtkWidget *scrollwin; /* graph scroll window */
20 GtkWidget *info; /* info window */
18 GtkWidget *draw; 21 GtkWidget *draw;
19 GdkPixmap *curr_pixmap; /* pixmap backstore */ 22 GdkPixmap *curr_pixmap; /* pixmap backstore */
20 GtkAdjustment *vadj; /* scrollwindow vert adjust */ 23 GtkAdjustment *vadj; /* scrollwindow vert adjust */
@@ -57,9 +60,9 @@ struct graph_info {
57 60
58 61
59struct graph_info * 62struct graph_info *
60trace_graph_create(struct tracecmd_input *handle, GtkScrolledWindow *scrollwin); 63trace_graph_create(struct tracecmd_input *handle);
61struct graph_info * 64struct graph_info *
62trace_graph_create_with_callbacks(struct tracecmd_input *handle, GtkScrolledWindow *scrollwin, 65trace_graph_create_with_callbacks(struct tracecmd_input *handle,
63 struct graph_callbacks *cbs); 66 struct graph_callbacks *cbs);
64void trace_graph_select_by_time(struct graph_info *ginfo, guint64 time); 67void trace_graph_select_by_time(struct graph_info *ginfo, guint64 time);
65 68
@@ -73,4 +76,9 @@ static inline struct graph_callbacks *trace_graph_get_callbacks(struct graph_inf
73 return ginfo->callbacks; 76 return ginfo->callbacks;
74} 77}
75 78
79static inline GtkWidget *trace_graph_get_window(struct graph_info *ginfo)
80{
81 return ginfo->widget;
82}
83
76#endif /* _TRACE_GRAPH_H */ 84#endif /* _TRACE_GRAPH_H */