| @@ -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"; | ||||