@@ -288,36 +288,44 @@ enum OptionsType { | |||||
OPTION_RTAUDIO_DEVICE = 13, | OPTION_RTAUDIO_DEVICE = 13, | ||||
#endif | #endif | ||||
/*! | |||||
* Set path to the backend resource files.\n | |||||
* Default unset. | |||||
* | |||||
* \note Must be set for some internal plugins to work! | |||||
*/ | |||||
OPTION_PATH_RESOURCES = 14, | |||||
#ifndef BUILD_BRIDGE | #ifndef BUILD_BRIDGE | ||||
/*! | /*! | ||||
* Set path to the native plugin bridge executable.\n | * Set path to the native plugin bridge executable.\n | ||||
* Default unset. | * Default unset. | ||||
*/ | */ | ||||
OPTION_PATH_BRIDGE_NATIVE = 14, | |||||
OPTION_PATH_BRIDGE_NATIVE = 15, | |||||
/*! | /*! | ||||
* Set path to the POSIX 32bit plugin bridge executable.\n | * Set path to the POSIX 32bit plugin bridge executable.\n | ||||
* Default unset. | * Default unset. | ||||
*/ | */ | ||||
OPTION_PATH_BRIDGE_POSIX32 = 15, | |||||
OPTION_PATH_BRIDGE_POSIX32 = 16, | |||||
/*! | /*! | ||||
* Set path to the POSIX 64bit plugin bridge executable.\n | * Set path to the POSIX 64bit plugin bridge executable.\n | ||||
* Default unset. | * Default unset. | ||||
*/ | */ | ||||
OPTION_PATH_BRIDGE_POSIX64 = 16, | |||||
OPTION_PATH_BRIDGE_POSIX64 = 17, | |||||
/*! | /*! | ||||
* Set path to the Windows 32bit plugin bridge executable.\n | * Set path to the Windows 32bit plugin bridge executable.\n | ||||
* Default unset. | * Default unset. | ||||
*/ | */ | ||||
OPTION_PATH_BRIDGE_WIN32 = 17, | |||||
OPTION_PATH_BRIDGE_WIN32 = 18, | |||||
/*! | /*! | ||||
* Set path to the Windows 64bit plugin bridge executable.\n | * Set path to the Windows 64bit plugin bridge executable.\n | ||||
* Default unset. | * Default unset. | ||||
*/ | */ | ||||
OPTION_PATH_BRIDGE_WIN64 = 18, | |||||
OPTION_PATH_BRIDGE_WIN64 = 19, | |||||
#endif | #endif | ||||
#ifdef WANT_LV2 | #ifdef WANT_LV2 | ||||
@@ -325,43 +333,43 @@ enum OptionsType { | |||||
* Set path to the LV2 Gtk2 UI bridge executable.\n | * Set path to the LV2 Gtk2 UI bridge executable.\n | ||||
* Default unset. | * Default unset. | ||||
*/ | */ | ||||
OPTION_PATH_BRIDGE_LV2_GTK2 = 19, | |||||
OPTION_PATH_BRIDGE_LV2_GTK2 = 20, | |||||
/*! | /*! | ||||
* Set path to the LV2 Gtk3 UI bridge executable.\n | * Set path to the LV2 Gtk3 UI bridge executable.\n | ||||
* Default unset. | * Default unset. | ||||
*/ | */ | ||||
OPTION_PATH_BRIDGE_LV2_GTK3 = 20, | |||||
OPTION_PATH_BRIDGE_LV2_GTK3 = 21, | |||||
/*! | /*! | ||||
* Set path to the LV2 Qt4 UI bridge executable.\n | * Set path to the LV2 Qt4 UI bridge executable.\n | ||||
* Default unset. | * Default unset. | ||||
*/ | */ | ||||
OPTION_PATH_BRIDGE_LV2_QT4 = 21, | |||||
OPTION_PATH_BRIDGE_LV2_QT4 = 22, | |||||
/*! | /*! | ||||
* Set path to the LV2 Qt5 UI bridge executable.\n | * Set path to the LV2 Qt5 UI bridge executable.\n | ||||
* Default unset. | * Default unset. | ||||
*/ | */ | ||||
OPTION_PATH_BRIDGE_LV2_QT5 = 22, | |||||
OPTION_PATH_BRIDGE_LV2_QT5 = 23, | |||||
/*! | /*! | ||||
* Set path to the LV2 Cocoa UI bridge executable.\n | * Set path to the LV2 Cocoa UI bridge executable.\n | ||||
* Default unset. | * Default unset. | ||||
*/ | */ | ||||
OPTION_PATH_BRIDGE_LV2_COCOA = 23, | |||||
OPTION_PATH_BRIDGE_LV2_COCOA = 24, | |||||
/*! | /*! | ||||
* Set path to the LV2 Windows UI bridge executable.\n | * Set path to the LV2 Windows UI bridge executable.\n | ||||
* Default unset. | * Default unset. | ||||
*/ | */ | ||||
OPTION_PATH_BRIDGE_LV2_WINDOWS = 24, | |||||
OPTION_PATH_BRIDGE_LV2_WINDOWS = 25, | |||||
/*! | /*! | ||||
* Set path to the LV2 X11 UI bridge executable.\n | * Set path to the LV2 X11 UI bridge executable.\n | ||||
* Default unset. | * Default unset. | ||||
*/ | */ | ||||
OPTION_PATH_BRIDGE_LV2_X11 = 25, | |||||
OPTION_PATH_BRIDGE_LV2_X11 = 26, | |||||
#endif | #endif | ||||
#ifdef WANT_VST | #ifdef WANT_VST | ||||
@@ -369,19 +377,19 @@ enum OptionsType { | |||||
* Set path to the VST Cocoa UI bridge executable.\n | * Set path to the VST Cocoa UI bridge executable.\n | ||||
* Default unset. | * Default unset. | ||||
*/ | */ | ||||
OPTION_PATH_BRIDGE_VST_COCOA = 26, | |||||
OPTION_PATH_BRIDGE_VST_COCOA = 27, | |||||
/*! | /*! | ||||
* Set path to the VST HWND UI bridge executable.\n | * Set path to the VST HWND UI bridge executable.\n | ||||
* Default unset. | * Default unset. | ||||
*/ | */ | ||||
OPTION_PATH_BRIDGE_VST_HWND = 27, | |||||
OPTION_PATH_BRIDGE_VST_HWND = 28, | |||||
/*! | /*! | ||||
* Set path to the VST X11 UI bridge executable.\n | * Set path to the VST X11 UI bridge executable.\n | ||||
* Default unset. | * Default unset. | ||||
*/ | */ | ||||
OPTION_PATH_BRIDGE_VST_X11 = 28 | |||||
OPTION_PATH_BRIDGE_VST_X11 = 29 | |||||
#endif | #endif | ||||
}; | }; | ||||
@@ -245,6 +245,8 @@ struct EngineOptions { | |||||
CarlaString rtaudioDevice; | CarlaString rtaudioDevice; | ||||
#endif | #endif | ||||
CarlaString resourceDir; | |||||
#ifndef BUILD_BRIDGE | #ifndef BUILD_BRIDGE | ||||
CarlaString bridge_native; | CarlaString bridge_native; | ||||
CarlaString bridge_posix32; | CarlaString bridge_posix32; | ||||
@@ -149,6 +149,7 @@ typedef struct _TimeInfo { | |||||
typedef struct _HostDescriptor { | typedef struct _HostDescriptor { | ||||
HostHandle handle; | HostHandle handle; | ||||
const char* resource_dir; | |||||
const char* ui_name; | const char* ui_name; | ||||
uint32_t (*get_buffer_size)(HostHandle handle); | uint32_t (*get_buffer_size)(HostHandle handle); | ||||
@@ -1628,6 +1628,10 @@ void CarlaEngine::setOption(const OptionsType option, const int value, const cha | |||||
break; | break; | ||||
#endif | #endif | ||||
case OPTION_PATH_RESOURCES: | |||||
fOptions.resourceDir = valueStr; | |||||
break; | |||||
#ifndef BUILD_BRIDGE | #ifndef BUILD_BRIDGE | ||||
case OPTION_PATH_BRIDGE_NATIVE: | case OPTION_PATH_BRIDGE_NATIVE: | ||||
fOptions.bridge_native = valueStr; | fOptions.bridge_native = valueStr; | ||||
@@ -173,8 +173,10 @@ public: | |||||
carla_zeroStruct< ::MidiEvent>(fMidiEvents, MAX_MIDI_EVENTS*2); | carla_zeroStruct< ::MidiEvent>(fMidiEvents, MAX_MIDI_EVENTS*2); | ||||
fHost.handle = this; | |||||
fHost.ui_name = nullptr; | |||||
fHost.handle = this; | |||||
fHost.resource_dir = carla_strdup((const char*)engine->getOptions().resourceDir); | |||||
fHost.ui_name = nullptr; | |||||
fHost.get_buffer_size = carla_host_get_buffer_size; | fHost.get_buffer_size = carla_host_get_buffer_size; | ||||
fHost.get_sample_rate = carla_host_get_sample_rate; | fHost.get_sample_rate = carla_host_get_sample_rate; | ||||
fHost.get_time_info = carla_host_get_time_info; | fHost.get_time_info = carla_host_get_time_info; | ||||
@@ -224,6 +226,12 @@ public: | |||||
fDescriptor = nullptr; | fDescriptor = nullptr; | ||||
} | } | ||||
if (fHost.resource_dir != nullptr) | |||||
{ | |||||
delete[] fHost.resource_dir; | |||||
fHost.resource_dir = nullptr; | |||||
} | |||||
if (fHost.ui_name != nullptr) | if (fHost.ui_name != nullptr) | ||||
{ | { | ||||
delete[] fHost.ui_name; | delete[] fHost.ui_name; | ||||
@@ -536,6 +536,7 @@ bool carla_engine_init(const char* driverName, const char* clientName) | |||||
standalone.engine->setOption(CarlaBackend::OPTION_RTAUDIO_SAMPLE_RATE, static_cast<int>(standalone.options.rtaudioSampleRate), nullptr); | standalone.engine->setOption(CarlaBackend::OPTION_RTAUDIO_SAMPLE_RATE, static_cast<int>(standalone.options.rtaudioSampleRate), nullptr); | ||||
standalone.engine->setOption(CarlaBackend::OPTION_RTAUDIO_DEVICE, 0, (const char*)standalone.options.rtaudioDevice); | standalone.engine->setOption(CarlaBackend::OPTION_RTAUDIO_DEVICE, 0, (const char*)standalone.options.rtaudioDevice); | ||||
# endif | # endif | ||||
standalone.engine->setOption(CarlaBackend::OPTION_PATH_RESOURCES, 0, (const char*)standalone.options.resourceDir); | |||||
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_NATIVE, 0, (const char*)standalone.options.bridge_native); | standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_NATIVE, 0, (const char*)standalone.options.bridge_native); | ||||
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_POSIX32, 0, (const char*)standalone.options.bridge_posix32); | standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_POSIX32, 0, (const char*)standalone.options.bridge_posix32); | ||||
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_POSIX64, 0, (const char*)standalone.options.bridge_posix64); | standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_POSIX64, 0, (const char*)standalone.options.bridge_posix64); | ||||
@@ -729,6 +730,10 @@ void carla_set_engine_option(CarlaOptionsType option, int value, const char* val | |||||
break; | break; | ||||
#endif | #endif | ||||
case CarlaBackend::OPTION_PATH_RESOURCES: | |||||
standalone.options.resourceDir = valueStr; | |||||
break; | |||||
#ifndef BUILD_BRIDGE | #ifndef BUILD_BRIDGE | ||||
case CarlaBackend::OPTION_PATH_BRIDGE_NATIVE: | case CarlaBackend::OPTION_PATH_BRIDGE_NATIVE: | ||||
standalone.options.bridge_native = valueStr; | standalone.options.bridge_native = valueStr; | ||||
@@ -2317,8 +2317,7 @@ if __name__ == '__main__': | |||||
else: | else: | ||||
Carla.host.set_engine_option(OPTION_PROCESS_NAME, 0, "carla") | Carla.host.set_engine_option(OPTION_PROCESS_NAME, 0, "carla") | ||||
# Change dir to where DLL and resources are | |||||
os.chdir(libPath) | |||||
Carla.host.set_engine_option(OPTION_PATH_RESOURCES, 0, libPath) | |||||
# Set bridge paths | # Set bridge paths | ||||
if carla_bridge_native: | if carla_bridge_native: | ||||
@@ -201,21 +201,22 @@ OPTION_JACK_TIMEMASTER = 10 | |||||
OPTION_RTAUDIO_BUFFER_SIZE = 11 | OPTION_RTAUDIO_BUFFER_SIZE = 11 | ||||
OPTION_RTAUDIO_SAMPLE_RATE = 12 | OPTION_RTAUDIO_SAMPLE_RATE = 12 | ||||
OPTION_RTAUDIO_DEVICE = 13 | OPTION_RTAUDIO_DEVICE = 13 | ||||
OPTION_PATH_BRIDGE_NATIVE = 14 | |||||
OPTION_PATH_BRIDGE_POSIX32 = 15 | |||||
OPTION_PATH_BRIDGE_POSIX64 = 16 | |||||
OPTION_PATH_BRIDGE_WIN32 = 17 | |||||
OPTION_PATH_BRIDGE_WIN64 = 18 | |||||
OPTION_PATH_BRIDGE_LV2_GTK2 = 19 | |||||
OPTION_PATH_BRIDGE_LV2_GTK3 = 20 | |||||
OPTION_PATH_BRIDGE_LV2_QT4 = 21 | |||||
OPTION_PATH_BRIDGE_LV2_QT5 = 22 | |||||
OPTION_PATH_BRIDGE_LV2_COCOA = 23 | |||||
OPTION_PATH_BRIDGE_LV2_WINDOWS = 24 | |||||
OPTION_PATH_BRIDGE_LV2_X11 = 25 | |||||
OPTION_PATH_BRIDGE_VST_COCOA = 26 | |||||
OPTION_PATH_BRIDGE_VST_HWND = 27 | |||||
OPTION_PATH_BRIDGE_VST_X11 = 28 | |||||
OPTION_PATH_RESOURCES = 14 | |||||
OPTION_PATH_BRIDGE_NATIVE = 15 | |||||
OPTION_PATH_BRIDGE_POSIX32 = 16 | |||||
OPTION_PATH_BRIDGE_POSIX64 = 17 | |||||
OPTION_PATH_BRIDGE_WIN32 = 18 | |||||
OPTION_PATH_BRIDGE_WIN64 = 19 | |||||
OPTION_PATH_BRIDGE_LV2_GTK2 = 20 | |||||
OPTION_PATH_BRIDGE_LV2_GTK3 = 21 | |||||
OPTION_PATH_BRIDGE_LV2_QT4 = 22 | |||||
OPTION_PATH_BRIDGE_LV2_QT5 = 23 | |||||
OPTION_PATH_BRIDGE_LV2_COCOA = 24 | |||||
OPTION_PATH_BRIDGE_LV2_WINDOWS = 25 | |||||
OPTION_PATH_BRIDGE_LV2_X11 = 26 | |||||
OPTION_PATH_BRIDGE_VST_COCOA = 27 | |||||
OPTION_PATH_BRIDGE_VST_HWND = 28 | |||||
OPTION_PATH_BRIDGE_VST_X11 = 29 | |||||
# Callback Type | # Callback Type | ||||
CALLBACK_DEBUG = 0 | CALLBACK_DEBUG = 0 | ||||
@@ -232,6 +232,8 @@ const char* OptionsType2Str(const OptionsType& type) | |||||
case OPTION_RTAUDIO_DEVICE: | case OPTION_RTAUDIO_DEVICE: | ||||
return "OPTION_RTAUDIO_DEVICE"; | return "OPTION_RTAUDIO_DEVICE"; | ||||
#endif | #endif | ||||
case OPTION_PATH_RESOURCES: | |||||
return "OPTION_PATH_RESOURCES"; | |||||
#ifndef BUILD_BRIDGE | #ifndef BUILD_BRIDGE | ||||
case OPTION_PATH_BRIDGE_NATIVE: | case OPTION_PATH_BRIDGE_NATIVE: | ||||
return "OPTION_PATH_BRIDGE_NATIVE"; | return "OPTION_PATH_BRIDGE_NATIVE"; | ||||