mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-09 20:29:10 +02:00
Allow the module to be properly unloaded
Terminating the host process will cause all sockets to be closed so we can join the threads.
This commit is contained in:
@@ -396,6 +396,8 @@ intptr_t Vst2PluginBridge::dispatch(AEffect* /*plugin*/,
|
|||||||
// been caused by pipes and sockets being closed.
|
// been caused by pipes and sockets being closed.
|
||||||
io_context.stop();
|
io_context.stop();
|
||||||
|
|
||||||
|
// TODO: For consistency with the VST3 version, move the above to
|
||||||
|
// the destructor
|
||||||
delete this;
|
delete this;
|
||||||
|
|
||||||
return return_value;
|
return return_value;
|
||||||
|
|||||||
@@ -83,6 +83,12 @@ Vst3PluginBridge::Vst3PluginBridge()
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Vst3PluginBridge::~Vst3PluginBridge() {
|
||||||
|
// Drop all work make sure all sockets are closed
|
||||||
|
plugin_host->terminate();
|
||||||
|
io_context.stop();
|
||||||
|
}
|
||||||
|
|
||||||
Steinberg::IPluginFactory* Vst3PluginBridge::get_plugin_factory() {
|
Steinberg::IPluginFactory* Vst3PluginBridge::get_plugin_factory() {
|
||||||
// Even though we're working with raw pointers here, we should pretend that
|
// Even though we're working with raw pointers here, we should pretend that
|
||||||
// we're `IPtr<Steinberg::IPluginFactory>` and do the reference counting
|
// we're `IPtr<Steinberg::IPluginFactory>` and do the reference counting
|
||||||
|
|||||||
@@ -55,6 +55,12 @@ class Vst3PluginBridge : PluginBridge<Vst3Sockets<std::jthread>> {
|
|||||||
*/
|
*/
|
||||||
Vst3PluginBridge();
|
Vst3PluginBridge();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Terminate the Wine plugin host process and drop all work when the module
|
||||||
|
* gets unloaded.
|
||||||
|
*/
|
||||||
|
~Vst3PluginBridge();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When the host loads the module it will call `GetPluginFactory()` which
|
* When the host loads the module it will call `GetPluginFactory()` which
|
||||||
* will in turn call this function. The idea is that we return an
|
* will in turn call this function. The idea is that we return an
|
||||||
|
|||||||
Reference in New Issue
Block a user