Commit Graph

189 Commits

Author SHA1 Message Date
Robbert van der Helm 6f5dae90a6 Set realtime priorities if available
This significantly reduces the latency with no real drawbacks from what
I've noticed. Wineserver is still run using the normal scheduling
policies because from my testing running that with realtime priority
that can actually increase latencies, although doing so will greatly
reduce the variance in processing time.
2020-07-23 19:57:50 +02:00
Robbert van der Helm 9d33b9989e Align config options in startup message 2020-07-23 18:39:48 +02:00
Robbert van der Helm 967856fc1b Add a configuration option for double embedding
Only plugin that needs this so far is PSPaudioware's E27 (and likely
other PSP plugins with expandable GUIs).
2020-07-23 15:59:00 +02:00
Robbert van der Helm 523f77d334 Use designated initializers for complex structs
This was one of the main reasons why I wanted to switch to C++20, I just
forgot to do it.
2020-07-23 14:12:07 +02:00
Robbert van der Helm cd02ab5fc9 Send the configuration from plugin to Wine host
Next we can add some options for different plugin editor behaviours for #27.
2020-07-22 17:15:55 +02:00
Robbert van der Helm 2e77c03464 Move the configuration object to src/common/ 2020-07-22 13:55:29 +02:00
Robbert van der Helm 6f772ca899 Send the AEffect object over a new control socket
We'll use the same socket to send the configuration data back to the
plugin.
2020-07-22 13:36:29 +02:00
Robbert van der Helm c83680a21a Remove old workaround for rare Ubuntu path issue
This got fixed properly in `get_file_location()`, but this function
still contained an old hack.
2020-07-21 01:04:20 +02:00
Robbert van der Helm 836aefcfbb Verify that the PATH has been set up correctly
When creating copies with yabridgectl. This should at least give an
advance warning that some additional steps are required when first
setting up yabridge.
2020-07-16 16:56:27 +02:00
Robbert van der Helm d86b57681b Distinguish between active group hosts and zombies 2020-06-20 16:58:43 +02:00
Robbert van der Helm 61cde0bd43 Use std::jthread 2020-06-20 16:16:12 +02:00
Robbert van der Helm f5f6f04016 Rearrange the try-catch in the thread handlers
It's a bit clearer this way. I would prefer using jthreads here, but we
would still need this try-catch block since there's no way to cancel
synchronous Boost.Asio socket operations other than closing the socket.
2020-06-20 15:47:30 +02:00
Robbert van der Helm 34e3f1a1bf Don't set WINEPREFIX for the current process
`native_environment` allows modification of the current process's
environment, so we had to use the plain `environment` class instead.
2020-06-20 13:43:54 +02:00
Robbert van der Helm 56af346277 Show Wine prefix overrides on the startup output
This might otherwise cause confusion, since otherwise the printed Wine
prefix might not actually be the prefix that will be used.
2020-06-20 01:01:48 +02:00
Robbert van der Helm 471d87bc16 Fix dumb memory error when reading buffers
Not sure how this got in, and I'm even less sure why this has not caused
any issues before this. In the particular case that was causing a crash,
the host was sending 138 sample sized buffers. This error likely only
became visible because the lack of memory alignment caused writes to
parts of the vector objects themselves.
2020-06-18 18:37:07 +02:00
Robbert van der Helm c4842ccda6 Make use-* aliases for new with-* build options
The 'use-*' variants will be marked as deprecated in a future version.
2020-06-08 16:02:53 +02:00
Robbert van der Helm 4403585a70 Use the new C++20 starts_with() and contains() 2020-06-06 13:44:26 +02:00
Robbert van der Helm 8202a6b250 Add missing const qualifiers to member functions 2020-06-06 13:44:26 +02:00
Robbert van der Helm 957da62137 Add missing type qualifiers 2020-06-06 13:44:23 +02:00
Robbert van der Helm 3aab2e9727 Fix plugin group socket name generation
I'm pretty sure you're supposed to be able to format `size_t` values,
why does this break the stringstream?
2020-06-05 22:56:52 +02:00
Robbert van der Helm 33777d2876 Use same style for optional and avoid double check
I did not know that `std::optional::value()` did checked access. And I
still prefer a more explicit .has_value() over boolean conversion, but
this seems to be the accepted way to do this.
2020-06-05 22:35:56 +02:00
Robbert van der Helm ff298f3f46 Remove redundant conditions
As mentioned in C++ Core Guidelines ES.87.
2020-06-05 22:18:40 +02:00
Robbert van der Helm b379708b21 Encapsulate individual/group handling differences
This cleans up the PluginBridge significantly by getting rid of all
fields and handling that was only needed for connecting to plugin
groups. This was also the last thing I wanted to refactor before
releasing the plugin groups feature with yabridge 1.2.
2020-05-29 18:08:44 +02:00
Robbert van der Helm 16aa1af14e Don't check for child termination with winedbg
This of course can't work since the process is spawned in a detached
state.
2020-05-28 19:00:10 +02:00
Robbert van der Helm fc35b6c9c8 Show the init message before launching VST host 2020-05-26 17:07:14 +02:00
Robbert van der Helm e546dd7b24 Change wording for individually hosted plugins 2020-05-23 16:00:44 +02:00
Robbert van der Helm 42c755cac8 Don't try to join nonexistent threads
This fixes a shutdown crash for individually hosted plugins. One more
reason to refactor the host launch behavior!
2020-05-23 15:59:04 +02:00
Robbert van der Helm 124b62bf6b Change config path wording
Since this field will only be populated if we are actually using values
from a config file.
2020-05-23 15:47:13 +02:00
Robbert van der Helm c387238b78 Change wording in group related log messages 2020-05-23 15:16:33 +02:00
Robbert van der Helm 9f544c194a Change hosting mode wording 2020-05-23 13:01:22 +02:00
Robbert van der Helm a246ddf344 Manually close sockets when not killing process
Killing the socket would otherwise cause the sockets to be closed, and
both sides to shut down.
2020-05-22 23:08:25 +02:00
Robbert van der Helm 6da1909d4b Fix interleaved group host initialization
In case two yabridge instances start at the same time and both try to
launch a group host for the same group and the second plugin connects to
the first group host, then we should of course be using that process'es
PID to check if the group host is still running.
2020-05-22 22:50:29 +02:00
Robbert van der Helm ad6199949d Fix startup errors not being logged 2020-05-22 20:15:53 +02:00
Robbert van der Helm c5c1c334d9 Add group host support to the plugin
The difference between individual hosting and group hosting will have to
be encapsulated in a class to keep the rest of the plugin bridge clean.
2020-05-22 20:15:53 +02:00
Robbert van der Helm 903d977d83 Add a function for generating group host endpoints 2020-05-22 19:06:43 +02:00
Robbert van der Helm 615d23e525 Clean up new host process launching 2020-05-22 19:06:43 +02:00
Robbert van der Helm dd843519ce Rename PluginParameters to GroupReuqest 2020-05-22 19:06:43 +02:00
Robbert van der Helm 27af0f8c11 Search for the group host when using plugin groups 2020-05-22 19:06:43 +02:00
Robbert van der Helm fea256655d Move process launching to a function
Starting and connecting to plugin group host processes is not going to
work in the intializer list.
2020-05-22 19:06:43 +02:00
Robbert van der Helm 91b0ebf38b Remove mention of plugin groups flag
Since there's no reason for this to be behind a flag.
2020-05-21 17:15:24 +02:00
Robbert van der Helm 8eb01cb519 Listen on the group socket and handle requests 2020-05-20 18:45:33 +02:00
Robbert van der Helm 6d6d928838 Move all plugin group handling boilerplate 2020-05-19 15:29:48 +02:00
Robbert van der Helm daad6f2f00 Fix empty line spam in log file when Wine crashes 2020-05-19 12:27:32 +02:00
Robbert van der Helm 53acb1f78a Move wine-bridge.h -> bridges/vst2.h
This way we can structure the group handling and a potential future VST3
bridge in the same way.
2020-05-18 16:15:07 +02:00
Robbert van der Helm 994f3c9e38 Add a plugin group host application 2020-05-18 16:15:07 +02:00
Robbert van der Helm a849927a08 Move initialization message to a function
It was starting to get a bit unwieldy.
2020-05-17 14:43:21 +02:00
Robbert van der Helm d2cd608abb Print the configuration on startup 2020-05-17 14:43:21 +02:00
Robbert van der Helm 312200f100 Make the 'this_line_location' hack more reliable
It shouldn't be done if it's not needed.
2020-05-17 14:43:21 +02:00
Robbert van der Helm e76d4b474c Rearrange fields in PluginBridge 2020-05-16 14:46:48 +02:00
Robbert van der Helm a615a66cc5 Add the group configuration parser
As described in #15.
2020-05-15 16:35:18 +02:00