Proper OSC remote control implementation, allowed on standalones

Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
falkTX 2023-07-27 14:01:02 +02:00
parent 0ad791dee0
commit 3d44fb9d79
No known key found for this signature in database
GPG key ID: CDBAA37ABC74FBA0
5 changed files with 192 additions and 34 deletions

View file

@ -87,6 +87,7 @@ void openBrowser(const std::string& url);
# define CARDINAL_INIT_OSC_THREAD
#endif
typedef void* lo_server;
typedef void* lo_server_thread;
START_NAMESPACE_DISTRHO
@ -97,10 +98,6 @@ struct CardinalPluginContext;
struct Initializer
{
#ifdef CARDINAL_INIT_OSC_THREAD
lo_server_thread oscServerThread = nullptr;
CardinalBasePlugin* remotePluginInstance = nullptr;
#endif
std::string templatePath;
std::string factoryTemplatePath;
bool shouldSaveSettings = false;
@ -108,6 +105,18 @@ struct Initializer
Initializer(const CardinalBasePlugin* plugin, const CardinalBaseUI* ui);
~Initializer();
void loadSettings(bool isRealInstance);
#ifdef HAVE_LIBLO
lo_server oscServer = nullptr;
#ifdef CARDINAL_INIT_OSC_THREAD
lo_server_thread oscServerThread = nullptr;
#endif
CardinalBasePlugin* remotePluginInstance = nullptr;
bool startRemoteServer(const char* port);
void stopRemoteServer();
void stepRemoteServer();
#endif
};
#ifndef HEADLESS