Commit Graph

1232 Commits

Author SHA1 Message Date
Robbert van der Helm fbad4a65ab Add an IConnectionPoint proxy implementation
We still have to pass this proxy to the plugin. That's next.
2020-12-25 13:46:03 +01:00
Robbert van der Helm 0fce9c9eed Add an IConnectionPoint proxy proxy
This is a bit dumb, but this way we can support indirectly connected
objects.
2020-12-25 13:28:03 +01:00
Robbert van der Helm 65694d261c Implement IConnectionPoint::notify 2020-12-25 13:13:56 +01:00
Robbert van der Helm 3566aa86a2 Fix IAttributeList serialization 2020-12-25 12:58:52 +01:00
Robbert van der Helm 5d2c7e0aea Replace SDK IMessage implementation with ours 2020-12-25 01:01:13 +01:00
Robbert van der Helm 84b859c499 Implement IMessage 2020-12-25 01:01:13 +01:00
Robbert van der Helm 7cfd1982dd Fix typos in comment 2020-12-25 01:01:13 +01:00
Robbert van der Helm b6304c83b5 Implement IAttributeList 2020-12-25 00:54:08 +01:00
Robbert van der Helm f4c871f07e Add pointer casts to instance creation
I copied this from the SDK implementation and they don't do any pointer
casts there because it's not strictly necessary, but they're relying on
implementation details that may not always hold true.
2020-12-24 14:46:02 +01:00
Robbert van der Helm b0fc8f2c5f Remove are_objects_directly_connected check
It's not necessary, since all of these objects are simple data objects
that will be passed as arguments to other functions. When we have to
pass through one of those functions we can just serialize the objects at
that point.
2020-12-24 14:45:58 +01:00
Robbert van der Helm 50b50418f4 Fix messages between directly connecting objects
iZotope plugins will already send messages when connect() is called on
the first object, so this flag has to be set on both host contexts at
the same time.
2020-12-24 13:58:32 +01:00
Robbert van der Helm a86c37a21d Partially implement IHostApplication
For now only works for directly connected components.
2020-12-24 13:48:31 +01:00
Robbert van der Helm 1be9f53bb3 Add missing compile flags 2020-12-24 13:47:01 +01:00
Robbert van der Helm 1186e7d775 Store whether two objects are connected directly
In the host context. So when the plugin wants to create an `IMessage`
object to send a message to the other object, we don't have to go
through the host.
2020-12-24 13:22:54 +01:00
Robbert van der Helm 4f8bfbcda6 [yabridgectl] Fix clippy lints 2020-12-24 13:12:19 +01:00
Robbert van der Helm 9ac437f02b [yabridgectl] Fix VST3 installation status display 2020-12-24 13:04:39 +01:00
Robbert van der Helm d79ccc75e6 [yabridgectl] Symlink VST 3.6.10 bundle resources
Although I haven't run into any of these 'new' bundles yet. Everything's
still in the legacy format.
2020-12-24 12:47:45 +01:00
Robbert van der Helm a0098034ed [yabridgectl] Rename the Vst3Module functions
Creating a clear naming scheme here is more difficult than it should be.
2020-12-24 12:38:47 +01:00
Robbert van der Helm a3e76b3370 [yabridgectl] Warn for duplicate VST3 plugins
Since we can't have multiple plugins with the same name this way.
2020-12-24 12:31:04 +01:00
Robbert van der Helm 9d33cafd37 [yabridgectl] Allow removing orphan VST3 modules 2020-12-24 12:12:48 +01:00
Robbert van der Helm 68c95e9527 [yabridgectl] Allow skipping hash checks 2020-12-24 11:54:45 +01:00
Robbert van der Helm e19cbca5d1 Actually create the IHostApplication smart pointer 2020-12-24 00:14:58 +01:00
Robbert van der Helm 55957ca798 [yabridgectl] Allow setting up VST3 plugins
This is still missing checks for removing leftover files, symlinks for
resources and presets, and a way to differentiate between plugins with
the same name from different prefixes.
2020-12-24 00:04:05 +01:00
Robbert van der Helm bc9801c932 [yabridgectl] Add VST3 modules to the status 2020-12-23 21:55:14 +01:00
Robbert van der Helm 5e476a2f9b [yabridgectl] Add utilities for VST3 paths 2020-12-23 21:40:11 +01:00
Robbert van der Helm 8cb1518023 [yabridgectl] Index and categorize VST3 modules 2020-12-23 21:08:24 +01:00
Robbert van der Helm 3d27426b9d [yabridgectl] Index .vst3 files
It doesn't actually identify VST3 modules yet though.
2020-12-23 18:39:22 +01:00
Robbert van der Helm 3dc1b1585b [yabridgectl] Add field for indexing VST3 modules 2020-12-23 17:41:16 +01:00
Robbert van der Helm a7d284469a [yabridgectl] Locate libyabridge-vst3.so
And unify how finding files in yabridgectl works.
2020-12-23 17:12:28 +01:00
Robbert van der Helm 7a55fc3ec0 Significantly clean up mutual recursion workaround
This has much fewer moving parts, and it's probably more understandable.
There was also a race condition in the previous implementation, so
there's that.
2020-12-23 16:11:05 +01:00
Robbert van der Helm eae77d4dbf Fix num samples in processing log message 2020-12-23 12:00:31 +01:00
Robbert van der Helm 216f65d2a1 Unify log format further 2020-12-23 11:53:09 +01:00
Robbert van der Helm 3beaaf2312 Always handle IPlugView::onSize() from UI thread
This requires a super hacky workaround because the UI thread can be
currently blocked by the plugin calling `IPlugFrame::resizeView()` from
the Win32 message loop.
2020-12-22 17:36:30 +01:00
Robbert van der Helm 9ee7982591 Call IPlugView::on* from the UI thread
Since these can trigger a redraw.
2020-12-22 15:47:57 +01:00
Robbert van der Helm 9bb90388c1 Implement IPlugView::checkSizeConstraint()
With this the whole of `IPlugView` and thus also `IEditController` is
implemented.
2020-12-22 15:42:41 +01:00
Robbert van der Helm 5ef7e73725 Implement IPlugView::canResize() 2020-12-22 15:37:06 +01:00
Robbert van der Helm 656f6d3f6c Implement IPlugFrame::resizeView()
The base IPlugFrame only contains this single function.
2020-12-22 15:09:33 +01:00
Robbert van der Helm 3bc3409929 Keep track of the last created plugin view
For implementing `IPlugView::resizeView()`. This approach is safe
because there's only a single defined view type.
2020-12-22 14:27:56 +01:00
Robbert van der Helm da6ddccf07 Implement IPlugView::setFrame() 2020-12-22 14:16:00 +01:00
Robbert van der Helm 9288cdcb59 Remove support for null pointers in setHostContext
Like the other functions, null pointers are never valid here so we
shouldn't bother passing them as it only increases complexity.
2020-12-22 14:04:42 +01:00
Robbert van der Helm 3b96ffa349 Remove null pointer supported in initialize() 2020-12-22 13:59:47 +01:00
Robbert van der Helm 51876a024c Remove null pointer support in setComponentHandler
This should be an implementation fault.
2020-12-22 13:59:15 +01:00
Robbert van der Helm 37897da2b7 Destroy IPlugFrame proxy together with IPlugView
Not that we have implemented `IPlugView::setFrame()` yet, but that
should be trivial at this point.
2020-12-22 13:43:08 +01:00
Robbert van der Helm 91c4b414b0 Add a Vst3PlugFrameProxy implementation with stubs 2020-12-22 13:37:58 +01:00
Robbert van der Helm f5c75da451 Add Vst3PlugFrameProxy
For proxying the `IPlugFrame*` passed to `IPlugView::setFrame()`.
2020-12-22 13:26:54 +01:00
Robbert van der Helm 90de46428c Add an implementation wrapper for IPlugFrame 2020-12-22 13:20:49 +01:00
Robbert van der Helm 8c2801ce06 Mention the effEditIdle() change in the changelog 2020-12-22 13:11:54 +01:00
Robbert van der Helm d4d9746f69 Implement IPlugView::onFocus() 2020-12-22 00:19:23 +01:00
Robbert van der Helm 463557349d Implement IPlugView::onSize() 2020-12-21 23:46:29 +01:00
Robbert van der Helm 1aa5d5d8b4 Add note to input focus grabbing
This shouldn't be necessary for VST3, but it is.
2020-12-21 22:46:59 +01:00