Implement IConnectionPoint::disconnect

This commit is contained in:
Robbert van der Helm
2020-12-19 12:39:08 +01:00
parent 8251249959
commit 71493299ec
8 changed files with 63 additions and 5 deletions
+1
View File
@@ -76,6 +76,7 @@ using ControlRequest = std::variant<Vst3PluginProxy::Construct,
YaComponent::ActivateBus,
YaComponent::SetActive,
YaConnectionPoint::Connect,
YaConnectionPoint::Disconnect,
YaEditController2::SetComponentState,
YaEditController2::GetParameterCount,
YaEditController2::GetParameterInfo,
+1 -1
View File
@@ -23,7 +23,7 @@ VST3 host interfaces are implemented as follows:
| ------------------- | ------------------ |
| `YaHostApplication` | `IHostApplication` |
The following (host) interfaces are also implemented fur serialization purposes:
The following (host) interfaces are also implemented for serialization purposes:
| yabridge class | Interfaces | Notes |
| -------------------- | ------------------- | ---------------------------------------------------------------------- |
@@ -70,6 +70,8 @@ class YaConnectionPoint : public Steinberg::Vst::IConnectionPoint {
/**
* Message to pass through a call to
* `IConnectionPoint::connect(other_instance_id)` to the Wine plugin host.
* At the moment this is only implemented for directly connecting objects
* created by the plugin without any proxies in between them.
*/
struct Connect {
using Response = UniversalTResult;
@@ -91,6 +93,31 @@ class YaConnectionPoint : public Steinberg::Vst::IConnectionPoint {
};
virtual tresult PLUGIN_API connect(IConnectionPoint* other) override = 0;
/**
* Message to pass through a call to
* `IConnectionPoint::disconnect(other_instance_id)` to the Wine plugin
* host. At the moment this is only implemented for directly connecting
* objects created by the plugin without any proxies in between them.
*/
struct Disconnect {
using Response = UniversalTResult;
native_size_t instance_id;
/**
* The other object backed by a `Vst3PluginProxy` this object was
* connected to and should be disconnected from. When connecting.
*/
native_size_t other_instance_id;
template <typename S>
void serialize(S& s) {
s.value8b(instance_id);
s.value8b(other_instance_id);
}
};
virtual tresult PLUGIN_API disconnect(IConnectionPoint* other) override = 0;
virtual tresult PLUGIN_API
notify(Steinberg::Vst::IMessage* message) override = 0;