mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-06-20 19:03:56 +02:00
Add the Vst3Bridge boilerplate
This commit is contained in:
@@ -18,4 +18,65 @@
|
||||
|
||||
#include <string>
|
||||
|
||||
void justdewit(const std::string& path);
|
||||
#include <public.sdk/source/vst/hosting/module.h>
|
||||
|
||||
#include "../../common/communication/vst3.h"
|
||||
#include "../../common/configuration.h"
|
||||
#include "common.h"
|
||||
|
||||
/**
|
||||
* This hosts a Windows VST3 plugin, forwards messages sent by the Linux VST
|
||||
* plugin and provides host callback function for the plugin to talk back.
|
||||
*/
|
||||
class Vst3Bridge : public HostBridge {
|
||||
public:
|
||||
/**
|
||||
* Initializes the Windows VST3 plugin and set up communication with the
|
||||
* native Linux VST plugin.
|
||||
*
|
||||
* @param main_context The main IO context for this application. Most events
|
||||
* will be dispatched to this context, and the event handling loop should
|
||||
* also be run from this context.
|
||||
* @param plugin_dll_path A (Unix style) path to the VST plugin .dll file to
|
||||
* load.
|
||||
* @param endpoint_base_dir The base directory used for the socket
|
||||
* endpoints. See `Sockets` for more information.
|
||||
*
|
||||
* @note The object has to be constructed from the same thread that calls
|
||||
* `main_context.run()`.
|
||||
*
|
||||
* @throw std::runtime_error Thrown when the VST plugin could not be loaded,
|
||||
* or if communication could not be set up.
|
||||
*/
|
||||
Vst3Bridge(MainContext& main_context,
|
||||
std::string plugin_dll_path,
|
||||
std::string endpoint_base_dir);
|
||||
|
||||
void run() override;
|
||||
|
||||
private:
|
||||
/**
|
||||
* The IO context used for event handling so that all events and window
|
||||
* message handling can be performed from a single thread, even when hosting
|
||||
* multiple plugins.
|
||||
*/
|
||||
MainContext& main_context;
|
||||
|
||||
/**
|
||||
* The configuration for this instance of yabridge based on the `.so` file
|
||||
* that got loaded by the host. This configuration gets loaded on the plugin
|
||||
* side, and then sent over to the Wine host as part of the startup process.
|
||||
*/
|
||||
Configuration config;
|
||||
|
||||
std::shared_ptr<VST3::Hosting::Module> module;
|
||||
|
||||
/**
|
||||
* All sockets used for communicating with this specific plugin.
|
||||
*
|
||||
* NOTE: This is defined **after** the threads on purpose. This way the
|
||||
* sockets will be closed first, and we can then safely wait for the
|
||||
* threads to exit.
|
||||
*/
|
||||
Vst3Sockets<Win32Thread> sockets;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user