Fully implement the CLAP tail extension

Trivial extension, but this required us to be able to send audio thread
callbacks first.
This commit is contained in:
Robbert van der Helm
2022-09-26 17:57:49 +02:00
parent 53c9fbb376
commit de028faf70
13 changed files with 91 additions and 29 deletions
+13 -2
View File
@@ -32,7 +32,9 @@ ClapPluginExtensions::ClapPluginExtensions(const clap_plugin& plugin) noexcept
note_ports(static_cast<const clap_plugin_note_ports_t*>(
plugin.get_extension(&plugin, CLAP_EXT_NOTE_PORTS))),
params(static_cast<const clap_plugin_params_t*>(
plugin.get_extension(&plugin, CLAP_EXT_PARAMS))) {}
plugin.get_extension(&plugin, CLAP_EXT_PARAMS))),
tail(static_cast<const clap_plugin_tail_t*>(
plugin.get_extension(&plugin, CLAP_EXT_TAIL))) {}
ClapPluginExtensions::ClapPluginExtensions() noexcept {}
@@ -41,7 +43,8 @@ clap::plugin::SupportedPluginExtensions ClapPluginExtensions::supported()
return clap::plugin::SupportedPluginExtensions{
.supports_audio_ports = audio_ports != nullptr,
.supports_note_ports = note_ports != nullptr,
.supports_params = params != nullptr};
.supports_params = params != nullptr,
.supports_tail = tail != nullptr};
}
ClapPluginInstance::ClapPluginInstance(
@@ -660,6 +663,14 @@ void ClapBridge::register_plugin_instance(
return clap::ext::params::plugin::FlushResponse{};
},
[&](const clap::ext::tail::plugin::Get& request)
-> clap::ext::tail::plugin::Get::Response {
const auto& [instance, _] =
get_instance(request.instance_id);
return instance.extensions.tail->get(
instance.plugin.get());
},
});
});