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
0f43e21fc0
Remove old todos
2020-12-21 18:22:40 +01:00
Robbert van der Helm
5324e4142b
Clean up proxy object construction/destruction
2020-12-21 17:59:38 +01:00
Robbert van der Helm
51877796fa
Add dedicated IAudioProcessor/IComponent sockets
...
This way every relevant object instance will get its own thread for
handling these calls. The alternative would be creating a full fat
Vst3MessageHandler pair for all object instances, but that would be a
huge waste.
2020-12-21 17:26:30 +01:00
Robbert van der Helm
b38f272013
Run all other lifecycle events on main thread
...
This is probably where plugins instantiate timers for their GUI updates.
2020-12-20 12:29:59 +01:00
Robbert van der Helm
f2153148b2
Construct and destruct IPlugView from GUI thread
2020-12-20 12:18:51 +01:00
Robbert van der Helm
703b6d9285
Add functions to schedule tasks in main IO context
2020-12-20 12:18:51 +01:00
Robbert van der Helm
66450407f0
Instantiate the editor within the main context
...
Otherwise it of course won't work.
2020-12-20 00:34:51 +01:00
Robbert van der Helm
36c2d877c2
Handle X11 events in Vst3Bridge
2020-12-19 23:55:21 +01:00
Robbert van der Helm
960e2d50d1
Implement IPlugView::getSize()
2020-12-19 23:46:45 +01:00
Robbert van der Helm
09f6d93214
Implement IPlugView::attached()
2020-12-19 23:31:41 +01:00
Robbert van der Helm
49fc896d62
Remove Win32 effEditIdle() timer
...
Now Editor is completely decoupled from VST2.
2020-12-19 23:30:47 +01:00
Robbert van der Helm
e72e6d5642
Implement IPlugView::isPLatformTypeSupported()
...
This of course requires us to substitute the relevant Linux platform
type for the Win32 one.
2020-12-19 22:34:56 +01:00
Robbert van der Helm
7306809991
Drop IPlugView pointer when host drops proxy
2020-12-19 22:17:10 +01:00
Robbert van der Helm
f0ece64018
Implement the Wine side for createView()
2020-12-19 20:41:06 +01:00
Robbert van der Helm
a724b378fe
Move the editor handling back to Vst2Bridge
...
Since we can have multiple editors in Vst3Bridge.
2020-12-19 19:56:49 +01:00
Robbert van der Helm
b422f6fd42
Don't cache IComponent::getControllerClassId()
...
For the same reasons as the last commit. Now we don't have any of these
cached methods anymore.
2020-12-19 18:56:47 +01:00
Robbert van der Helm
63ae5f330c
Don't cache IHostApplication::getName()
...
As it turns out there are only two or three functions where we can do
this. It also breaks logging, and this function will probably only be
called once anyways. More consistency is always better.
2020-12-19 18:28:16 +01:00
Robbert van der Helm
01d84b0029
Mention the exact function name in todo message
2020-12-19 17:49:00 +01:00
Robbert van der Helm
0522f84f4a
Create Vst3HostContextProxy from YaHostApplication
...
This is quite a huge refactor, but note everything is consistent (and
we're going to need one or two more of these `Vst3*Proxy` objects).
Right now nothing extends `IHostApplication`, but this way it will be
trivial to add support for more host context interfaces.
2020-12-19 17:13:17 +01:00
Robbert van der Helm
1b454371a6
Implement IComponentHandler::restartComponent()
...
The base IComponentHandler is now fully implemented.
2020-12-19 15:51:48 +01:00
Robbert van der Helm
25575e2d3a
Implement IComponentHandler::endEdit()
2020-12-19 15:48:06 +01:00
Robbert van der Helm
bb99a539d5
Implement IComponentHandler::performEdit()
2020-12-19 15:45:24 +01:00
Robbert van der Helm
3b06bca95e
Implement IComponentHandler::beginEdit()
2020-12-19 15:39:03 +01:00
Robbert van der Helm
bf3d802f36
Implement IEditController::setComponentHandler()
2020-12-19 15:04:27 +01:00
Robbert van der Helm
132ba0baeb
Add stubs for a component handler proxy impl
2020-12-19 14:37:50 +01:00
Robbert van der Helm
7e3568e333
Rename YaEditController2 to YaEditController
...
Adding versions to our implementations doesn't work when the versions
and extensions start becoming non-numerical. This is what happened with
`IComponentHandler`.
2020-12-19 13:49:00 +01:00
Robbert van der Helm
1ede385784
Clean up YaHostApplication
2020-12-19 13:40:37 +01:00
Robbert van der Helm
71493299ec
Implement IConnectionPoint::disconnect
2020-12-19 13:07:58 +01:00
Robbert van der Helm
43f5e65b45
Implement IEditController::setParamNormalized()
2020-12-18 21:53:13 +01:00
Robbert van der Helm
bc0c13778f
Implement IEditController::getParamNormalized()
2020-12-18 21:53:04 +01:00
Robbert van der Helm
fcbf198fee
Implement IEditController::plainParamToNormalized
2020-12-18 21:36:39 +01:00
Robbert van der Helm
78d5e3bbfb
Implement IEditController::normalizedValueToPlain
2020-12-18 21:36:39 +01:00
Robbert van der Helm
a4e2a18480
Implement IEditController::getParamValueByString()
2020-12-18 21:36:39 +01:00
Robbert van der Helm
d99f880277
Rename YaHostApplication implementation
...
The context should make it obvious where it's implemented, and with the
current design we only an implementation on one of the two sides.
2020-12-18 21:36:39 +01:00
Robbert van der Helm
cfa4849467
Partially implement IConnectionPoint::connect()
...
This now works for direct connections, which is probably how most hosts
will use this.
2020-12-18 14:09:20 +01:00
Robbert van der Helm
381ca253c1
Fix uninitialized seek position in VectorStream
2020-12-18 12:53:51 +01:00
Robbert van der Helm
68c7b9b081
Destroy VST3 objects within the main IO context
2020-12-17 23:32:56 +01:00
Robbert van der Helm
585d1e736c
Implement IEditController::getParamStringByValue()
2020-12-17 22:44:13 +01:00
Robbert van der Helm
ccc5688f0c
Implement IEditController::getParameterInfo()
2020-12-17 22:16:20 +01:00
Robbert van der Helm
4cc24f74d1
Implement IEditController::getParameterCount()
2020-12-17 21:55:12 +01:00
Robbert van der Helm
7eb7e87953
Implement IEditController::setComponentState()
2020-12-17 21:50:04 +01:00
Robbert van der Helm
b2cee1e750
Rename PluginObject to InstanceInterfaces
...
To make it a bit clearer that this is a holder of interface smart
pointers.
2020-12-17 17:54:57 +01:00
Robbert van der Helm
fe2de8de8d
Unify handling for *::{get,set}State
...
Since these functions are exactly the same, and for whatever reason they
didn't just add them to the `IPluginBase` both `IComponent` and
`IEditController`. inherit from
2020-12-17 17:52:51 +01:00
Robbert van der Helm
d8694b062b
Add IEditController to the PluginObject interfaces
2020-12-17 17:51:47 +01:00
Robbert van der Helm
286023bc22
Allow creating IEditController instances
...
Now `IPluginFactory::createInstance()` can create multiple (and in our
case, all relevant) different types of objects.
2020-12-17 17:01:26 +01:00
Robbert van der Helm
a5834cd438
Replace ComponentInstance with a generic variant
...
This allows casting to supported interface from an FUnknown.
2020-12-17 13:47:43 +01:00
Robbert van der Helm
11bf7532fa
Rename the monolitic class to Vst3PluginProxy
...
Now it's starting to look promising.
2020-12-17 13:07:42 +01:00
Robbert van der Helm
d8b2646563
Split off IComponent and create a monolithic class
...
We can now use implement all VST3 plugin interfaces through this class,
check whether the object from the plugin also supports these classes,
and then conditionally allow casting to the supported classes. This
should give us a one-to-one proxy of the original object.
2020-12-17 12:49:33 +01:00