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