Fully implement XmlRepresentationController

This commit is contained in:
Robbert van der Helm
2021-01-08 18:02:43 +01:00
parent ec1149e5ce
commit 2fc7621aee
4 changed files with 35 additions and 6 deletions
+2 -1
View File
@@ -132,7 +132,8 @@ using ControlRequest =
YaUnitInfo::GetSelectedUnit,
YaUnitInfo::SelectUnit,
YaUnitInfo::GetUnitByBus,
YaUnitInfo::SetUnitProgramData>;
YaUnitInfo::SetUnitProgramData,
YaXmlRepresentationController::GetXmlRepresentationStream>;
template <typename S>
void serialize(S& s, ControlRequest& payload) {
+14 -4
View File
@@ -792,8 +792,18 @@ Vst3PluginProxyImpl::setUnitProgramData(int32 listOrUnitId,
tresult PLUGIN_API Vst3PluginProxyImpl::getXmlRepresentationStream(
Steinberg::Vst::RepresentationInfo& info /*in*/,
Steinberg::IBStream* stream /*out*/) {
// TODO: Implement
bridge.logger.log(
"TODO: IXmlRepresentationController::getXmlRepresentationStream()");
return Steinberg::kNotImplemented;
if (stream) {
const GetXmlRepresentationStreamResponse response = bridge.send_message(
YaXmlRepresentationController::GetXmlRepresentationStream{
.instance_id = instance_id(), .info = info});
response.stream.write_back(stream);
return response.result;
} else {
bridge.logger.log(
"WARNING: Null pointer passed to "
"'IXmlRepresentationController::getXmlRepresentationStream()'");
return Steinberg::kInvalidArgument;
}
}
+17 -1
View File
@@ -50,7 +50,8 @@ InstanceInterfaces::InstanceInterfaces(
plugin_base(object),
unit_data(object),
program_list_data(object),
unit_info(object) {}
unit_info(object),
xml_representation_controller(object) {}
Vst3Bridge::Vst3Bridge(MainContext& main_context,
std::string plugin_dll_path,
@@ -894,6 +895,21 @@ void Vst3Bridge::run() {
request.program_index,
&request.data);
},
[&](YaXmlRepresentationController::GetXmlRepresentationStream&
request) -> YaXmlRepresentationController::
GetXmlRepresentationStream::Response {
VectorStream stream{};
const tresult result =
object_instances[request.instance_id]
.xml_representation_controller
->getXmlRepresentationStream(
request.info, &stream);
return YaXmlRepresentationController::
GetXmlRepresentationStreamResponse{
.result = result,
.stream = std::move(stream)};
},
});
}
+2
View File
@@ -163,6 +163,8 @@ struct InstanceInterfaces {
Steinberg::FUnknownPtr<Steinberg::Vst::IUnitData> unit_data;
Steinberg::FUnknownPtr<Steinberg::Vst::IProgramListData> program_list_data;
Steinberg::FUnknownPtr<Steinberg::Vst::IUnitInfo> unit_info;
Steinberg::FUnknownPtr<Steinberg::Vst::IXmlRepresentationController>
xml_representation_controller;
};
/**