1e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include <pthread.h>
2e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
3e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include "../util/cache.h"
4e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include "../util/debug.h"
5e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng#include "../util/hist.h"
6e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
7e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengpthread_mutex_t ui__lock = PTHREAD_MUTEX_INITIALIZER;
8e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
9e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengvoid setup_browser(bool fallback_to_pager)
10e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng{
11e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	if (use_browser < 2 && (!isatty(1) || dump_trace))
12e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		use_browser = 0;
13e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
14e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	/* default to TUI */
15e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	if (use_browser < 0)
16e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		use_browser = 1;
17e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
18e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	switch (use_browser) {
19e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	case 2:
20e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		if (perf_gtk__init() == 0)
21e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng			break;
22e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		/* fall through */
23e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	case 1:
24e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		use_browser = 1;
25e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		if (ui__init() == 0)
26e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng			break;
27e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		/* fall through */
28e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	default:
29e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		use_browser = 0;
30e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		if (fallback_to_pager)
31e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng			setup_pager();
32e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
33e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		perf_hpp__init();
34e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		break;
35e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	}
36e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}
37e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
38e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Chengvoid exit_browser(bool wait_for_ok)
39e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng{
40e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	switch (use_browser) {
41e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	case 2:
42e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		perf_gtk__exit(wait_for_ok);
43e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		break;
44e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
45e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	case 1:
46e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		ui__exit(wait_for_ok);
47e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		break;
48e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng
49e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	default:
50e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng		break;
51e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng	}
52e6e8a0bd7cffcc9ae2e0e75546fb12a19213d4aeBen Cheng}
53