summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/ardour/ardour/search_paths.h2
-rw-r--r--libs/ardour/ardour/vst_search_path.h8
-rw-r--r--libs/ardour/plugin_manager.cc1
-rw-r--r--libs/ardour/search_paths.cc120
-rw-r--r--libs/ardour/vst_search_path.cc146
5 files changed, 121 insertions, 156 deletions
diff --git a/libs/ardour/ardour/search_paths.h b/libs/ardour/ardour/search_paths.h
index 6de5db3ef0..85ed2cbfd7 100644
--- a/libs/ardour/ardour/search_paths.h
+++ b/libs/ardour/ardour/search_paths.h
@@ -25,6 +25,8 @@
namespace ARDOUR {
+ LIBARDOUR_API const char *vst_search_path ();
+
/**
* return a SearchPath containing directories in which to look for
* backend plugins.
diff --git a/libs/ardour/ardour/vst_search_path.h b/libs/ardour/ardour/vst_search_path.h
deleted file mode 100644
index b220cd0ec2..0000000000
--- a/libs/ardour/ardour/vst_search_path.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef __libardour_vst_search_path_h__
-#define __libardour_vst_search_path_h__
-
-namespace ARDOUR {
- const char *vst_search_path ();
-};
-
-#endif /* __libardour_vst_path_h__ */
diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc
index 456cf42c9a..2db24ed269 100644
--- a/libs/ardour/plugin_manager.cc
+++ b/libs/ardour/plugin_manager.cc
@@ -63,7 +63,6 @@
#include "ardour/rc_configuration.h"
#include "ardour/search_paths.h"
-#include "ardour/vst_search_path.h"
#ifdef LV2_SUPPORT
#include "ardour/lv2_plugin.h"
diff --git a/libs/ardour/search_paths.cc b/libs/ardour/search_paths.cc
index 825a6c52b8..09227f6347 100644
--- a/libs/ardour/search_paths.cc
+++ b/libs/ardour/search_paths.cc
@@ -18,7 +18,9 @@
*/
-#include <glibmm/miscutils.h>
+#include <glib.h>
+#include <glibmm.h>
+#include <string.h>
#include "pbd/pathexpand.h"
@@ -26,6 +28,12 @@
#include "ardour/directory_names.h"
#include "ardour/filesystem_paths.h"
+#ifdef PLATFORM_WINDOWS
+#include <windows.h>
+#include <shlobj.h> // CSIDL_*
+#include "pbd/windows_special_dirs.h"
+#endif
+
namespace {
const char * const backend_env_variable_name = "ARDOUR_BACKEND_PATH";
const char * const surfaces_env_variable_name = "ARDOUR_SURFACES_PATH";
@@ -139,4 +147,114 @@ panner_search_path ()
return spath;
}
+#ifdef PLATFORM_WINDOWS
+
+const char*
+vst_search_path ()
+{
+ DWORD dwType = REG_SZ;
+ HKEY hKey;
+ DWORD dwSize = PATH_MAX;
+ char* p = 0;
+ char* user_home = 0;
+ char tmp[PATH_MAX+1];
+
+ 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))
+ 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) {
+ // 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
+ 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);
+ }
+ }
+ }
+
+ return p;
+}
+
+#else
+
+/* Unix-like. Probably require some OS X specific breakdown if we ever add VST
+ * support on that platform.
+ */
+
+const char *
+vst_search_path ()
+{
+ return "/usr/local/lib/vst:/usr/lib/vst";
+}
+
+#endif // PLATFORM_WINDOWS
+
} // namespace ARDOUR
diff --git a/libs/ardour/vst_search_path.cc b/libs/ardour/vst_search_path.cc
deleted file mode 100644
index c727b9b9ab..0000000000
--- a/libs/ardour/vst_search_path.cc
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- Copyright (C) 2008 John Emmas
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
-
-#include <glib.h>
-#include <glibmm.h>
-#include <string.h>
-
-#include "ardour/vst_search_path.h"
-
-#ifdef PLATFORM_WINDOWS
-
-#include <windows.h>
-#include <shlobj.h> // CSIDL_*
-#include "pbd/windows_special_dirs.h"
-
-namespace ARDOUR {
-
-const char*
-vst_search_path ()
-{
- DWORD dwType = REG_SZ;
- HKEY hKey;
- DWORD dwSize = PATH_MAX;
- char* p = 0;
- char* user_home = 0;
- char tmp[PATH_MAX+1];
-
- 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))
- 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) {
- // 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
- 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);
- }
- }
- }
-
- return p;
-}
-
-} // namespace ARDOUR
-
-#else
-
-/* Unix-like. Probably require some OS X specific breakdown if we ever add VST
- * support on that platform.
- */
-
-namespace ARDOUR {
-
-const char *
-vst_search_path ()
-{
- return "/usr/local/lib/vst:/usr/lib/vst";
-}
-
-} // namespace ARDOUR
-
-#endif /* PLATFORM_WINDOWS */
-