Robbert van der Helm
74dc8225d1
Back the VST3 plugin factory by an IPtr
...
This prevents REAPER from crashing when removing the last instance of a
plugin and then readding it. REAPER doesn't unload the module even after
it removes its last plugin factory instance. This means that before this
the plugin factory would be freed but we still had a seemingly valid
pointer to it that we would try to access.
2021-01-21 01:51:21 +01:00
Robbert van der Helm
4cc44c3cf7
Make the mutual recursion mechanism safer
...
By directly stopping the IO context there was a chance that a task would
get cancelled outright if all stars aligned in the wrong way. Stopping
the IO context could happen between posting the task to the context and
waiting for it. This approach is much safer as we cannot drop any work
this way.
2021-01-20 12:52:48 +01:00
Robbert van der Helm
5f7f44ce20
Fix potential issue in GUI thread mutual recursion
...
While the assumption that this is always the last element should hold
true, there may be exceptions so better be safe than sorry.
2021-01-20 03:29:25 +01:00
Robbert van der Helm
508d393bbc
Fix event handlers not being unregistered
...
This would cause crashes in Bitwig, as `RunLoopTasks`' destructor would
not be run after the event handler has been unregistered, and we
unregister the event handler in that destructor.
2021-01-20 00:21:18 +01:00
Robbert van der Helm
c08d704dc0
Apply the mutual recursion changes to Vst3Bridge
...
I've never seen this happen, but now this too would support deeply
nested mutual recursion just like we implemented in
`Vst3PlugViewProxyImpl`. Better safe than sorry.
2021-01-19 23:52:00 +01:00
Robbert van der Helm
23d9b7416d
Support deep nested mutual recursion in IPlugView
...
This could cause hangs in Bitwig when very quickly resizing GUIs.
2021-01-19 23:11:08 +01:00
Robbert van der Helm
d7d5725ae9
Fix typo
2021-01-19 18:02:35 +01:00
Robbert van der Helm
36535fc3b5
Fix VST2 editor resizing in REAPER
...
After solving this for VST3 plugins it become clear that REAPER required
us to do the exact same thing for VST2 plugins.
2021-01-19 17:49:40 +01:00
Robbert van der Helm
d252ace189
Mention a workaround for TDR plugin knob behaviour
2021-01-19 16:54:23 +01:00
Robbert van der Helm
abb21c396b
Fix spelling in the changelog
2021-01-19 15:33:05 +01:00
Robbert van der Helm
de8559caea
Get rid of some old todos
2021-01-19 15:20:22 +01:00
Robbert van der Helm
dac817323b
Add an option to force drag-and-drop under REAPER
...
This works around a long standing bug in REAPER itself that would
prevent you from dragging files onto any plugin editor window.
2021-01-19 15:11:27 +01:00
Robbert van der Helm
53c0ecbac4
Mention the input focus change in the changelog
2021-01-19 01:41:03 +01:00
Robbert van der Helm
9788f21e0e
Fix rare hanging issue on Bitwig related to focus
...
On Bitwig grabbing input focus this way would trigger many more FocusIn
events, which in certain situations could cause the interface to hang
while everything was being processed.
2021-01-19 00:52:49 +01:00
Robbert van der Helm
b2ccfed2e6
Add a note for a potential fix for REAPER resizing
2021-01-18 16:00:45 +01:00
Robbert van der Helm
bb5471f2d9
Run certain GUI tasks from the host's run loop
...
This was a bit of a tricky one because it requires simulating mutual
recursion, but it's needed for REAPER as otherwide calls to
`IPlugFrame::resizeView()` and `IContextMenu::popup()` might cause
REAPER to segfault because its GUI is not thread safe.
2021-01-18 14:19:31 +01:00
Robbert van der Helm
5ad47c8c68
Get rid of condition variable in mutual recursion
...
We can safely assume that these are mutually recursive calls from the
GUI thread and can thus be handled directly.
2021-01-18 11:22:07 +01:00
Robbert van der Helm
bb2b526003
Optimize away some potential copies
2021-01-17 19:06:56 +01:00
Robbert van der Helm
0c8941f9f0
Update the fixme on REAPER's thread safety issues
2021-01-17 17:37:23 +01:00
Robbert van der Helm
7c3e28e482
Add a note about unavoidable zombie processes
...
This has to be fixed in Boost.Process
2021-01-17 15:38:20 +01:00
Robbert van der Helm
197aadad69
Fix style
2021-01-17 15:32:22 +01:00
Robbert van der Helm
029f797377
Update readme for the current VST3 support status
...
We still need to do a lot of testing, and before that there are quite a
few things I need to fix or take a look at, but now we at least
technically support all VST 3.7.1 features.
2021-01-17 14:33:24 +01:00
Robbert van der Helm
1c6d3f8fd9
Fully implement IParameterFunctionName
...
We now support all VST 3.7.1 interfaces! At least, in theory we do.
2021-01-17 14:17:46 +01:00
Robbert van der Helm
6b992e7c9a
Add logging for IParameterFunctionName
2021-01-17 14:10:01 +01:00
Robbert van der Helm
4804174dae
Add message structs for IParameterFunctionName
2021-01-17 13:42:08 +01:00
Robbert van der Helm
3d8ee1ddf1
Add stubs for IParameterFunctionName
2021-01-17 13:23:17 +01:00
Robbert van der Helm
06f6e6acfc
Add a proxy class for IParameterFunctionName
...
This is the last official VST3 interface we have to implement!
2021-01-17 13:09:29 +01:00
Robbert van der Helm
aa1a7a1588
Fully implement IProgress
...
`IParameterFunctionName` will be the last interface before we _in
theory_ support all VST3 features.
2021-01-17 00:19:48 +01:00
Robbert van der Helm
1dc900aff9
Add logging for IProgress
2021-01-17 00:19:01 +01:00
Robbert van der Helm
30ad506552
Add message structs for IProgress
2021-01-17 00:19:01 +01:00
Robbert van der Helm
e840fe3114
Add stubs for IProgress
2021-01-16 18:09:39 +01:00
Robbert van der Helm
bfdfd9c341
Add proxy classes for IProgress
2021-01-16 18:02:15 +01:00
Robbert van der Helm
9ddf4b2ae1
Fully implement IProcessContextRequirements
2021-01-16 16:29:21 +01:00
Robbert van der Helm
1ab9056a82
Add logging for IProcessContextRequirements
2021-01-16 16:17:34 +01:00
Robbert van der Helm
77ff3f23d5
Add message structs for IProcessContextRequirements
2021-01-16 16:11:48 +01:00
Robbert van der Helm
a2203cfef7
Add stubs for IProcessContextRequirements
2021-01-16 16:09:31 +01:00
Robbert van der Helm
4f416e135a
Add a proxy class for IProcessContextRequirements
2021-01-16 15:51:48 +01:00
Robbert van der Helm
73fda0b568
Fully implement IPlugInterfaceSupport
...
With this we support all VST 3.6.12 interfaces.
2021-01-16 15:19:10 +01:00
Robbert van der Helm
701271c273
Add logging for IPlugInterfaceSupport
2021-01-16 14:49:24 +01:00
Robbert van der Helm
faf4abd91d
Add message structs for IPlugInterfaceSupport
2021-01-16 14:47:40 +01:00
Robbert van der Helm
6c40cd5ad1
Add stubs for IPlugInterfaceSupport
2021-01-16 14:47:40 +01:00
Robbert van der Helm
a8699eed18
Add a proxy class for IPlugInterfaceSupport
2021-01-16 14:33:09 +01:00
Robbert van der Helm
7fdf646270
Fully implement IMidiLearn
2021-01-16 14:25:00 +01:00
Robbert van der Helm
26c78df37c
Add logging for IMidiLearn
2021-01-16 13:57:43 +01:00
Robbert van der Helm
1a66c67ec7
Add message structs for IMidiLearn
2021-01-15 23:13:51 +01:00
Robbert van der Helm
85c1972c1f
Add stubs for IMidiLearn
2021-01-15 22:36:25 +01:00
Robbert van der Helm
64507828bb
Add a proxy class for IMidiLearn
2021-01-15 22:33:29 +01:00
Robbert van der Helm
6e8d56923c
Fully implement INoteExpressionPhysicalUIMapping
...
With this we support all VST 3.6.11 features.
2021-01-15 19:33:05 +01:00
Robbert van der Helm
d9d389bebf
Fix the semantics of YaPhysicalUIMapList
...
We're supposed to take the list provided by the host, and modify the
target note expression values.
2021-01-15 19:30:08 +01:00
Robbert van der Helm
cc35e89252
Add logging for INoteExpressionPhysicalUIMapping
2021-01-15 19:17:42 +01:00