mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 14:54:56 +01:00
set mingw vamp plugin path
This commit is contained in:
parent
c3847269c2
commit
9034e58b15
1 changed files with 66 additions and 2 deletions
|
|
@ -25,8 +25,10 @@
|
||||||
#include <fontconfig/fontconfig.h>
|
#include <fontconfig/fontconfig.h>
|
||||||
#include <pango/pangoft2.h>
|
#include <pango/pangoft2.h>
|
||||||
#include <pango/pangocairo.h>
|
#include <pango/pangocairo.h>
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <wingdi.h>
|
#include <wingdi.h>
|
||||||
|
#include <shlobj.h> // CSIDL_*
|
||||||
|
|
||||||
#include "ardour/ardour.h"
|
#include "ardour/ardour.h"
|
||||||
#include "ardour/search_paths.h"
|
#include "ardour/search_paths.h"
|
||||||
|
|
@ -34,11 +36,53 @@
|
||||||
|
|
||||||
#include "pbd/file_utils.h"
|
#include "pbd/file_utils.h"
|
||||||
#include "pbd/epa.h"
|
#include "pbd/epa.h"
|
||||||
|
#include "pbd/windows_special_dirs.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace PBD;
|
using namespace PBD;
|
||||||
using namespace ARDOUR;
|
using namespace ARDOUR;
|
||||||
|
|
||||||
|
|
||||||
|
/* query top-level Ardour installation path.
|
||||||
|
* Typically, this will be somehwere like
|
||||||
|
* "C:\Program Files (x86)\Ardour"
|
||||||
|
*/
|
||||||
|
const std::string
|
||||||
|
get_install_path ()
|
||||||
|
{
|
||||||
|
const gchar* pExeRoot = g_win32_get_package_installation_directory_of_module (0);
|
||||||
|
|
||||||
|
if (0 == pExeRoot) {
|
||||||
|
HKEY key;
|
||||||
|
DWORD size = PATH_MAX;
|
||||||
|
char tmp[PATH_MAX+1];
|
||||||
|
if (
|
||||||
|
#ifdef __MINGW64__
|
||||||
|
(ERROR_SUCCESS == RegOpenKeyExA (HKEY_LOCAL_MACHINE, "Software\\Ardour\\ardour3\\w64", 0, KEY_READ, &key))
|
||||||
|
#else
|
||||||
|
(ERROR_SUCCESS == RegOpenKeyExA (HKEY_LOCAL_MACHINE, "Software\\Ardour\\ardour3\\w32", 0, KEY_READ, &key))
|
||||||
|
#endif
|
||||||
|
&&(ERROR_SUCCESS == RegQueryValueExA (key, "Install_Dir", 0, NULL, reinterpret_cast<LPBYTE>(tmp), &size))
|
||||||
|
)
|
||||||
|
{
|
||||||
|
pExeRoot = Glib::locale_to_utf8(tmp).c_str();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (0 == pExeRoot) {
|
||||||
|
const char *program_files = PBD::get_win_special_folder (CSIDL_PROGRAM_FILES);
|
||||||
|
if (program_files) {
|
||||||
|
pExeRoot = g_build_filename(program_files, PROGRAM_NAME, NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pExeRoot && Glib::file_test(pExeRoot, Glib::FILE_TEST_EXISTS|Glib::FILE_TEST_IS_DIR)) {
|
||||||
|
return std::string (pExeRoot);
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
fixup_bundle_environment (int, char* [], const char** localedir)
|
fixup_bundle_environment (int, char* [], const char** localedir)
|
||||||
{
|
{
|
||||||
|
|
@ -50,9 +94,28 @@ fixup_bundle_environment (int, char* [], const char** localedir)
|
||||||
|
|
||||||
// Unset GTK_RC_FILES so that only ardour specific files are loaded
|
// Unset GTK_RC_FILES so that only ardour specific files are loaded
|
||||||
Glib::unsetenv ("GTK_RC_FILES");
|
Glib::unsetenv ("GTK_RC_FILES");
|
||||||
|
|
||||||
|
|
||||||
|
std::string path;
|
||||||
|
const char *cstr;
|
||||||
|
cstr = getenv ("VAMP_PATH");
|
||||||
|
if (cstr) {
|
||||||
|
path = cstr;
|
||||||
|
path += G_SEARCHPATH_SEPARATOR;
|
||||||
|
} else {
|
||||||
|
path = "";
|
||||||
|
}
|
||||||
|
path += Glib::build_filename(get_install_path(), "lib", "ardour3", "vamp", NULL);
|
||||||
|
path += G_SEARCHPATH_SEPARATOR;
|
||||||
|
path += "%ProgramFiles%\\Vamp Plugins"; // default vamp path
|
||||||
|
path += G_SEARCHPATH_SEPARATOR;
|
||||||
|
path += "%COMMONPROGRAMFILES%\\Vamp Plugins";
|
||||||
|
Glib::setenv ("VAMP_PATH", path, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static __cdecl void unload_custom_fonts() {
|
static __cdecl void
|
||||||
|
unload_custom_fonts()
|
||||||
|
{
|
||||||
std::string ardour_mono_file;
|
std::string ardour_mono_file;
|
||||||
if (!find_file (ardour_data_search_path(), "ArdourMono.ttf", ardour_mono_file)) {
|
if (!find_file (ardour_data_search_path(), "ArdourMono.ttf", ardour_mono_file)) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -60,7 +123,8 @@ static __cdecl void unload_custom_fonts() {
|
||||||
RemoveFontResource(ardour_mono_file.c_str());
|
RemoveFontResource(ardour_mono_file.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void load_custom_fonts()
|
void
|
||||||
|
load_custom_fonts()
|
||||||
{
|
{
|
||||||
std::string ardour_mono_file;
|
std::string ardour_mono_file;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue