diff --git a/libs/ardour/vst_search_path.cc b/libs/ardour/vst_search_path.cc index 6dea1b70a7..c727b9b9ab 100644 --- a/libs/ardour/vst_search_path.cc +++ b/libs/ardour/vst_search_path.cc @@ -42,78 +42,81 @@ vst_search_path () if (ERROR_SUCCESS == RegOpenKeyExA (HKEY_CURRENT_USER, "Software\\VST", 0, KEY_READ, &hKey)) { // Look for the user's VST Registry entry - if (ERROR_SUCCESS == RegQueryValueExA (hKey, "VSTPluginsPath", 0, &dwType, (LPBYTE)tmp, &dwSize)) { + if (ERROR_SUCCESS == RegQueryValueExA (hKey, "VSTPluginsPath", 0, &dwType, (LPBYTE)tmp, &dwSize)) p = g_build_filename (Glib::locale_to_utf8(tmp).c_str(), 0); - } + RegCloseKey (hKey); - - if (p == 0) { - if (ERROR_SUCCESS == RegOpenKeyExA (HKEY_LOCAL_MACHINE, "Software\\VST", 0, KEY_READ, &hKey)) { - // Look for a global VST Registry entry - if (ERROR_SUCCESS == RegQueryValueExA (hKey, "VSTPluginsPath", 0, &dwType, (LPBYTE)tmp, &dwSize)) - p = g_build_filename (Glib::locale_to_utf8(tmp).c_str(), 0); - - RegCloseKey (hKey); - } - - if (p == 0) { - char *pVSTx86 = 0; - char *pProgFilesX86 = PBD::get_win_special_folder (CSIDL_PROGRAM_FILESX86); - - if (pProgFilesX86) { - // Look for a VST folder under C:\Program Files (x86) - if (pVSTx86 = g_build_filename (pProgFilesX86, "Steinberg", "VSTPlugins", 0)) { - if (Glib::file_test (pVSTx86, Glib::FILE_TEST_EXISTS)) - if (Glib::file_test (pVSTx86, Glib::FILE_TEST_IS_DIR)) - p = g_build_filename (pVSTx86, 0); - - g_free (pVSTx86); - } - - g_free (pProgFilesX86); - } + } + + if (p == 0) { + if (ERROR_SUCCESS == RegOpenKeyExA (HKEY_LOCAL_MACHINE, "Software\\VST", 0, KEY_READ, &hKey)) + { + // Look for a global VST Registry entry + if (ERROR_SUCCESS == RegQueryValueExA (hKey, "VSTPluginsPath", 0, &dwType, (LPBYTE)tmp, &dwSize)) + p = g_build_filename (Glib::locale_to_utf8(tmp).c_str(), 0); + + RegCloseKey (hKey); + } + } + + if (p == 0) { + char *pVSTx86 = 0; + char *pProgFilesX86 = PBD::get_win_special_folder (CSIDL_PROGRAM_FILESX86); + + if (pProgFilesX86) { + // Look for a VST folder under C:\Program Files (x86) + if (pVSTx86 = g_build_filename (pProgFilesX86, "Steinberg", "VSTPlugins", 0)) + { + if (Glib::file_test (pVSTx86, Glib::FILE_TEST_EXISTS)) + if (Glib::file_test (pVSTx86, Glib::FILE_TEST_IS_DIR)) + p = g_build_filename (pVSTx86, 0); + + g_free (pVSTx86); } - if (p == 0) { - // Look for a VST folder under C:\Program Files - char *pVST = 0; - char *pProgFiles = PBD::get_win_special_folder (CSIDL_PROGRAM_FILES); - - if (pProgFiles) { - if (pVST = g_build_filename (pProgFiles, "Steinberg", "VSTPlugins", 0)) { - if (Glib::file_test (pVST, Glib::FILE_TEST_EXISTS)) - if (Glib::file_test (pVST, Glib::FILE_TEST_IS_DIR)) - p = g_build_filename (pVST, 0); - g_free (pVST); - } - - g_free (pProgFiles); + g_free (pProgFilesX86); + } + + if (p == 0) { + // Look for a VST folder under C:\Program Files + char *pVST = 0; + char *pProgFiles = PBD::get_win_special_folder (CSIDL_PROGRAM_FILES); + + if (pProgFiles) { + if (pVST = g_build_filename (pProgFiles, "Steinberg", "VSTPlugins", 0)) { + if (Glib::file_test (pVST, Glib::FILE_TEST_EXISTS)) + if (Glib::file_test (pVST, Glib::FILE_TEST_IS_DIR)) + p = g_build_filename (pVST, 0); + + g_free (pVST); } + + g_free (pProgFiles); } } - - if (p == 0) { - // If all else failed, assume the plugins are under "My Documents" - user_home = (char*) g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS); - if (user_home) { - p = g_build_filename (user_home, "Plugins", "VST", 0); - } else { - user_home = g_build_filename(g_get_home_dir(), "My Documents", 0); - if (user_home) - p = g_build_filename (user_home, "Plugins", "VST", 0); - } - } else { - // Concatenate the registry path with the user's personal path + } + + if (p == 0) { + // If all else failed, assume the plugins are under "My Documents" + user_home = (char*) g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS); + if (user_home) { + p = g_build_filename (user_home, "Plugins", "VST", 0); + } else { + user_home = g_build_filename(g_get_home_dir(), "My Documents", 0); + if (user_home) + p = g_build_filename (user_home, "Plugins", "VST", 0); + } + } else { + // Concatenate the registry path with the user's personal path + user_home = (char*) g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS); + + if (user_home) { + p = g_build_path (";", p, g_build_filename(user_home, "Plugins", "VST", 0), 0); + } else { + user_home = g_build_filename(g_get_home_dir(), "My Documents", 0); - user_home = (char*) g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS); - if (user_home) { - p = g_build_path (";", p, g_build_filename(user_home, "Plugins", "VST", 0), 0); - } else { - user_home = g_build_filename(g_get_home_dir(), "My Documents", 0); - if (user_home) { - p = g_build_path (";", p, g_build_filename (user_home, "Plugins", "VST", 0), 0); - } + p = g_build_path (";", p, g_build_filename (user_home, "Plugins", "VST", 0), 0); } } }