This wasn't implemented yet because no plugin tried using the interface
in this way before this, but Surge XT incorporates the host's context
menu items into their own (much more elaborate) context menu. To
accommodate this, we now copy over all of the host's prepopulated
context menu items to the Wine plugin host, and calling the targets
associated with any of those items will cause the target on the
associated context menu item on the host to be called.
This is slightly more complicated than what would otherwise be necessary
because Bitwig does not assign tags to their context menu items and
instead always uses 0.
I'm not a fan of Hungarian notation, but C++ kind of needs it with its
implicit `this`. And of all the common options for this, I find
suffixing members with an underscore the least offensive one.
Because that's how it's spelled in the CMake config (with the directory
being lower case). Fun thing is that Meson still expects all dependency
names to be lower case (as it should) so the diagnostics during the
`meson setup` phase looks a bit strange now.
As reported in #149, the DrumCore 3 plugin would segfault when trying to
drag files from it. This happened because the plugin presumably
underflows somewhere and then reports that it supports 4294967282
different drag-and-drop formats, even though yabridge asked for a
maximum of 16.
They aggressively use the message loop when parts of a plugin's UI
change, sometimes sending as many is 2300 events at once. The old 20
messages per tick limit would cause severe slowdowns in this case.
I avoided doing this around yabridge's launch when backtraces from
crashed plugins could be useful, but that hasn't been the case for a
long time now. Stripping the libraries can save a bit of disk space when
using a ton of plugins.
It's worth mentioning that you should build wine-tkg yourself because
some people seem to install the binary releases instead, and even though
I haven't heard it cause any problems for anyone it's also good to be
aware that you need the `-dkms` versions of any extramodule packages if
you're using `linux-zen` (or any other custom kernel).