diff options
| author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-08-17 10:57:56 +0400 | 
|---|---|---|
| committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-08-17 11:01:08 +0400 | 
| commit | a22ddff8bedfe33eeb1330bbb7ef1fbe007a42c4 (patch) | |
| tree | 61a2eb7fa62f5af10c2b913ca429e6b068b0eb2d /tools/perf/ui/gtk/browser.c | |
| parent | 20d5a540e55a29daeef12706f9ee73baf5641c16 (diff) | |
| parent | d9875690d9b89a866022ff49e3fcea892345ad92 (diff) | |
| download | linux-a22ddff8bedfe33eeb1330bbb7ef1fbe007a42c4.tar.xz | |
Merge tag 'v3.6-rc2' into drm-intel-next
Backmerge Linux 3.6-rc2 to resolve a few funny conflicts before we put
even more madness on top:
- drivers/gpu/drm/i915/i915_irq.c: Just a spurious WARN removed in
  -fixes, that has been changed in a variable-rename in -next, too.
- drivers/gpu/drm/i915/intel_ringbuffer.c: -next remove scratch_addr
  (since all their users have been extracted in another fucntion),
  -fixes added another user for a hw workaroudn.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'tools/perf/ui/gtk/browser.c')
| -rw-r--r-- | tools/perf/ui/gtk/browser.c | 69 | 
1 files changed, 66 insertions, 3 deletions
diff --git a/tools/perf/ui/gtk/browser.c b/tools/perf/ui/gtk/browser.c index 0656c381a89c..ec12e0b4ded6 100644 --- a/tools/perf/ui/gtk/browser.c +++ b/tools/perf/ui/gtk/browser.c @@ -11,8 +11,8 @@  static void perf_gtk__signal(int sig)  { +	perf_gtk__exit(false);  	psignal(sig, "perf"); -	gtk_main_quit();  }  static void perf_gtk__resize_window(GtkWidget *window) @@ -122,13 +122,59 @@ static void perf_gtk__show_hists(GtkWidget *window, struct hists *hists)  	gtk_container_add(GTK_CONTAINER(window), view);  } +#ifdef HAVE_GTK_INFO_BAR +static GtkWidget *perf_gtk__setup_info_bar(void) +{ +	GtkWidget *info_bar; +	GtkWidget *label; +	GtkWidget *content_area; + +	info_bar = gtk_info_bar_new(); +	gtk_widget_set_no_show_all(info_bar, TRUE); + +	label = gtk_label_new(""); +	gtk_widget_show(label); + +	content_area = gtk_info_bar_get_content_area(GTK_INFO_BAR(info_bar)); +	gtk_container_add(GTK_CONTAINER(content_area), label); + +	gtk_info_bar_add_button(GTK_INFO_BAR(info_bar), GTK_STOCK_OK, +				GTK_RESPONSE_OK); +	g_signal_connect(info_bar, "response", +			 G_CALLBACK(gtk_widget_hide), NULL); + +	pgctx->info_bar = info_bar; +	pgctx->message_label = label; + +	return info_bar; +} +#endif + +static GtkWidget *perf_gtk__setup_statusbar(void) +{ +	GtkWidget *stbar; +	unsigned ctxid; + +	stbar = gtk_statusbar_new(); + +	ctxid = gtk_statusbar_get_context_id(GTK_STATUSBAR(stbar), +					     "perf report"); +	pgctx->statbar = stbar; +	pgctx->statbar_ctx_id = ctxid; + +	return stbar; +} +  int perf_evlist__gtk_browse_hists(struct perf_evlist *evlist,  				  const char *help __used,  				  void (*timer) (void *arg)__used,  				  void *arg __used, int delay_secs __used)  {  	struct perf_evsel *pos; +	GtkWidget *vbox;  	GtkWidget *notebook; +	GtkWidget *info_bar; +	GtkWidget *statbar;  	GtkWidget *window;  	signal(SIGSEGV, perf_gtk__signal); @@ -143,11 +189,17 @@ int perf_evlist__gtk_browse_hists(struct perf_evlist *evlist,  	g_signal_connect(window, "delete_event", gtk_main_quit, NULL); +	pgctx = perf_gtk__activate_context(window); +	if (!pgctx) +		return -1; + +	vbox = gtk_vbox_new(FALSE, 0); +  	notebook = gtk_notebook_new();  	list_for_each_entry(pos, &evlist->entries, node) {  		struct hists *hists = &pos->hists; -		const char *evname = event_name(pos); +		const char *evname = perf_evsel__name(pos);  		GtkWidget *scrolled_window;  		GtkWidget *tab_label; @@ -164,7 +216,16 @@ int perf_evlist__gtk_browse_hists(struct perf_evlist *evlist,  		gtk_notebook_append_page(GTK_NOTEBOOK(notebook), scrolled_window, tab_label);  	} -	gtk_container_add(GTK_CONTAINER(window), notebook); +	gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0); + +	info_bar = perf_gtk__setup_info_bar(); +	if (info_bar) +		gtk_box_pack_start(GTK_BOX(vbox), info_bar, FALSE, FALSE, 0); + +	statbar = perf_gtk__setup_statusbar(); +	gtk_box_pack_start(GTK_BOX(vbox), statbar, FALSE, FALSE, 0); + +	gtk_container_add(GTK_CONTAINER(window), vbox);  	gtk_widget_show_all(window); @@ -174,5 +235,7 @@ int perf_evlist__gtk_browse_hists(struct perf_evlist *evlist,  	gtk_main(); +	perf_gtk__deactivate_context(&pgctx); +  	return 0;  }  | 
