Robbert van der Helm
8924124abb
Fully implement IParameterFinder
...
With this we're at VST 3.0.2 support.
2021-01-03 23:46:13 +01:00
Robbert van der Helm
52d4fe2f08
Add a wrapper struct around IPlugView for casts
2021-01-03 23:43:51 +01:00
Robbert van der Helm
fb6e5ab33f
Fully implement IMidiMapping
2021-01-02 23:54:01 +01:00
Robbert van der Helm
a8a0e325fe
Fully implement INoteExpressionCOntroller
2021-01-02 18:40:34 +01:00
Robbert van der Helm
8a4de7da53
Add stubs for INoteExpressionController
2021-01-02 15:27:55 +01:00
Robbert van der Helm
34f8d3b1d2
Update the copyright notices for 2021
2021-01-01 18:54:02 +01:00
Robbert van der Helm
fa0753f520
Use atomic fetch-and-add for unique window classes
2020-12-31 14:12:14 +01:00
Robbert van der Helm
651ebd4db3
Update the ViewRect in checkSizeConstraint()
2020-12-30 14:35:18 +01:00
Robbert van der Helm
3553b080fe
Implement IUnitData
...
With this all VST 3.0.0 interfaces are finally supported.
2020-12-29 22:00:22 +01:00
Robbert van der Helm
96fe8b16a5
Add more explicit moves in VST3 message handling
...
The compiler might be smart enough to do this for us, but doing it
manually doesn't hurt.
2020-12-29 18:54:57 +01:00
Robbert van der Helm
38211d0fb3
Implement IProgramListData on the Wine side
2020-12-29 18:50:17 +01:00
Robbert van der Helm
4226ab6e43
Pass pointers to IMessage objects around
...
Instead of serializing the actual `YaMessage`, for the reasons mentioned
in the comments. This was needed to stop iZotope VocalSynth 2 in Ardour
from segfaulting when editing parameters, because that plugin is
apparently being very naughty.
2020-12-29 00:22:42 +01:00
Robbert van der Helm
dd74e54854
Add FIXME for a crazy design issue in VocalSynth 2
...
They're exchanging pointers between the processor and the controller
using messages. And not only that, they're storing the message objects
instead of storing the pointers.
2020-12-28 00:38:35 +01:00
Robbert van der Helm
9cacf03765
Add missing lambda return type annotations
2020-12-27 23:34:40 +01:00
Robbert van der Helm
2823a74783
Implement all IUnitInfo functions
...
With this IUnitInfo has been fully implemented.
2020-12-27 18:07:32 +01:00
Robbert van der Helm
70c5792593
Implement IUnitInfo::getSelectedUnit
2020-12-27 16:48:47 +01:00
Robbert van der Helm
d34b399ba0
Implement IUnitInfo::getProgramPitchName
2020-12-26 23:20:13 +01:00
Robbert van der Helm
e414c58a7a
Implement IUnitInfo::hasProgramPitchNames
2020-12-26 23:04:02 +01:00
Robbert van der Helm
f96e6b5a1e
Implement IUnitInfo::getProgramInfo
2020-12-26 23:00:15 +01:00
Robbert van der Helm
204765ec0c
Implement IUnitInfo::getProgramName
2020-12-26 22:38:15 +01:00
Robbert van der Helm
60f6b30b84
Implement IUnitInfo::getProgramListInfo
2020-12-26 22:17:21 +01:00
Robbert van der Helm
92a7cb755a
Implement IUnitInfo::getProgramListCount
2020-12-26 22:10:46 +01:00
Robbert van der Helm
5e832a2689
Implement IUnitInfo::getUnitInfo
2020-12-26 22:03:26 +01:00
Robbert van der Helm
f3e706a39a
Implement IUnitInfo::getUnitCount
2020-12-26 21:33:19 +01:00
Robbert van der Helm
86aaf2fa3a
Implement IEditController2::openAboutBox
...
With this IEditController2 has been fully implemented.
2020-12-26 00:10:39 +01:00
Robbert van der Helm
3c5700163e
Implement IEditController2::openHelp
2020-12-26 00:06:32 +01:00
Robbert van der Helm
91a96249fc
Implement IEditController2::setKnobMode
2020-12-26 00:03:29 +01:00
Robbert van der Helm
8a56b67cb3
Add unknown interface logging on the Wine side
2020-12-25 15:25:56 +01:00
Robbert van der Helm
70cb6dad89
Allow indirect IConnectionPoint connections
...
This is needed to support Ardour. These extra hops and serialization
steps will probably hurt performance, but outside of some huge hacks (to
connect the components directly anyways) there's not much else we can
do.
2020-12-25 14:21:18 +01:00
Robbert van der Helm
65694d261c
Implement IConnectionPoint::notify
2020-12-25 13:13:56 +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
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
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
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
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
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
063b480fd0
Implement IPlugView onKey{Up,Down}
2020-12-21 19:13:14 +01:00
Robbert van der Helm
06c55fcdd8
Implement IPlugView::onWheel()
2020-12-21 18:56:22 +01:00
Robbert van der Helm
f1009f1941
Implement IPlugView::removed()
2020-12-21 18:30:42 +01:00
Robbert van der Helm
7e34cf69fe
Remove Editor::handle_win32_events
...
This apparently isn't needed anymore.
2020-12-21 18:24:07 +01:00
Robbert van der Helm
5324e4142b
Clean up proxy object construction/destruction
2020-12-21 17:59:38 +01:00