mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-14 12:30:00 +02:00
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.
This commit is contained in:
@@ -5,22 +5,27 @@ TODO: After merging into master, update this link to just point to GitHub
|
||||
See [docs/vst3.md](../../../../docs/vst3.md) for more information on how the
|
||||
serialization works.
|
||||
|
||||
VST3 interfaces are implemented as follows:
|
||||
VST3 plugin interfaces are implemented as follows:
|
||||
|
||||
| Yabridge class | Included in | Interfaces |
|
||||
| yabridge class | Included in | Interfaces |
|
||||
| ------------------- | ----------------- | ------------------------------------------------------ |
|
||||
| `YaPluginFactory` | | `IPluginFactory`, `IPluginFactory2`, `IPluginFactory3` |
|
||||
| `Vst3PluginProxy` | | All of the below: |
|
||||
| `YaAudioProcessor` | `Vst3PluginProxy` | `IAudioProcessor` |
|
||||
| `YaComponent` | `Vst3PluginProxy` | `IComponent` |
|
||||
| `YaConnectionPoint` | `Vst3PluginProxy` | `IConnectionPoint` |
|
||||
| `YaEditController` | `Vst3PluginProxy` | `IEditController`, `IEditController2` |
|
||||
| `YaPluginBase` | `Vst3PluginProxy` | `IPluginBase` |
|
||||
| `YaHostApplication` | | `iHostAPplication` |
|
||||
| `YaPluginFactory` | | `IPluginFactory`, `IPluginFactory2`, `IPluginFactory3` |
|
||||
|
||||
The following interfaces are implemented purely fur serialization purposes:
|
||||
VST3 host interfaces are implemented as follows:
|
||||
|
||||
| Yabridge class | Interfaces | Notes |
|
||||
| yabridge class | Interfaces |
|
||||
| ------------------- | ------------------ |
|
||||
| `YaHostApplication` | `IHostApplication` |
|
||||
|
||||
The following (host) interfaces are also implemented fur serialization purposes:
|
||||
|
||||
| yabridge class | Interfaces | Notes |
|
||||
| -------------------- | ------------------- | ---------------------------------------------------------------------- |
|
||||
| `YaEventList` | `IEventList` | Comes with a lot of serialization wrappers around the related structs. |
|
||||
| `YaParameterChanges` | `IParameterChanges` | |
|
||||
|
||||
@@ -95,9 +95,9 @@ class YaHostApplication : public Steinberg::Vst::IHostApplication {
|
||||
|
||||
/**
|
||||
* The lifetime of this object should be bound to the object we created it
|
||||
* for. When for instance the `IComponent` instance with id `x` gets dropped
|
||||
* and we also track a `YaHostApplicationHostImpl` for the component with
|
||||
* instance id `x`, then that should also be dropped.
|
||||
* for. When for instance the `Vst3PluginProxy` instance with id `n` gets
|
||||
* dropped and we also track a `YaHostApplicationImpl` for the component
|
||||
* with instance id `n`, then that should also be dropped.
|
||||
*/
|
||||
virtual ~YaHostApplication();
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
#include <iostream>
|
||||
|
||||
YaHostApplicationHostImpl::YaHostApplicationHostImpl(
|
||||
YaHostApplicationImpl::YaHostApplicationImpl(
|
||||
Vst3Bridge& bridge,
|
||||
YaHostApplication::ConstructArgs&& args)
|
||||
: YaHostApplication(std::move(args)), bridge(bridge) {
|
||||
@@ -27,8 +27,9 @@ YaHostApplicationHostImpl::YaHostApplicationHostImpl(
|
||||
}
|
||||
|
||||
tresult PLUGIN_API
|
||||
YaHostApplicationHostImpl::queryInterface(const Steinberg::TUID _iid,
|
||||
void** obj) {
|
||||
YaHostApplicationImpl::queryInterface(const Steinberg::TUID _iid, void** obj) {
|
||||
// I don't think it's expected of a host to implement multiple interfaces on
|
||||
// this object, so if we do get a call here it's important that it's logged
|
||||
// TODO: Successful queries should also be logged
|
||||
const tresult result = YaHostApplication::queryInterface(_iid, obj);
|
||||
if (result != Steinberg::kResultOk) {
|
||||
@@ -39,10 +40,9 @@ YaHostApplicationHostImpl::queryInterface(const Steinberg::TUID _iid,
|
||||
return result;
|
||||
}
|
||||
|
||||
tresult PLUGIN_API
|
||||
YaHostApplicationHostImpl::createInstance(Steinberg::TUID cid,
|
||||
Steinberg::TUID _iid,
|
||||
void** obj) {
|
||||
tresult PLUGIN_API YaHostApplicationImpl::createInstance(Steinberg::TUID cid,
|
||||
Steinberg::TUID _iid,
|
||||
void** obj) {
|
||||
// TODO: Implement
|
||||
std::cerr << "TODO: IHostApplication::createInstance()" << std::endl;
|
||||
return Steinberg::kNotImplemented;
|
||||
|
||||
@@ -20,9 +20,9 @@
|
||||
|
||||
#include "../vst3.h"
|
||||
|
||||
class YaHostApplicationHostImpl : public YaHostApplication {
|
||||
class YaHostApplicationImpl : public YaHostApplication {
|
||||
public:
|
||||
YaHostApplicationHostImpl(Vst3Bridge& bridge,
|
||||
YaHostApplicationImpl(Vst3Bridge& bridge,
|
||||
YaHostApplication::ConstructArgs&& args);
|
||||
|
||||
/**
|
||||
|
||||
@@ -298,14 +298,15 @@ void Vst3Bridge::run() {
|
||||
// If we got passed a host context, we'll create a proxy object
|
||||
// and pass that to the initialize function. This object should
|
||||
// be cleaned up again during `Vst3PluginProxy::Destruct`.
|
||||
// TODO: This needs changing when we get to `Vst3HostProxy`
|
||||
// TODO: This needs changing if it turns out we need a
|
||||
// `Vst3HostProxy`
|
||||
// TODO: Does this have to be run from the UI thread? Figure out
|
||||
// if it does
|
||||
Steinberg::FUnknown* context = nullptr;
|
||||
if (request.host_application_context_args) {
|
||||
object_instances[request.instance_id]
|
||||
.hsot_application_context =
|
||||
Steinberg::owned(new YaHostApplicationHostImpl(
|
||||
Steinberg::owned(new YaHostApplicationImpl(
|
||||
*this,
|
||||
std::move(*request.host_application_context_args)));
|
||||
context = object_instances[request.instance_id]
|
||||
@@ -328,7 +329,7 @@ void Vst3Bridge::run() {
|
||||
[&](YaPluginFactory::SetHostContext& request)
|
||||
-> YaPluginFactory::SetHostContext::Response {
|
||||
plugin_factory_host_application_context =
|
||||
Steinberg::owned(new YaHostApplicationHostImpl(
|
||||
Steinberg::owned(new YaHostApplicationImpl(
|
||||
*this,
|
||||
std::move(request.host_application_context_args)));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user