Move MIDI filters imprecise handling from 2nd pass to 1st
[ardour.git] / libs / ardour / search_paths.cc
index 50ecac613eb80c9756541c74730851f34bebc03f..96df905eda4315eb2fe1ee2d271f26b905bfded5 100644 (file)
@@ -38,6 +38,7 @@ namespace {
        const char * const backend_env_variable_name = "ARDOUR_BACKEND_PATH";
        const char * const surfaces_env_variable_name = "ARDOUR_SURFACES_PATH";
        const char * const export_env_variable_name = "ARDOUR_EXPORT_FORMATS_PATH";
+       const char * const theme_env_variable_name = "ARDOUR_THEMES_PATH";
        const char * const ladspa_env_variable_name = "LADSPA_PATH";
        const char * const midi_patch_env_variable_name = "ARDOUR_MIDI_PATCH_PATH";
        const char * const panner_env_variable_name = "ARDOUR_PANNER_PATH";
@@ -69,6 +70,16 @@ control_protocol_search_path ()
        return spath;
 }
 
+Searchpath
+theme_search_path ()
+{
+       Searchpath spath (ardour_data_search_path ());
+       spath.add_subdirectory_to_paths (theme_dir_name);
+
+       spath += Searchpath(Glib::getenv(theme_env_variable_name));
+       return spath;
+}
+
 Searchpath
 export_formats_search_path ()
 {
@@ -163,6 +174,15 @@ route_template_search_path ()
        return spath;
 }
 
+Searchpath
+lua_search_path ()
+{
+       Searchpath spath (ardour_data_search_path());
+       spath.add_subdirectory_to_paths(lua_dir_name);
+
+       return spath;
+}
+
 #ifdef PLATFORM_WINDOWS
 
 const char*
@@ -195,6 +215,7 @@ vst_search_path ()
        }
 
        if (p == 0) {
+#if ( (defined __i386__) || (defined _M_IX86) )
                char *pVSTx86 = 0;
                std::string pProgFilesX86 = PBD::get_win_special_folder_path (CSIDL_PROGRAM_FILESX86);
 
@@ -209,22 +230,21 @@ vst_search_path ()
                                g_free (pVSTx86);
                        }
                }
+#else
+               // Look for a VST folder under C:\Program Files
+               char *pVST = 0;
+               std::string pProgFiles = PBD::get_win_special_folder_path (CSIDL_PROGRAM_FILES);
 
-               if (p == 0) {
-                       // Look for a VST folder under C:\Program Files
-                       char *pVST = 0;
-                       std::string pProgFiles = PBD::get_win_special_folder_path (CSIDL_PROGRAM_FILES);
-
-                       if (!pProgFiles.empty()) {
-                               if ((pVST = g_build_filename (pProgFiles.c_str(), "Steinberg", "VSTPlugins", NULL))) {
-                                       if (Glib::file_test (pVST, Glib::FILE_TEST_EXISTS))
-                                               if (Glib::file_test (pVST, Glib::FILE_TEST_IS_DIR))
-                                                       p = g_build_filename (pVST, NULL);
+               if (!pProgFiles.empty()) {
+                       if ((pVST = g_build_filename (pProgFiles.c_str(), "Steinberg", "VSTPlugins", NULL))) {
+                               if (Glib::file_test (pVST, Glib::FILE_TEST_EXISTS))
+                                       if (Glib::file_test (pVST, Glib::FILE_TEST_IS_DIR))
+                                               p = g_build_filename (pVST, NULL);
 
-                                       g_free (pVST);
-                               }
+                               g_free (pVST);
                        }
                }
+#endif
        }
 
        if (p == 0) {