diff options
-rw-r--r-- | trace-capture.c | 137 |
1 files changed, 42 insertions, 95 deletions
diff --git a/trace-capture.c b/trace-capture.c index 8ce13c7..c3cb269 100644 --- a/trace-capture.c +++ b/trace-capture.c | |||
@@ -47,7 +47,7 @@ | |||
47 | 47 | ||
48 | #define PLUGIN_NONE "NONE" | 48 | #define PLUGIN_NONE "NONE" |
49 | 49 | ||
50 | #define DIALOG_WIDTH 320 | 50 | #define DIALOG_WIDTH 620 |
51 | #define DIALOG_HEIGHT 600 | 51 | #define DIALOG_HEIGHT 600 |
52 | 52 | ||
53 | struct trace_capture { | 53 | struct trace_capture { |
@@ -58,7 +58,6 @@ struct trace_capture { | |||
58 | GtkWidget *file_entry; | 58 | GtkWidget *file_entry; |
59 | GtkWidget *output_text; | 59 | GtkWidget *output_text; |
60 | GtkTextBuffer *output_buffer; | 60 | GtkTextBuffer *output_buffer; |
61 | GtkWidget *output_dialog; | ||
62 | GtkWidget *event_view; | 61 | GtkWidget *event_view; |
63 | GtkWidget *plugin_combo; | 62 | GtkWidget *plugin_combo; |
64 | GtkWidget *settings_combo; | 63 | GtkWidget *settings_combo; |
@@ -290,93 +289,6 @@ static int is_latency(char *plugin) | |||
290 | strcmp(plugin, "preemptirqsoff") == 0; | 289 | strcmp(plugin, "preemptirqsoff") == 0; |
291 | } | 290 | } |
292 | 291 | ||
293 | static void close_command_display(struct trace_capture *cap) | ||
294 | { | ||
295 | gtk_widget_destroy(cap->output_dialog); | ||
296 | cap->output_dialog = NULL; | ||
297 | cap->stop_dialog = NULL; | ||
298 | } | ||
299 | |||
300 | static void display_command_close(GtkWidget *widget, gint id, gpointer data) | ||
301 | { | ||
302 | struct trace_capture *cap = data; | ||
303 | |||
304 | close_command_display(cap); | ||
305 | } | ||
306 | |||
307 | static void display_command_destroy(GtkWidget *widget, gpointer data) | ||
308 | { | ||
309 | struct trace_capture *cap = data; | ||
310 | |||
311 | close_command_display(cap); | ||
312 | } | ||
313 | |||
314 | static void display_command(struct trace_capture *cap) | ||
315 | { | ||
316 | GtkWidget *dialog; | ||
317 | GtkWidget *scrollwin; | ||
318 | GtkWidget *viewport; | ||
319 | GtkWidget *textview; | ||
320 | GtkTextBuffer *buffer; | ||
321 | const gchar *command; | ||
322 | GString *str; | ||
323 | |||
324 | command = gtk_entry_get_text(GTK_ENTRY(cap->command_entry)); | ||
325 | |||
326 | if (!command || !strlen(command) || is_just_ws(command)) | ||
327 | command = "trace-cmd"; | ||
328 | |||
329 | str = g_string_new(""); | ||
330 | |||
331 | g_string_printf(str, "(%s)", command); | ||
332 | |||
333 | dialog = gtk_dialog_new_with_buttons(str->str, | ||
334 | NULL, | ||
335 | GTK_DIALOG_MODAL, | ||
336 | "Close", | ||
337 | GTK_RESPONSE_ACCEPT, | ||
338 | NULL); | ||
339 | |||
340 | g_string_free(str, TRUE); | ||
341 | |||
342 | g_signal_connect(dialog, "response", | ||
343 | G_CALLBACK(display_command_close), | ||
344 | (gpointer)cap); | ||
345 | |||
346 | gtk_signal_connect (GTK_OBJECT(dialog), "delete_event", | ||
347 | (GtkSignalFunc) display_command_destroy, | ||
348 | (gpointer)cap); | ||
349 | |||
350 | scrollwin = gtk_scrolled_window_new(NULL, NULL); | ||
351 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), | ||
352 | GTK_POLICY_AUTOMATIC, | ||
353 | GTK_POLICY_AUTOMATIC); | ||
354 | gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), scrollwin, TRUE, TRUE, 0); | ||
355 | gtk_widget_show(scrollwin); | ||
356 | |||
357 | viewport = gtk_viewport_new(NULL, NULL); | ||
358 | gtk_widget_show(viewport); | ||
359 | |||
360 | gtk_container_add(GTK_CONTAINER(scrollwin), viewport); | ||
361 | |||
362 | textview = gtk_text_view_new(); | ||
363 | buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview)); | ||
364 | |||
365 | gtk_container_add(GTK_CONTAINER(viewport), textview); | ||
366 | gtk_widget_show(textview); | ||
367 | |||
368 | cap->output_text = textview; | ||
369 | cap->output_buffer = buffer; | ||
370 | |||
371 | gtk_widget_set_size_request(GTK_WIDGET(dialog), | ||
372 | 500, 600); | ||
373 | |||
374 | gtk_widget_show(dialog); | ||
375 | |||
376 | cap->output_dialog = dialog; | ||
377 | |||
378 | } | ||
379 | |||
380 | static int calculate_trace_cmd_words(struct trace_capture *cap) | 292 | static int calculate_trace_cmd_words(struct trace_capture *cap) |
381 | { | 293 | { |
382 | int words = 4; /* trace-cmd record -o file */ | 294 | int words = 4; /* trace-cmd record -o file */ |
@@ -896,8 +808,6 @@ static void execute_button_clicked(struct trace_capture *cap) | |||
896 | return; | 808 | return; |
897 | } | 809 | } |
898 | 810 | ||
899 | display_command(cap); | ||
900 | |||
901 | run_command(cap); | 811 | run_command(cap); |
902 | 812 | ||
903 | dialog = gtk_dialog_new_with_buttons("Stop Execution", | 813 | dialog = gtk_dialog_new_with_buttons("Stop Execution", |
@@ -1332,10 +1242,14 @@ static void tracing_dialog(struct shark_info *info, const char *tracing) | |||
1332 | GtkWidget *label; | 1242 | GtkWidget *label; |
1333 | GtkWidget *entry; | 1243 | GtkWidget *entry; |
1334 | GtkWidget *frame; | 1244 | GtkWidget *frame; |
1245 | GtkWidget *vbox; | ||
1335 | GtkWidget *scrollwin; | 1246 | GtkWidget *scrollwin; |
1336 | GtkWidget *table; | 1247 | GtkWidget *table; |
1337 | GtkWidget *table2; | 1248 | GtkWidget *table2; |
1338 | GtkWidget *event_tree; | 1249 | GtkWidget *event_tree; |
1250 | GtkWidget *viewport; | ||
1251 | GtkWidget *textview; | ||
1252 | GtkTextBuffer *buffer; | ||
1339 | char **plugins; | 1253 | char **plugins; |
1340 | int nr_plugins; | 1254 | int nr_plugins; |
1341 | struct trace_capture cap; | 1255 | struct trace_capture cap; |
@@ -1382,7 +1296,7 @@ static void tracing_dialog(struct shark_info *info, const char *tracing) | |||
1382 | cap.main_dialog = dialog; | 1296 | cap.main_dialog = dialog; |
1383 | 1297 | ||
1384 | /* --- Top Level Hpaned --- */ | 1298 | /* --- Top Level Hpaned --- */ |
1385 | table = gtk_table_new(4, 1, FALSE); | 1299 | table = gtk_table_new(4, 2, FALSE); |
1386 | 1300 | ||
1387 | /* It is possible that no pevents exist. */ | 1301 | /* It is possible that no pevents exist. */ |
1388 | if (pevent) { | 1302 | if (pevent) { |
@@ -1537,6 +1451,42 @@ static void tracing_dialog(struct shark_info *info, const char *tracing) | |||
1537 | G_CALLBACK (file_clicked), | 1451 | G_CALLBACK (file_clicked), |
1538 | (gpointer)&cap); | 1452 | (gpointer)&cap); |
1539 | 1453 | ||
1454 | |||
1455 | /*------------------ Command Output ------------------ */ | ||
1456 | |||
1457 | vbox = gtk_vbox_new(FALSE, 0); | ||
1458 | gtk_table_attach_defaults(GTK_TABLE(table), vbox, 1, 2, 0, 4); | ||
1459 | gtk_widget_show(vbox); | ||
1460 | gtk_widget_set_size_request(GTK_WIDGET(vbox), 300, 0); | ||
1461 | |||
1462 | |||
1463 | label = gtk_label_new("Command Output:"); | ||
1464 | gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); | ||
1465 | gtk_widget_show(label); | ||
1466 | |||
1467 | scrollwin = gtk_scrolled_window_new(NULL, NULL); | ||
1468 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), | ||
1469 | GTK_POLICY_AUTOMATIC, | ||
1470 | GTK_POLICY_AUTOMATIC); | ||
1471 | gtk_box_pack_start(GTK_BOX(vbox), scrollwin, TRUE, TRUE, 0); | ||
1472 | gtk_widget_show(scrollwin); | ||
1473 | |||
1474 | viewport = gtk_viewport_new(NULL, NULL); | ||
1475 | gtk_widget_show(viewport); | ||
1476 | |||
1477 | gtk_container_add(GTK_CONTAINER(scrollwin), viewport); | ||
1478 | |||
1479 | textview = gtk_text_view_new(); | ||
1480 | buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview)); | ||
1481 | |||
1482 | gtk_container_add(GTK_CONTAINER(viewport), textview); | ||
1483 | gtk_widget_show(textview); | ||
1484 | |||
1485 | cap.output_text = textview; | ||
1486 | cap.output_buffer = buffer; | ||
1487 | |||
1488 | |||
1489 | |||
1540 | gtk_widget_set_size_request(GTK_WIDGET(dialog), | 1490 | gtk_widget_set_size_request(GTK_WIDGET(dialog), |
1541 | DIALOG_WIDTH, DIALOG_HEIGHT); | 1491 | DIALOG_WIDTH, DIALOG_HEIGHT); |
1542 | 1492 | ||
@@ -1569,9 +1519,6 @@ static void tracing_dialog(struct shark_info *info, const char *tracing) | |||
1569 | 1519 | ||
1570 | end_capture(&cap); | 1520 | end_capture(&cap); |
1571 | 1521 | ||
1572 | if (cap.output_dialog) | ||
1573 | gtk_widget_destroy(cap.output_dialog); | ||
1574 | |||
1575 | if (pevent) | 1522 | if (pevent) |
1576 | pevent_free(pevent); | 1523 | pevent_free(pevent); |
1577 | 1524 | ||