mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-06-15 16:03:55 +02:00
Implement IProgramListData on the Wine side
This commit is contained in:
@@ -100,6 +100,9 @@ using ControlRequest = std::variant<Vst3PlugViewProxy::Destruct,
|
|||||||
YaPluginBase::Terminate,
|
YaPluginBase::Terminate,
|
||||||
YaPluginFactory::Construct,
|
YaPluginFactory::Construct,
|
||||||
YaPluginFactory::SetHostContext,
|
YaPluginFactory::SetHostContext,
|
||||||
|
YaProgramListData::ProgramDataSupported,
|
||||||
|
YaProgramListData::GetProgramData,
|
||||||
|
YaProgramListData::SetProgramData,
|
||||||
YaUnitInfo::GetUnitCount,
|
YaUnitInfo::GetUnitCount,
|
||||||
YaUnitInfo::GetUnitInfo,
|
YaUnitInfo::GetUnitInfo,
|
||||||
YaUnitInfo::GetProgramListCount,
|
YaUnitInfo::GetProgramListCount,
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ InstanceInterfaces::InstanceInterfaces(
|
|||||||
edit_controller(object),
|
edit_controller(object),
|
||||||
edit_controller_2(object),
|
edit_controller_2(object),
|
||||||
plugin_base(object),
|
plugin_base(object),
|
||||||
|
program_list_data(object),
|
||||||
unit_info(object) {}
|
unit_info(object) {}
|
||||||
|
|
||||||
Vst3Bridge::Vst3Bridge(MainContext& main_context,
|
Vst3Bridge::Vst3Bridge(MainContext& main_context,
|
||||||
@@ -564,6 +565,28 @@ void Vst3Bridge::run() {
|
|||||||
})
|
})
|
||||||
.get();
|
.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&)
|
[&](const YaPluginFactory::Construct&)
|
||||||
-> YaPluginFactory::Construct::Response {
|
-> YaPluginFactory::Construct::Response {
|
||||||
return YaPluginFactory::ConstructArgs(
|
return YaPluginFactory::ConstructArgs(
|
||||||
|
|||||||
@@ -115,6 +115,7 @@ struct InstanceInterfaces {
|
|||||||
Steinberg::FUnknownPtr<Steinberg::Vst::IEditController> edit_controller;
|
Steinberg::FUnknownPtr<Steinberg::Vst::IEditController> edit_controller;
|
||||||
Steinberg::FUnknownPtr<Steinberg::Vst::IEditController2> edit_controller_2;
|
Steinberg::FUnknownPtr<Steinberg::Vst::IEditController2> edit_controller_2;
|
||||||
Steinberg::FUnknownPtr<Steinberg::IPluginBase> plugin_base;
|
Steinberg::FUnknownPtr<Steinberg::IPluginBase> plugin_base;
|
||||||
|
Steinberg::FUnknownPtr<Steinberg::Vst::IProgramListData> program_list_data;
|
||||||
Steinberg::FUnknownPtr<Steinberg::Vst::IUnitInfo> unit_info;
|
Steinberg::FUnknownPtr<Steinberg::Vst::IUnitInfo> unit_info;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user