From 38211d0fb374c49fcd6af94937b3147dd30c3708 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Tue, 29 Dec 2020 18:50:17 +0100 Subject: [PATCH] Implement IProgramListData on the Wine side --- src/common/serialization/vst3.h | 3 +++ src/wine-host/bridges/vst3.cpp | 23 +++++++++++++++++++++++ src/wine-host/bridges/vst3.h | 1 + 3 files changed, 27 insertions(+) diff --git a/src/common/serialization/vst3.h b/src/common/serialization/vst3.h index 5452a09e..9ae4dec4 100644 --- a/src/common/serialization/vst3.h +++ b/src/common/serialization/vst3.h @@ -100,6 +100,9 @@ using ControlRequest = std::variant YaProgramListData::ProgramDataSupported::Response { + return object_instances[request.instance_id] + .program_list_data->programDataSupported(request.list_id); + }, + [&](const YaProgramListData::GetProgramData& request) + -> YaProgramListData::GetProgramData::Response { + VectorStream data{}; + const tresult result = + object_instances[request.instance_id] + .program_list_data->getProgramData( + request.list_id, request.program_index, &data); + + return YaProgramListData::GetProgramDataResponse{ + .result = result, .data = std::move(data)}; + }, + [&](YaProgramListData::SetProgramData& request) + -> YaProgramListData::SetProgramData::Response { + return object_instances[request.instance_id] + .program_list_data->setProgramData( + request.list_id, request.program_index, &request.data); + }, [&](const YaPluginFactory::Construct&) -> YaPluginFactory::Construct::Response { return YaPluginFactory::ConstructArgs( diff --git a/src/wine-host/bridges/vst3.h b/src/wine-host/bridges/vst3.h index f159090b..f674b199 100644 --- a/src/wine-host/bridges/vst3.h +++ b/src/wine-host/bridges/vst3.h @@ -115,6 +115,7 @@ struct InstanceInterfaces { Steinberg::FUnknownPtr edit_controller; Steinberg::FUnknownPtr edit_controller_2; Steinberg::FUnknownPtr plugin_base; + Steinberg::FUnknownPtr program_list_data; Steinberg::FUnknownPtr unit_info; };