Robbert van der Helm
096171bb96
Use the known_iids mechanism for IComponent
2020-12-14 12:48:21 +01:00
Robbert van der Helm
e653142e45
Implement IComponent::getState()
...
With this the basic IComponent interface is fully implemented. Next will
be `IAudioProcessor` and `IConnectionPoint` as additions to IComponent.
We'll use the same `known_iids` mechanism as used in the plugin factory.
2020-12-14 12:38:35 +01:00
Robbert van der Helm
02e6fb1ba8
Add a way to write a VectorStream back
2020-12-14 12:24:09 +01:00
Robbert van der Helm
816d1c1501
Implement IComponent::setState()
2020-12-14 12:09:47 +01:00
Robbert van der Helm
c463543ac9
Implement a serializable vector based IBStream
...
We can now use this for implementing reading and writing preset data.
2020-12-14 00:02:31 +01:00
Robbert van der Helm
7341fab0ea
Implement IComponent::setActive()
2020-12-13 22:17:06 +01:00
Robbert van der Helm
43296675f6
Implement IComponent::activateBus()
2020-12-13 22:07:45 +01:00
Robbert van der Helm
5b6a8ebfac
Implement IComponent::getRoutingInfo()
2020-12-13 21:51:56 +01:00
Robbert van der Helm
9df812952e
Implement IComponent::GetBusInfo()
2020-12-13 16:56:09 +01:00
Robbert van der Helm
34b2fa8905
Implement IComponent::getBusCount()
2020-12-13 16:18:13 +01:00
Robbert van der Helm
116b618ac5
Implement IComponent::setIoMode()
2020-12-13 16:12:30 +01:00
Robbert van der Helm
32c1028736
Implement IPluginFactory3::setHostContext()
...
Now the plugin factories are fully implemented (at least, functionality
wise, we still can't create most kinds of objects).
2020-12-13 15:53:39 +01:00
Robbert van der Helm
0c64aabeea
Add a partial YaHostApplication implementation
2020-12-13 14:46:17 +01:00
Robbert van der Helm
e21ee31ee8
Implement plugin side of IPluginBase::initialize()
2020-12-13 14:30:51 +01:00
Robbert van der Helm
e8929e5e43
Make the UTF-16 conversion a bit safer
2020-12-13 13:53:53 +01:00
Robbert van der Helm
919987298c
Add the base for YaHostApplication
2020-12-13 13:46:00 +01:00
Robbert van der Helm
d9989fe856
Update the VST3 architecture document
2020-12-13 12:32:49 +01:00
Robbert van der Helm
39984ad442
Use the new approach for creating plugin factory
...
Directly serializing and deserializing into objects was and more
boilerplate heavy (since we now need two implementations even though we
only use one), and also much less flexible because we can't wrap
payloads in structs or provide optional values that way.
2020-12-12 21:53:38 +01:00
Robbert van der Helm
efc840a51a
Log unknown interfaces in IComponent::initialize()
2020-12-12 16:53:44 +01:00
Robbert van der Helm
f637e6ad18
Rename Create/Destroy to Construct/Destruct
...
This is less likely to clash with names used by interfaces and it's a
bit clearer what's going on (since they are basically proxies for
constructors and destructors).
2020-12-12 16:18:47 +01:00
Robbert van der Helm
1088483f15
Mention destructors in VST3 implementation docs
2020-12-12 16:18:47 +01:00
Robbert van der Helm
68084bc555
Implement IComponent::terminate()
2020-12-12 16:18:47 +01:00
Robbert van der Helm
d80ba10f06
Interleave structs with their related functions
...
Might make it a bit more organized when this is fully implemented.
2020-12-12 16:04:35 +01:00
Robbert van der Helm
f526ae3e39
Add a string representation for universal tresult
2020-12-11 23:57:24 +01:00
Robbert van der Helm
e24cecc6d7
Use the univeral tresult in IComponent creation
2020-12-11 23:54:30 +01:00
Robbert van der Helm
91a47a466c
Create a universal wrapper around tvalue
2020-12-11 23:34:23 +01:00
Robbert van der Helm
699ddfd2ea
Implement YaComponentPluginImpl destructor
...
When the object gets dropped through the reference counting system, the
object should also be dropped in the Wine plugin host.
2020-12-11 22:59:32 +01:00
Robbert van der Helm
cdb9dae2df
Rename YaComponent::Arguments to CreateArgs
2020-12-11 22:43:12 +01:00
Robbert van der Helm
225056bcff
Allow instantiating IComponents
2020-12-08 23:08:07 +01:00
Robbert van der Helm
2e6184171c
Use std::array for serializing UIDs
...
These are easily assignable and we have to convert between char
pointers, char arrays and UID objects all the time anyways.
2020-12-08 23:00:44 +01:00
Robbert van der Helm
7828fc7bef
Update the VST3 interface instantiation docs
2020-12-08 18:22:44 +01:00
Robbert van der Helm
5eb1fe2de2
Redesign how interface instantiation works
...
Transferring some argument pack is much easier than trying to
deserialize into an existing object when you also have to transfer more
information than just that object.
2020-12-08 17:33:51 +01:00
Robbert van der Helm
f4a5aa91fb
Document the plugin factory approach
2020-12-08 14:21:54 +01:00
Robbert van der Helm
ed743e6f22
Bundle associated messages with their interfaces
...
Once we start implementing all of the control messages/callbacks things
could quickly get out of hand otherwise.
2020-12-08 11:25:58 +01:00
Robbert van der Helm
5e85517130
Add the base for an IComponent implementation
2020-12-07 23:52:17 +01:00
Robbert van der Helm
d79bc3b936
Don't use STL smart pointers with VST3 interfaces
...
This would cause double frees since those objects are supposed to clean
up after themselves.
2020-12-07 18:28:17 +01:00
Robbert van der Helm
75e8cf9140
Add notes on things that can potentially go wrong
2020-12-07 18:28:17 +01:00
Robbert van der Helm
547b11e8ba
Remove interface filtering from the plugin factory
...
This doesn't work that way, and CIDs really are class IDs (good thing
that everything's documented, oh right).
2020-12-07 18:28:17 +01:00
Robbert van der Helm
79c6f02d91
Request and deserialize plugin factory from plugin
2020-12-07 18:28:16 +01:00
Robbert van der Helm
3be5836c07
Log and ignore unsupported interfaces
2020-12-07 18:28:16 +01:00
Robbert van der Helm
5f14958146
Implement IpluginFactory3::getClassInfoUnicode
2020-12-07 18:28:16 +01:00
Robbert van der Helm
ef3f82e00f
Implement IpluginFactory2::getClassInfo2
2020-12-07 18:28:16 +01:00
Robbert van der Helm
049eb257c5
Make YaPluginFactory abstract
...
And add separate implementations for the native plugin and the Wine
plugin host. This way we can easily allow the native host to do
callbacks without having to manage a load of lambdas.
2020-12-07 18:28:16 +01:00
Robbert van der Helm
1db3c0371f
Expand on the VST3 implementation readme
2020-12-07 18:28:16 +01:00
Robbert van der Helm
dd48523183
Implement IPluginFactory::getClassInfo
2020-12-07 18:28:16 +01:00
Robbert van der Helm
e6da03ae84
Implement IPluginFactory::countClasses()
2020-12-07 18:28:16 +01:00
Robbert van der Helm
79df8fecc2
Serialize the factory info
2020-12-07 18:28:16 +01:00
Robbert van der Helm
fa10600114
Add more thoughts on how the factory should work
2020-12-07 18:28:16 +01:00
Robbert van der Helm
82c1542b74
Add boilerplate for copying factory interfaces
2020-12-07 18:28:16 +01:00
Robbert van der Helm
8f152c7af5
Clean up the query interface serialization
2020-12-07 18:28:16 +01:00