Commit Graph

1453 Commits

Author SHA1 Message Date
Robbert van der Helm df75427f69 Store the dragged files so we can use them in XDND 2021-07-10 13:06:46 +02:00
Robbert van der Helm c0871e3b5d Unify drag-and-drop debug messages 2021-07-10 12:44:14 +02:00
Robbert van der Helm bc9d4d02a2 Fix copy and move semantics for DnD proxy handle 2021-07-10 02:17:10 +02:00
Robbert van der Helm dbb1b09256 Add proper copy and move semantics to proxy handle 2021-07-10 00:49:11 +02:00
Robbert van der Helm 2ba2cf1ab7 Free the drag-and-drop proxy after closing editors
Apparently X11 connections are a scarce resource, so it seems like a
good idea to not hang on to them for too long. Now this is sort of a
hybrid between COM-style memory management and a singleton.
2021-07-10 00:15:38 +02:00
Robbert van der Helm b1e3488a24 Add an X11 connection to the drag-and-drop proxy 2021-07-10 00:09:29 +02:00
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