25 #ifndef SRC_HEADERS_GX_SYSTEM_H_ 26 #define SRC_HEADERS_GX_SYSTEM_H_ 32 #define FE_DENORM __FE_DENORM 35 unsigned int fpu_status __attribute__ ((__mode__ (__HI__)));
36 __asm__(
"fnstsw %0" :
"=m" (*&fpu_status));
43 int ret = fegetexceptflag(&flagp, FE_ALL_EXCEPT);
54 #ifndef _PMMINTRIN_H_INCLUDED 55 #include <pmmintrin.h> 58 _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON);
59 _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_ON);
62 #ifndef _XMMINTRIN_H_INCLUDED 63 #include <xmmintrin.h> 65 inline void AVOIDDENORMALS() { _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON); }
69 #ifndef _XMMINTRIN_H_INCLUDED 79 #define ASCII_START (48) 80 #define GDK_NO_MOD_MASK (GdkModifierType)0 91 g_atomic_int_set(p, v);
94 inline void atomic_set(
volatile unsigned int* p,
unsigned int v) {
95 g_atomic_int_set(reinterpret_cast<volatile int*>(p), v);
99 return g_atomic_int_get(&p);
103 return g_atomic_int_get(reinterpret_cast<volatile int*>(&p));
111 g_atomic_int_inc(reinterpret_cast<volatile int*>(p));
115 return g_atomic_int_compare_and_exchange(p, oldv, newv);
120 g_atomic_pointer_set(p, v);
125 g_atomic_pointer_set(p, 0);
130 return static_cast<T*
>(g_atomic_pointer_get(&p));
135 return g_atomic_pointer_compare_and_exchange(reinterpret_cast<void* volatile*>(p), oldv, newv);
163 float mean()
const {
return sx / n; }
164 float stddev()
const {
return std::sqrt((n * sx2 - sx * sx) / (n * (n-1))); }
172 sx2 +=
static_cast<float>(diff) * diff;
187 inline float ns2ms(
int n)
const {
return n * 1e-6; }
190 void print_accum(
const Accum& accum,
const char* prefix,
bool verbose,
int total = 0)
const;
191 void print(
bool verbose)
const;
202 unsigned int FPUStatus;
203 unsigned int MXStatus;
205 inline int ts_diff(
const timespec& ts1,
const timespec& ts2);
211 clock_gettime(CLOCK_MONOTONIC, &t1s);
214 clock_gettime(CLOCK_MONOTONIC, &t1e);
221 clock_gettime(CLOCK_MONOTONIC, &t2s);
224 void print(
bool verbose =
false);
228 inline int MeasureThreadsafe::ts_diff(
const timespec& ts1,
const timespec& ts2) {
229 time_t df = ts1.tv_sec - ts2.tv_sec;
230 if (std::abs(df) > 2) {
233 return df * 1000000000 + (ts1.tv_nsec - ts2.tv_nsec);
240 clock_gettime(CLOCK_MONOTONIC, &n);
245 if (!(t1old.tv_sec == 0 && t1old.tv_nsec == 0)) {
280 : skin_list() { set_styledir(styledir); }
281 void set_styledir(
const std::string& styledir);
282 bool is_in_list(
const std::string& name);
283 const Glib::ustring& operator[](
unsigned int idx);
284 unsigned int index(
const Glib::ustring& name);
291 typedef std::list< Glib::RefPtr<Gio::File> >
pathlist;
292 typedef std::list< Glib::RefPtr<Gio::File> >::const_iterator
iterator;
297 void add(
const std::string& d) { dirs.push_back(Gio::File::create_for_path(d)); }
298 bool contains(
const std::string& d)
const;
299 bool find_dir(std::string *d,
const std::string& filename)
const;
300 size_t size() {
return dirs.size(); }
301 iterator
begin() {
return dirs.begin(); }
302 iterator
end() {
return dirs.end(); }
312 symbol_path_map dirs;
316 std::string replace_symbol(
const std::string& dir)
const;
317 std::string replace_path(
const std::string& dir)
const;
318 void add(
char s,
const std::string& d);
330 FileName(
const std::string& filename_,
const Glib::ustring& displayname_)
331 : filename(filename_), displayname(displayname_) {}
337 std::vector<FileName> listing;
350 #define RPCPORT_DEFAULT (-2) 351 #define RPCPORT_NONE (-1) 355 std::string user_dir;
356 std::string user_IR_dir;
357 std::string sys_IR_dir;
367 static void make_ending_slash(std::string& dirpath);
371 std::string
get_user_filepath(
const std::string& basename)
const {
return user_dir + basename; }
383 Glib::OptionGroup main_group;
384 Glib::OptionGroup optgroup_style;
385 Glib::OptionGroup optgroup_jack;
386 Glib::OptionGroup optgroup_overload;
387 Glib::OptionGroup optgroup_file;
388 Glib::OptionGroup optgroup_debug;
389 std::string path_to_program;
392 Glib::ustring jack_input;
393 Glib::ustring jack_midi;
394 Glib::ustring jack_instance;
395 std::vector<Glib::ustring> jack_outputs;
396 Glib::ustring jack_uuid;
397 Glib::ustring jack_uuid2;
399 Glib::ustring jack_servername;
400 std::string load_file;
401 std::string style_dir;
402 std::string factory_dir;
403 std::string pixmap_dir;
404 std::string old_user_dir;
405 std::string preset_dir;
406 std::string pluginpreset_dir;
407 std::string lv2_preset_dir;
408 std::string temp_dir;
409 std::string plugin_dir;
410 std::string loop_dir;
414 Glib::ustring rpcaddress;
418 Glib::ustring setbank;
419 Glib::ustring tuner_tet;
420 Glib::ustring tuner_ref;
421 int sporadic_overload;
422 int idle_thread_timeout;
423 bool convolver_watchdog;
428 std::string get_opskin();
430 void write_ui_vars();
459 void process(
int argc,
char** argv);
466 std::string
get_temp_filepath(
const std::string& basename)
const {
return temp_dir + basename; }
468 return (factory ? factory_dir : pluginpreset_dir) + id; }
470 return (lv2_preset_dir) + id; }
482 const Glib::ustring&
get_rcset()
const {
return rcset; }
504 Glib::ustring get_jack_output(
unsigned int n)
const;
512 assert(BasicOptions::instance);
513 return *BasicOptions::instance;
521 int gx_system_call(
const std::string&,
bool devnull =
false,
bool escape =
false);
522 void strip(Glib::ustring& s);
526 std::stringstream ss;
536 #endif // SRC_HEADERS_GX_SYSTEM_H_
void clear_fpu_status_bits()
const std::string & get_preset_dir() const
unsigned int get_fpu_status_bits()
std::list< Glib::RefPtr< Gio::File > >::const_iterator iterator
std::string get_pluginpreset_filepath(const std::string &id, bool factory) const
unsigned int _MM_GET_EXCEPTION_STATE(void)
std::string get_factory_filepath(const std::string &basename) const
BasicOptions & get_options()
std::string get_online_presets_filename() const
std::string get_builder_filepath(const std::string &basename) const
const std::string & get_sys_IR_dir() const
const Glib::ustring & get_jack_instancename() const
MeasureThreadsafe measure
std::string get_user_ir_filepath(const std::string &basename) const
void _MM_SET_EXCEPTION_STATE(unsigned int __mask)
FileName(const std::string &filename_, const Glib::ustring &displayname_)
void list_subdirs(PathList pl, std::vector< FileName > &dirs)
int gx_system_call(const std::string &, bool devnull=false, bool escape=false)
std::string get_lv2_preset_filepath(const std::string &id) const
void set_rpcaddress(const Glib::ustring &address)
bool system_show_tooltips
const std::string & get_path_to_program() const
bool get_opt_autosave() const
const std::string & get_loop_dir() const
Glib::ustring displayname
std::list< Glib::RefPtr< Gio::File > > pathlist
const Glib::ustring & get_jack_servername() const
int atomic_get(volatile int &p)
std::string decode_filename(const std::string &s)
std::string get_style_filepath(const std::string &basename) const
void add(const std::string &d)
const Glib::ustring & get_rcset() const
int get_idle_thread_timeout() const
const Glib::ustring & get_rpcaddress()
const Glib::ustring & get_jack_input() const
std::string get_plugin_filepath(const std::string &basename) const
bool get_convolver_watchdog() const
const std::string & get_pluginpreset_dir() const
std::string get_pixmap_filepath(const std::string &basename) const
bool get_jack_noconnect() const
const Glib::ustring & get_tuner_ref()
std::string to_string(const T &t)
const PathList & get_IR_pathlist() const
std::string get_ladspa_config_filename() const
std::string get_online_config_filename() const
const Glib::ustring & get_jack_uuid2() const
bool get_opt_save_on_exit() const
const Glib::ustring & get_jack_midi() const
const std::string & get_factory_dir() const
std::vector< FileName > & get_listing()
void set_rpcport(int port)
void atomic_inc(volatile int *p)
const Glib::ustring & get_tuner_tet()
SkinHandling(const std::string &styledir)
const std::string & get_temp_dir() const
bool get_xrun_watchdog() const
const std::string & get_old_user_dir() const
void strip(Glib::ustring &s)
std::map< char, std::string > symbol_path_map
std::string get_temp_filepath(const std::string &basename) const
std::string get_user_filepath(const std::string &basename) const
void atomic_set(volatile int *p, int v)
bool get_liveplaygui() const
const Glib::ustring & get_setbank()
const Glib::ustring & get_jack_uuid() const
bool atomic_compare_and_exchange(volatile int *p, int oldv, int newv)
const std::string & get_lv2_preset_dir() const
bool get_clear_rc() const
const std::string & get_loadfile() const
int get_sporadic_overload() const
std::string get_preset_filepath(const std::string &basename) const
const std::string & get_user_dir() const
void add_time_measurement()
const PrefixConverter & get_IR_prefixmap() const
const std::string & get_plugin_dir() const
std::vector< Glib::ustring > skin_list
const std::string & get_user_IR_dir() const
std::string encode_filename(const std::string &s)