mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-08 20:40:11 +02:00
Allow serializing CLAP plugin factory list message
This commit is contained in:
@@ -36,8 +36,10 @@
|
||||
* request of type `ClapControlRequest(T)` should send back a `T::Response`.
|
||||
* These messages are for main thread functions.
|
||||
*/
|
||||
// TODO: Remove placeholder, add actual types
|
||||
using ClapMainThreadControlRequest = std::variant<WantsConfiguration>;
|
||||
// FIXME: Remove the `WantsConfiguration`. For some reason bitsery just won't
|
||||
// serialize this without it.
|
||||
using ClapMainThreadControlRequest =
|
||||
std::variant<WantsConfiguration, clap::plugin_factory::List>;
|
||||
|
||||
template <typename S>
|
||||
void serialize(S& s, ClapMainThreadControlRequest& payload) {
|
||||
@@ -117,13 +119,12 @@ struct ClapAudioThreadControlRequest {
|
||||
// TODO: Placeholder
|
||||
using ClapMainThreadCallbackRequest = std::variant<WantsConfiguration>;
|
||||
|
||||
// TODO: Uncomment after changing `ClapMainThreadCallbackRequest`
|
||||
// template <typename S>
|
||||
// void serialize(S& s, ClapMainThreadCallbackRequest& payload) {
|
||||
// // All of the objects in `ClapMainThreadCallbackRequest` should have their own
|
||||
// // serialization function.
|
||||
// s.ext(payload, bitsery::ext::InPlaceVariant{});
|
||||
// }
|
||||
template <typename S>
|
||||
void serialize(S& s, ClapMainThreadCallbackRequest& payload) {
|
||||
// All of the objects in `ClapMainThreadCallbackRequest` should have their
|
||||
// own serialization function.
|
||||
s.ext(payload, bitsery::ext::InPlaceVariant{});
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch the `std::variant<>` from an audio thread request object. This will
|
||||
|
||||
@@ -26,21 +26,27 @@ namespace plugin_factory {
|
||||
/**
|
||||
* The response to the `clap::plugin_factory::list` message defined below.
|
||||
*/
|
||||
struct list_response {
|
||||
std::vector<clap::plugin::descriptor> descriptors;
|
||||
struct ListResponse {
|
||||
/**
|
||||
* The descriptors for the plugins in the factory. This will be a nullopt if
|
||||
* the plugin does not support the plugin factory.
|
||||
*/
|
||||
std::optional<std::vector<clap::plugin::descriptor>> descriptors;
|
||||
|
||||
template <typename S>
|
||||
void serialize(S& s) {
|
||||
s.container(descriptors, 8192);
|
||||
s.ext(descriptors, bitsery::ext::InPlaceOptional{},
|
||||
[](S& s, auto& v) { s.container(v, 8192); });
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Message combining `clap_plugin_factory::count()` with
|
||||
* `clap_plugin_factory::get()` to get all plugin descriptors in one go.
|
||||
* `clap_plugin_factory::get()` to get all plugin descriptors in one go. Will
|
||||
* return a nullopt if the plugin does not support the plugin factory.
|
||||
*/
|
||||
struct list {
|
||||
using Response = list_response;
|
||||
struct List {
|
||||
using Response = ListResponse;
|
||||
|
||||
// Since we send this to a specific CLAP plugin library, there are no
|
||||
// parameters here
|
||||
|
||||
Reference in New Issue
Block a user