mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-09 20:29:10 +02:00
Fully implement XmlRepresentationController
This commit is contained in:
@@ -132,7 +132,8 @@ using ControlRequest =
|
|||||||
YaUnitInfo::GetSelectedUnit,
|
YaUnitInfo::GetSelectedUnit,
|
||||||
YaUnitInfo::SelectUnit,
|
YaUnitInfo::SelectUnit,
|
||||||
YaUnitInfo::GetUnitByBus,
|
YaUnitInfo::GetUnitByBus,
|
||||||
YaUnitInfo::SetUnitProgramData>;
|
YaUnitInfo::SetUnitProgramData,
|
||||||
|
YaXmlRepresentationController::GetXmlRepresentationStream>;
|
||||||
|
|
||||||
template <typename S>
|
template <typename S>
|
||||||
void serialize(S& s, ControlRequest& payload) {
|
void serialize(S& s, ControlRequest& payload) {
|
||||||
|
|||||||
@@ -792,8 +792,18 @@ Vst3PluginProxyImpl::setUnitProgramData(int32 listOrUnitId,
|
|||||||
tresult PLUGIN_API Vst3PluginProxyImpl::getXmlRepresentationStream(
|
tresult PLUGIN_API Vst3PluginProxyImpl::getXmlRepresentationStream(
|
||||||
Steinberg::Vst::RepresentationInfo& info /*in*/,
|
Steinberg::Vst::RepresentationInfo& info /*in*/,
|
||||||
Steinberg::IBStream* stream /*out*/) {
|
Steinberg::IBStream* stream /*out*/) {
|
||||||
// TODO: Implement
|
if (stream) {
|
||||||
bridge.logger.log(
|
const GetXmlRepresentationStreamResponse response = bridge.send_message(
|
||||||
"TODO: IXmlRepresentationController::getXmlRepresentationStream()");
|
YaXmlRepresentationController::GetXmlRepresentationStream{
|
||||||
return Steinberg::kNotImplemented;
|
.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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,8 @@ InstanceInterfaces::InstanceInterfaces(
|
|||||||
plugin_base(object),
|
plugin_base(object),
|
||||||
unit_data(object),
|
unit_data(object),
|
||||||
program_list_data(object),
|
program_list_data(object),
|
||||||
unit_info(object) {}
|
unit_info(object),
|
||||||
|
xml_representation_controller(object) {}
|
||||||
|
|
||||||
Vst3Bridge::Vst3Bridge(MainContext& main_context,
|
Vst3Bridge::Vst3Bridge(MainContext& main_context,
|
||||||
std::string plugin_dll_path,
|
std::string plugin_dll_path,
|
||||||
@@ -894,6 +895,21 @@ void Vst3Bridge::run() {
|
|||||||
request.program_index,
|
request.program_index,
|
||||||
&request.data);
|
&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)};
|
||||||
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -163,6 +163,8 @@ struct InstanceInterfaces {
|
|||||||
Steinberg::FUnknownPtr<Steinberg::Vst::IUnitData> unit_data;
|
Steinberg::FUnknownPtr<Steinberg::Vst::IUnitData> unit_data;
|
||||||
Steinberg::FUnknownPtr<Steinberg::Vst::IProgramListData> program_list_data;
|
Steinberg::FUnknownPtr<Steinberg::Vst::IProgramListData> program_list_data;
|
||||||
Steinberg::FUnknownPtr<Steinberg::Vst::IUnitInfo> unit_info;
|
Steinberg::FUnknownPtr<Steinberg::Vst::IUnitInfo> unit_info;
|
||||||
|
Steinberg::FUnknownPtr<Steinberg::Vst::IXmlRepresentationController>
|
||||||
|
xml_representation_controller;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user