Merge branch 'master' into feature/vst3

This commit is contained in:
Robbert van der Helm
2020-12-11 13:02:49 +01:00
3 changed files with 17 additions and 6 deletions
+2 -2
View File
@@ -35,8 +35,8 @@ Versioning](https://semver.org/spec/v2.0.0.html).
- Fixed an issue where in certain situations Wine processes were left running - Fixed an issue where in certain situations Wine processes were left running
after the host got forcefully terminated before it got a chance to tell the after the host got forcefully terminated before it got a chance to tell the
plugin to shut down. This could happen when using Kontakt in Bitwig, as Bitwig plugin to shut down. This could happen when using Kontakt in Bitwig, as Bitwig
sets a limit on the amount of time a plugin may take to shut down when closing sets a limit on the amount of time a plugin may take to close when closing
Bitwig. Bitwig, and Kontakt can take a while to shut down.
- Fixed a potential crash or freeze when removing a lot of plugins from a plugin - Fixed a potential crash or freeze when removing a lot of plugins from a plugin
group at exactly the same time. group at exactly the same time.
+4 -1
View File
@@ -154,7 +154,10 @@ void GroupBridge::handle_plugin_dispatch(size_t plugin_id) {
if (active_plugins.size() == 0) { if (active_plugins.size() == 0) {
logger.log( logger.log(
"All plugins have exited, shutting down the group process"); "All plugins have exited, shutting down the group process");
main_context.stop();
// main_context.stop();
// FIXME: See the comment in `individual-host.cpp`
TerminateProcess(GetCurrentProcess(), 0);
} }
}); });
} }
+11 -3
View File
@@ -114,9 +114,17 @@ main(int argc, char* argv[]) {
Win32Thread worker_thread([&]() { Win32Thread worker_thread([&]() {
bridge->run(); bridge->run();
// When the sockets get closed, this application should // // When the sockets get closed, this application should
// terminate gracefully // // terminate gracefully
main_context.stop(); // main_context.stop();
// FIXME: So some of the background threads spawned by the plugin may
// get stuck if the host got terminated abruptly. After an entire
// day of debugging I still have no idea whether this is a bug in
// yabridge, Wine, or those plugins, but just killing off this
// process and all of its threads 'fixes' the issue.
//
// https://github.com/robbert-vdh/yabridge/issues/69
TerminateProcess(GetCurrentProcess(), 0);
}); });
std::cout << "Finished initializing '" << plugin_location << "'" std::cout << "Finished initializing '" << plugin_location << "'"