Commit Graph

381 Commits

Author SHA1 Message Date
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