Linux Audio

Check our new training course

Loading...
v4.17
  1// SPDX-License-Identifier: GPL-2.0
  2#include <pthread.h>
  3#include <dlfcn.h>
  4
  5#include "../util/cache.h"
  6#include "../util/debug.h"
  7#include "../util/hist.h"
  8#include "../util/util.h"
  9
 10pthread_mutex_t ui__lock = PTHREAD_MUTEX_INITIALIZER;
 11void *perf_gtk_handle;
 12int use_browser = -1;
 13
 14#define PERF_GTK_DSO "libperf-gtk.so"
 15
 16#ifdef HAVE_GTK2_SUPPORT
 17
 18static int setup_gtk_browser(void)
 19{
 20	int (*perf_ui_init)(void);
 21
 22	if (perf_gtk_handle)
 23		return 0;
 24
 25	perf_gtk_handle = dlopen(PERF_GTK_DSO, RTLD_LAZY);
 26	if (perf_gtk_handle == NULL) {
 27		char buf[PATH_MAX];
 28		scnprintf(buf, sizeof(buf), "%s/%s", LIBDIR, PERF_GTK_DSO);
 29		perf_gtk_handle = dlopen(buf, RTLD_LAZY);
 30	}
 31	if (perf_gtk_handle == NULL)
 32		return -1;
 33
 34	perf_ui_init = dlsym(perf_gtk_handle, "perf_gtk__init");
 35	if (perf_ui_init == NULL)
 36		goto out_close;
 37
 38	if (perf_ui_init() == 0)
 39		return 0;
 40
 41out_close:
 42	dlclose(perf_gtk_handle);
 43	return -1;
 44}
 45
 46static void exit_gtk_browser(bool wait_for_ok)
 47{
 48	void (*perf_ui_exit)(bool);
 49
 50	if (perf_gtk_handle == NULL)
 51		return;
 52
 53	perf_ui_exit = dlsym(perf_gtk_handle, "perf_gtk__exit");
 54	if (perf_ui_exit == NULL)
 55		goto out_close;
 56
 57	perf_ui_exit(wait_for_ok);
 58
 59out_close:
 60	dlclose(perf_gtk_handle);
 61
 62	perf_gtk_handle = NULL;
 63}
 64#else
 65static inline int setup_gtk_browser(void) { return -1; }
 66static inline void exit_gtk_browser(bool wait_for_ok __maybe_unused) {}
 67#endif
 68
 69int stdio__config_color(const struct option *opt __maybe_unused,
 70			const char *mode, int unset __maybe_unused)
 71{
 72	perf_use_color_default = perf_config_colorbool("color.ui", mode, -1);
 73	return 0;
 74}
 75
 76void setup_browser(bool fallback_to_pager)
 77{
 78	if (use_browser < 2 && (!isatty(1) || dump_trace))
 79		use_browser = 0;
 80
 81	/* default to TUI */
 82	if (use_browser < 0)
 83		use_browser = 1;
 84
 85	switch (use_browser) {
 86	case 2:
 87		if (setup_gtk_browser() == 0)
 88			break;
 89		printf("GTK browser requested but could not find %s\n",
 90		       PERF_GTK_DSO);
 91		sleep(1);
 92		/* fall through */
 93	case 1:
 94		use_browser = 1;
 95		if (ui__init() == 0)
 96			break;
 97		/* fall through */
 98	default:
 99		use_browser = 0;
100		if (fallback_to_pager)
101			setup_pager();
102		break;
103	}
104}
105
106void exit_browser(bool wait_for_ok)
107{
108	switch (use_browser) {
109	case 2:
110		exit_gtk_browser(wait_for_ok);
111		break;
112
113	case 1:
114		ui__exit(wait_for_ok);
115		break;
116
117	default:
118		break;
119	}
120}
v3.5.6
 1#include "../cache.h"
 2#include "../debug.h"
 
 3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 4
 5void setup_browser(bool fallback_to_pager)
 6{
 7	if (!isatty(1) || dump_trace)
 8		use_browser = 0;
 9
10	/* default to TUI */
11	if (use_browser < 0)
12		use_browser = 1;
13
14	switch (use_browser) {
15	case 2:
16		if (perf_gtk__init() == 0)
17			break;
 
 
 
18		/* fall through */
19	case 1:
20		use_browser = 1;
21		if (ui__init() == 0)
22			break;
23		/* fall through */
24	default:
25		use_browser = 0;
26		if (fallback_to_pager)
27			setup_pager();
28		break;
29	}
30}
31
32void exit_browser(bool wait_for_ok)
33{
34	switch (use_browser) {
35	case 2:
36		perf_gtk__exit(wait_for_ok);
37		break;
38
39	case 1:
40		ui__exit(wait_for_ok);
41		break;
42
43	default:
44		break;
45	}
46}