Commit Graph

786 Commits

Author SHA1 Message Date
Robbert van der Helm 02d0898a23 Move linking arguments in cross-wine.conf
Putting these in [properties] has been deprecated as of Meson 0.56.0.
2020-11-11 16:12:43 +01:00
Robbert van der Helm b58d643a08 Suggest plugin groups for boosting performance
I found that using plugin groups with the BBC Spitfire plugins can get
rid of all latency spikes I was getting when playing notes on 30
instances of them at once. After doing so the overall thread count
dropped from 332 down to 128.
2020-11-10 23:36:15 +01:00
Robbert van der Helm 09ba0d887b Remove old TODO
MainContext is now basically just a wrapper with a simple event loop
implementation so it's not really necessary, but having a separate type
for the 'main' IO context still makes everything much clearer.
2020-11-10 15:52:35 +01:00
Robbert van der Helm af8c9ef838 Upgrade to bitsery 5.2.0
Now that the unknown pragma warnings with bitsery 5.1.0 have been
solved.

https://github.com/fraillt/bitsery/issues/63
2020-11-10 14:49:22 +01:00
Robbert van der Helm 5f1fbcb905 Bump to version 2.0.1 2.0.1 2020-11-08 21:53:55 +01:00
Robbert van der Helm b04e1da0d9 Terminate the Wine host after the sockets close
The Wine host application would not close properly if the VST host would
suddenly crash or terminate without closing all plugins.
2020-11-08 21:49:52 +01:00
Robbert van der Helm 9300648067 Fix typo in vst2.cpp 2020-11-08 16:07:57 +01:00
Robbert van der Helm 97d1055063 Bump to version 2.0.0 2.0.0 2020-11-08 13:47:33 +01:00
Robbert van der Helm 91604f41b5 Change wording in changelog 2020-11-08 13:47:08 +01:00
Robbert van der Helm 4920cab187 Update the readme for yabridge 2.0.0 2020-11-08 13:40:01 +01:00
Robbert van der Helm f2d4d78c49 Remove removed items from the the readme
In preparation for yabridge 2.0.0.
2020-11-08 13:32:19 +01:00
Robbert van der Helm 0392ed2220 [yabridgectl] Mention sync --force in the readme 2020-11-08 13:32:01 +01:00
Robbert van der Helm 7931f38066 Remove the deprecated use-* compilation options 2020-11-08 12:36:47 +01:00
Robbert van der Helm 889d9d81c4 Fix wording in the changelog 2020-11-08 10:54:45 +01:00
Robbert van der Helm 5bcae68d77 Add an example for using a single plugin group
Now that plugin groups are 100% stable this can be a valid approach.
2020-11-08 00:28:34 +01:00
Robbert van der Helm 5486d91201 Fix style 2020-11-07 23:17:00 +01:00
Robbert van der Helm acdbcaca6a Fix plugin host fallover behaviour
GroupHost::running() would sometimes cause plugins to get terminated
prematurely when connecting to another plugin's group host process since
the plugin's own group host process has exited.
2020-11-07 23:11:49 +01:00
Robbert van der Helm d2500ff31d Get rid of message loop skipping and EditorOpening
This special behaviour is no longer needed now that event handling is
fully concurrent and the Win32 message loop no longer blocks
`dispatch()` calls.
2020-11-07 22:06:58 +01:00
Robbert van der Helm e2603df522 Update the architecture document 2020-11-07 21:45:02 +01:00
Robbert van der Helm a0c0a86e2c Drop the separate effProcessEvents socket
Now that event handling is fully concurrent and thus no longer gets
blocked by the Win32 message loop.
2020-11-07 20:54:33 +01:00
Robbert van der Helm f1c83536d8 Add Qtractor to the list of tested DAWs 2020-11-07 20:37:07 +01:00
Robbert van der Helm 822985e140 Mention new socket location in changelog 2020-11-07 18:35:11 +01:00
Robbert van der Helm 42032c5c2d Fix the old accumulative process() function 2020-11-07 18:17:21 +01:00
Robbert van der Helm 23cd2dd193 Bump the event loop handling rate up to 60 Hz
This will also cause plugins to update their editors at 60 FPS. This was
kept at a lower value for performance reasons, but since the message
loop now no longer blocks event handling we can safely increase this.
This will double the amount of resources spent on drawing, but since
audio processing in a real world scenario almost never utilizes all
cores anyways this should not be an issue.
2020-11-07 00:30:12 +01:00
Robbert van der Helm 36f6e93216 No longer track whether the GUI is active
This ended up being unnecessary.
2020-11-06 17:54:42 +01:00
Robbert van der Helm 5087b49cc4 Simplify EventHandler::receive_events 2020-11-06 17:49:16 +01:00
Robbert van der Helm 1c7e866609 No longer return a lambda in passthrough_event()
Now that it's no longer used directly this is no longer needed, and it's
much clearer without the lambda.
2020-11-06 17:17:36 +01:00
Robbert van der Helm c285ba0bd2 Mention passthrough_event() in Event*Payload 2020-11-06 17:02:13 +01:00
Robbert van der Helm 8d2cc3e9fb Fix typo in readme introduction 2020-11-06 11:22:20 +01:00
Robbert van der Helm caae9befc6 Mention software rendering for Scaler 2 2020-11-02 22:09:37 +01:00
Robbert van der Helm ba6381e3ae Rename EventHandler::{send,receive} to *_event(s?)
Since it does something way more involved than
`SocketHandler::{send,receive_multi}`, and that makes it a bit confusing
if you don't already know about that (and even if you do).
2020-11-01 12:01:50 +01:00
Robbert van der Helm ec26b60e54 Also mention yabridgectl-git to avoid confusion 2020-10-31 16:11:18 +01:00
Robbert van der Helm cd49985831 Mention the master branch version in the readme
Since it's functionally already done and I haven't run into any issues
during my testing.
2020-10-31 16:09:42 +01:00
Robbert van der Helm fd3ff233fd Mention that the workaround for REAPER is obselete
In the upcoming release of yabridge 1.8.0/2.0.0.
2020-10-31 13:39:08 +01:00
Robbert van der Helm fa01ac843b Replace all non-group sockets with SocketHandler
This greatly reduces the amount of boilerplate and potential for error.
2020-10-30 13:30:08 +01:00
Robbert van der Helm 42792a883d Add EventHandler-like wrapper for simple sockets
This will greatly reduce boilerplate.
2020-10-30 12:58:31 +01:00
Robbert van der Helm 3788c1226b Take buffers by reference in {read,write}_object()
This was how it originally worked (and how it should work, since
otherwise there's no reason to reuse buffers), but for some reason this
got removed at some point.
2020-10-30 12:52:02 +01:00
Robbert van der Helm c18e4be039 Add more improvements to socket rework changelog 2020-10-30 01:30:49 +01:00
Robbert van der Helm 9633a70745 Use 'concurrent' instead of 'asynchronous'
While asynchronous is technically also correct, this makes it a bit
clearer what's going on.
2020-10-29 20:49:46 +01:00
Robbert van der Helm 66976ddfff Clarify the plugin group changelog entry better 2020-10-28 21:32:48 +01:00
Robbert van der Helm 8b2fa0f589 Merge branch 'feature/socket-rework' into master 2020-10-28 21:21:10 +01:00
Robbert van der Helm 264f6ab8b5 Mention that all plugin group crashes are fixed 2020-10-28 21:19:50 +01:00
Robbert van der Helm 08cd7cf8ab Join Win32Threads on destruct, like std::jthread 2020-10-28 21:11:34 +01:00
Robbert van der Helm dd9957159a Move the sockets after the threads in Vst2Bridge
This way the sockets can be destroyed before the threads, and we can
safely wait for the threads to shut down. I initially had Win32Thread
imitate std::jthread's join-on-destruct, but that was causing group
processes to hang. Now we can safely add that back again, and this will
fix some spurious segfaults during plugin scans when using plugin groups
containing a massive amount of plugins.
2020-10-28 21:05:14 +01:00
Robbert van der Helm d81759c929 Add an explicit wait to our thread wrapper 2020-10-28 20:40:19 +01:00
Robbert van der Helm 93e01dacef Explicitly close all sockets on shutdown
This way we're sure to break out of any blocking loops.
2020-10-28 20:38:01 +01:00
Robbert van der Helm e70b042f9f Update the versions of the tested DAWs 2020-10-28 19:53:46 +01:00
Robbert van der Helm f39ee82bd4 Update socket rework changelog entry 2020-10-28 01:21:56 +01:00
Robbert van der Helm bece654c2d Rename PluginContext to MainContext for clarity 2020-10-28 01:02:56 +01:00
Robbert van der Helm fac820c25a Execute all non-unsafe opcodes on calling thread
This will require more testing of course, but I think it should be safe.
This would increase the potential maximal throughput in group hosts
significantly.
2020-10-27 23:18:59 +01:00