Implement IProgramListData on the Wine side

This commit is contained in:
Robbert van der Helm
2020-12-29 18:50:17 +01:00
parent 3704ca8cb0
commit 38211d0fb3
3 changed files with 27 additions and 0 deletions
+3
View File
@@ -100,6 +100,9 @@ using ControlRequest = std::variant<Vst3PlugViewProxy::Destruct,
YaPluginBase::Terminate,
YaPluginFactory::Construct,
YaPluginFactory::SetHostContext,
YaProgramListData::ProgramDataSupported,
YaProgramListData::GetProgramData,
YaProgramListData::SetProgramData,
YaUnitInfo::GetUnitCount,
YaUnitInfo::GetUnitInfo,
YaUnitInfo::GetProgramListCount,
+23
View File
@@ -36,6 +36,7 @@ InstanceInterfaces::InstanceInterfaces(
edit_controller(object),
edit_controller_2(object),
plugin_base(object),
program_list_data(object),
unit_info(object) {}
Vst3Bridge::Vst3Bridge(MainContext& main_context,
@@ -564,6 +565,28 @@ void Vst3Bridge::run() {
})
.get();
},
[&](const YaProgramListData::ProgramDataSupported& request)
-> 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(
+1
View File
@@ -115,6 +115,7 @@ struct InstanceInterfaces {
Steinberg::FUnknownPtr<Steinberg::Vst::IEditController> edit_controller;
Steinberg::FUnknownPtr<Steinberg::Vst::IEditController2> edit_controller_2;
Steinberg::FUnknownPtr<Steinberg::IPluginBase> plugin_base;
Steinberg::FUnknownPtr<Steinberg::Vst::IProgramListData> program_list_data;
Steinberg::FUnknownPtr<Steinberg::Vst::IUnitInfo> unit_info;
};