Store host pointer in the plugin proxy

This commit is contained in:
Robbert van der Helm
2022-09-09 14:54:13 +02:00
parent c98ca66838
commit 82e552098a
3 changed files with 12 additions and 3 deletions
@@ -85,7 +85,7 @@ clap_plugin_factory_proxy::plugin_factory_create_plugin(
// correct plugin instance, and callbacks made from the plugin to the
// correct host instance.
self->bridge_.register_plugin_proxy(std::make_unique<clap_plugin_proxy>(
self->bridge_, *response.instance_id, *descriptor));
self->bridge_, *response.instance_id, *descriptor, host));
const auto& [plugin_proxy, _] =
self->bridge_.get_proxy(*response.instance_id);
@@ -20,10 +20,12 @@
clap_plugin_proxy::clap_plugin_proxy(ClapPluginBridge& bridge,
size_t instance_id,
clap::plugin::Descriptor descriptor)
clap::plugin::Descriptor descriptor,
const clap_host_t* host)
: bridge_(bridge),
instance_id_(instance_id),
descriptor_(std::move(descriptor)),
host_(host),
plugin_vtable_(clap_plugin_t{
.desc = descriptor_.get(),
.plugin_data = this,
+8 -1
View File
@@ -38,7 +38,8 @@ class clap_plugin_proxy {
*/
clap_plugin_proxy(ClapPluginBridge& bridge,
size_t instance_id,
clap::plugin::Descriptor descriptor);
clap::plugin::Descriptor descriptor,
const clap_host_t* host);
clap_plugin_proxy(const clap_plugin_proxy&) = delete;
clap_plugin_proxy& operator=(const clap_plugin_proxy&) = delete;
@@ -82,6 +83,12 @@ class clap_plugin_proxy {
size_t instance_id_;
clap::plugin::Descriptor descriptor_;
/**
* The `clap_host_t*` passed when creating the instance. Any callbacks made
* by the proxied plugin instance must go through ere.
*/
const clap_host_t* host_;
/**
* The vtable for `clap_plugin`, requires that this object is never moved or
* copied. We'll use the host data pointer instead of placing this vtable at