add string_compose argument specializations so that empty std::string and empty C...
[ardour.git] / libs / ardour / globals.cc
index c18d6a9e418f9512726a4c55c55a2d9b8c00ed10..a76fae4feed8feed1974ffef6f8c1b7353bac6bf 100644 (file)
@@ -37,6 +37,9 @@
 #include <errno.h>
 #include <time.h>
 
+#include <glib.h>
+#include <pbd/gstdio_compat.h>
+
 #ifdef PLATFORM_WINDOWS
 #include <windows.h> // for LARGE_INTEGER
 #endif
@@ -61,7 +64,6 @@
 #undef check /* stupid Apple and their un-namespaced, generic Carbon macros */
 #endif 
 
-#include <glibmm/convert.h>
 #include <glibmm/fileutils.h>
 #include <glibmm/miscutils.h>
 
@@ -158,14 +160,21 @@ setup_hardware_optimization (bool try_optimization)
 
        if (try_optimization) {
 
-               FPU fpu;
+               FPU* fpu = FPU::instance();
 
 #if defined (ARCH_X86) && defined (BUILD_SSE_OPTIMIZATIONS)
 
-               if (fpu.has_avx()) {
-
+#ifdef PLATFORM_WINDOWS
+               /* We have AVX-optimized code for Windows */
+               
+               if (fpu->has_avx()) {
+#else                  
+               /* AVX code doesn't compile on Linux yet */
+               
+               if (false) {
+#endif                 
                        info << "Using AVX optimized routines" << endmsg;
-
+                       
                        // AVX SET
                        compute_peak          = x86_sse_avx_compute_peak;
                        find_peaks            = x86_sse_avx_find_peaks;
@@ -176,7 +185,7 @@ setup_hardware_optimization (bool try_optimization)
 
                        generic_mix_functions = false;
 
-               } else if (fpu.has_sse()) {
+               } else if (fpu->has_sse()) {
 
                        info << "Using SSE optimized routines" << endmsg;
 
@@ -579,7 +588,8 @@ ARDOUR::no_auto_connect()
 void
 ARDOUR::setup_fpu ()
 {
-
+       FPU* fpu = FPU::instance ();
+       
        if (getenv ("ARDOUR_RUNNING_UNDER_VALGRIND")) {
                // valgrind doesn't understand this assembler stuff
                // September 10th, 2007
@@ -589,13 +599,8 @@ ARDOUR::setup_fpu ()
 #if defined(ARCH_X86) && defined(USE_XMMINTRIN)
 
        int MXCSR;
-       FPU fpu;
-
-       /* XXX use real code to determine if the processor supports
-          DenormalsAreZero and FlushToZero
-       */
 
-       if (!fpu.has_flush_to_zero() && !fpu.has_denormals_are_zero()) {
+       if (!fpu->has_flush_to_zero() && !fpu->has_denormals_are_zero()) {
                return;
        }
 
@@ -612,21 +617,21 @@ ARDOUR::setup_fpu ()
                break;
 
        case DenormalFTZ:
-               if (fpu.has_flush_to_zero()) {
+               if (fpu->has_flush_to_zero()) {
                        MXCSR |= _MM_FLUSH_ZERO_ON;
                }
                break;
 
        case DenormalDAZ:
                MXCSR &= ~_MM_FLUSH_ZERO_ON;
-               if (fpu.has_denormals_are_zero()) {
+               if (fpu->has_denormals_are_zero()) {
                        MXCSR |= 0x40;
                }
                break;
 
        case DenormalFTZDAZ:
-               if (fpu.has_flush_to_zero()) {
-                       if (fpu.has_denormals_are_zero()) {
+               if (fpu->has_flush_to_zero()) {
+                       if (fpu->has_denormals_are_zero()) {
                                MXCSR |= _MM_FLUSH_ZERO_ON | 0x40;
                        } else {
                                MXCSR |= _MM_FLUSH_ZERO_ON;
@@ -648,13 +653,13 @@ static const bool translate_by_default = true;
 string
 ARDOUR::translation_enable_path ()
 {
-       return Glib::build_filename (user_config_directory(), ".translate");
+        return Glib::build_filename (user_config_directory(), ".translate");
 }
 
 bool
 ARDOUR::translations_are_enabled ()
 {
-       int fd = ::open (Glib::locale_from_utf8 (ARDOUR::translation_enable_path()).c_str(), O_RDONLY);
+       int fd = g_open (ARDOUR::translation_enable_path().c_str(), O_RDONLY, 0444);
 
        if (fd < 0) {
                return translate_by_default;
@@ -676,7 +681,7 @@ bool
 ARDOUR::set_translations_enabled (bool yn)
 {
        string i18n_enabler = ARDOUR::translation_enable_path();
-       int fd = ::open (Glib::locale_from_utf8 (i18n_enabler).c_str(), O_WRONLY|O_CREAT|O_TRUNC, 0644);
+       int fd = g_open (i18n_enabler.c_str(), O_WRONLY|O_CREAT|O_TRUNC, 0644);
 
        if (fd < 0) {
                return false;