Robbert van der Helm
b3001cc22b
Add missing #pragma once
...
Oops.
2021-07-09 21:47:01 +02:00
Robbert van der Helm
41160adc33
Fix the drag-and-drop debugging message
...
Because why not?
2021-07-09 21:37:29 +02:00
Robbert van der Helm
dd14a90f9a
Only handle drag-and-drop from this process
...
When called from another process the data pointer will of course be
invalid, so every process must handle their own drag-and-drop.
2021-07-09 21:32:56 +02:00
Robbert van der Helm
f33c02f4f7
Add a proof of concept drag-and-drop snooper
...
This doesn't do anything useful yet, but it will print the names of
files that are being dragged and dropped on the Wine server (using the
OLE API) while the plugin is open.
2021-07-09 20:53:15 +02:00
Robbert van der Helm
fc61658ada
Add the start for a Wine->X11 DnD wrapper
2021-07-09 18:48:11 +02:00
Robbert van der Helm
b72b6f8273
Change const static to static const
...
To match the order used everywhere else.
2021-07-08 18:18:29 +02:00
Robbert van der Helm
a58a1ab111
Update parameter name in header
...
Apparently this wasn't saved yet when I commited
a06d0bc515 .
2021-07-05 18:29:04 +02:00
Robbert van der Helm
a06d0bc515
Actually update the supported interface status
...
With this Waves VST3 plugins now work. But was it worth it?
2021-07-05 16:48:24 +02:00
Robbert van der Helm
4e4bbe1ba4
Replace const-rvalue with rvalue
...
Since const-rvalue doesn't make any sense.
2021-07-05 16:39:11 +02:00
Robbert van der Helm
1397400155
Reload supported interfaces after IPluginBase::initialize()
...
This is needed as a workaround to support Waves VST3 plugins.
Right now does does not actually fix the issue because the arguments are
not updated in the subclasses. The next commit will fix this.
2021-07-05 16:08:01 +02:00
Robbert van der Helm
3fbb01f225
Move all casted VST3 plugin interfaces to struct
...
To make Waves plugins happy we're going to have to replace this after
calling `IPluginBase::initialize()`.
2021-07-05 15:22:47 +02:00
Robbert van der Helm
97ff407ef6
Allow plug view creation to fail
2021-07-05 15:02:36 +02:00
Robbert van der Helm
4c24baa3d2
Remove default constructor for Vst3PluginInstance
...
Seems weird to need this specifically so we can use the map overload
that creates a new instance when the key doesn't exist in the map. This
seems safer.
2021-07-05 14:35:44 +02:00
Robbert van der Helm
e25231c2d2
Rename VST3 instance holder classes
...
We're going to have to split up the interfaces into another object so we
can reinitialize it later.
2021-07-05 14:16:23 +02:00
Robbert van der Helm
cd060fba24
Remove comment about host context interfaces
...
As it turns out, later SDK versions did add more interface. (this class
used to directly implement `IHostApplication`)
2021-07-05 01:17:34 +02:00
Robbert van der Helm
0f3730fd97
Reduce the notification expiration time
2021-07-03 17:07:44 +02:00
Robbert van der Helm
e0b06c84ce
Avoid manual memory management in the editor
...
Letting `std::unique_ptr<T>` do the thinking for us makes a lot more
sense. We only need manual memory management for the error because we
need to pass a pointer to that pointer to xcb, but at least we have the
macro there so it still stays nice and readable.
2021-07-01 19:51:45 +02:00
Robbert van der Helm
9edae35304
Don't build 64-bit plugin hosts on 32-bit systems
...
This should in theory work.
2021-07-01 15:16:56 +02:00
Robbert van der Helm
e1e5c8beae
Move the VST3 SDK patching
2021-07-01 15:15:20 +02:00
Robbert van der Helm
d459649f49
Move most of the Meson build to subdirectories
...
We sadly cannot call `shared_library()` and `executable()` in these
subdirectories while still maintaining the same `build/` directory
structure, but this is still much cleaner. All of the other build
artifacts are now also gone from the root of `build/` so it's cleaner
overall.
2021-07-01 14:57:23 +02:00
Robbert van der Helm
8dd3e091fb
Move VST3 SDK deps to a separate meson.build file
...
We should only have the global options in the main meson.build file. It
made sense to keep everything in one place at one point, but an 800 line
build script becomes a bit difficult to skim through.
2021-07-01 14:57:23 +02:00
Robbert van der Helm
9b1f3a5f4c
Remove non-existent VST2 entry point
...
Since there isn't any public documentation on VST2, I saw JUCE and a
couple of other plugins and bridges use this, but they all redefined the
symbol to`main`.
2021-06-29 12:11:05 +02:00
Robbert van der Helm
c067cd1b40
Prevent cursors from being unintentionally hidden
...
Some interaction between JUCE and Wine would cause these cursors to be
hidden and then never shown again. This is of course more of a temporary
workaround until the issue gets solved within Wine.
2021-06-28 18:13:43 +02:00
Robbert van der Helm
8cffd0761b
Move the THROW_X11_ERROR macro up
2021-06-28 17:16:43 +02:00
Robbert van der Helm
7ac4ee713c
Only query XEmbed properties when using Xembed
...
This is mostly just to make this long constructor more readable.
2021-06-28 16:15:07 +02:00
Robbert van der Helm
c5afb7f215
Append a link to the plugin to the notifications
2021-06-28 13:05:32 +02:00
Robbert van der Helm
388d9739a9
Move XML escaping to a separate function
2021-06-28 12:53:51 +02:00
Robbert van der Helm
e0713c5fe7
Define the deprecated VST<2.4 main entry point
...
This should allow @AVLinux to use yabridge under EnergyXT.
2021-06-26 15:02:49 +02:00
Robbert van der Helm
e7366006df
Append to the STDERR stream
...
This got lost when changing from using `std::cerr` to opening
`/dev/stderr` directly.
2021-06-26 12:42:53 +02:00
Hector Martin
51ba93e4ed
Add missing <bitset> include
2021-06-26 12:29:45 +02:00
Robbert van der Helm
94ba58a7a5
Remove automatically added using std::endl;
...
This is the first thing you disable on clangd, but apparently I was too
late here.
2021-06-26 12:27:05 +02:00
Robbert van der Helm
20638b7349
Fix missing autoformatting
...
At some point Doom Emacs broke on-save formatting with lsp-mode in
certain circumstances, and I made these changes with wgrep so apparently
they were never formatted.
2021-06-26 12:27:01 +02:00
Robbert van der Helm
e5187db9ef
Mark 32-bit yabridge libraries
...
So we're able to immediately spot that someone is using them from the
logs.
2021-06-24 13:48:23 +02:00
Robbert van der Helm
94b3c92432
Get rid of pointer size checks
...
To allow cross-compiling 32-bit libraries.
2021-06-24 13:17:15 +02:00
Robbert van der Helm
3b06634e33
Escape HTML in desktop notification messages
2021-06-23 17:23:45 +02:00
Robbert van der Helm
553b4474a7
Respect $XDG_DATA_HOME when looking for binaries
...
Since we're using the XDG base dir package in yabridgectl we were
already doing this there, so it makes sense to also do this in yabridge
itself even though it's very unlikely the user will have this set.
2021-06-23 01:53:18 +02:00
Robbert van der Helm
15e271f70a
Fix unity builds after reintroduction of vfork
...
Boost.Process was being included before this flag was set. Seems safer
to set it in the build anyways.
2021-06-22 19:00:21 +02:00
Robbert van der Helm
a3d34f8197
Use vfork() for quick running commands
...
We can't use it for the Wine plugin host process, but it's perfectly
suitable for these things.
2021-06-22 18:38:49 +02:00
Robbert van der Helm
418cd7b381
Switch to normal urgency desktop notifications
...
These critical notifications don't expire under KDE Plasma, which would
mean that you'd get absolutely flooded with notifications you have to
manually close when something is wrong.
2021-06-22 18:10:44 +02:00
Robbert van der Helm
75cfc8eaac
Fix new watchdog timer environment check
...
This would of course cause a segfault if the environment variable isn't
defined. The regression was introduced in
8873c11e1d .
2021-06-22 18:06:04 +02:00
Robbert van der Helm
4ab61a77b7
Compare to string view constant instead of string
...
These are constexpr, so hopefully the compiler can be a bit smarter
about it.
2021-06-22 17:42:37 +02:00
Robbert van der Helm
5ffe4773e9
Show startup errors in a desktop notification
...
This should make it much easier to spot what goes wrong if you're new to
yabridge and don't know where to look yet.
2021-06-22 17:41:08 +02:00
Robbert van der Helm
8873c11e1d
Move watchdog timer disable check to common/utils
...
We may also want to check this from the plugin.
2021-06-22 17:15:47 +02:00
Robbert van der Helm
333707255e
Add missing noexcept specifier
2021-06-22 17:15:47 +02:00
Robbert van der Helm
c2b8626ec5
Rearrange declarations to match implementations
2021-06-22 17:15:47 +02:00
Robbert van der Helm
780d562909
Fix plugin host watchdog treating zombies as alive
2021-06-22 17:15:47 +02:00
Robbert van der Helm
0156b61e64
Show notification when plugin host fails to start
...
This one's a bit generic since the relevant output from the Wine process
will have already been printed to the logger before this point.
2021-06-22 17:13:30 +02:00
Robbert van der Helm
437a4dc5ec
Add a function for sending desktop notifications
2021-06-22 17:12:31 +02:00
Robbert van der Helm
98c4cc170e
Actually use the correct environment
2021-06-21 13:06:26 +02:00
Robbert van der Helm
466fe3abcf
Run $WINELOADER --version under the correct env
...
This makes the initialization message reflect the correct Wine version
when using a `WINELOADER` script to change between Wine versions
depending on the Wine prefix.
2021-06-21 13:00:05 +02:00