Don't serialize input arrangement for IAudioProcessor::getBusArrangement

This commit is contained in:
Robbert van der Helm
2021-02-12 19:08:51 +01:00
parent d887a2905c
commit e62bd603f9
4 changed files with 11 additions and 15 deletions
+1 -1
View File
@@ -1720,7 +1720,7 @@ void Vst3Logger::log_response(
if (response.result == Steinberg::kResultOk) {
message << ", <SpeakerArrangement: 0b"
<< std::bitset<sizeof(Steinberg::Vst::SpeakerArrangement)>(
response.updated_arr)
response.arr)
<< ">";
}
});
@@ -97,22 +97,22 @@ class YaAudioProcessor : public Steinberg::Vst::IAudioProcessor {
/**
* The response code and written state for a call to
* `IAudioProcessor::getBusArrangement(dir, index, arr)`.
* `IAudioProcessor::getBusArrangement(dir, index, &arr)`.
*/
struct GetBusArrangementResponse {
UniversalTResult result;
Steinberg::Vst::SpeakerArrangement updated_arr;
Steinberg::Vst::SpeakerArrangement arr;
template <typename S>
void serialize(S& s) {
s.object(result);
s.value8b(updated_arr);
s.value8b(arr);
}
};
/**
* Message to pass through a call to
* `IAudioProcessor::getBusArrangement(dir, index, arr)` to the Wine
* `IAudioProcessor::getBusArrangement(dir, index, &arr)` to the Wine
* plugin host.
*/
struct GetBusArrangement {
@@ -122,14 +122,12 @@ class YaAudioProcessor : public Steinberg::Vst::IAudioProcessor {
Steinberg::Vst::BusDirection dir;
int32 index;
Steinberg::Vst::SpeakerArrangement arr;
template <typename S>
void serialize(S& s) {
s.value8b(instance_id);
s.value4b(dir);
s.value4b(index);
s.value8b(arr);
}
};
@@ -110,13 +110,10 @@ tresult PLUGIN_API Vst3PluginProxyImpl::getBusArrangement(
int32 index,
Steinberg::Vst::SpeakerArrangement& arr) {
const GetBusArrangementResponse response =
bridge.send_audio_processor_message(
YaAudioProcessor::GetBusArrangement{.instance_id = instance_id(),
.dir = dir,
.index = index,
.arr = arr});
bridge.send_audio_processor_message(YaAudioProcessor::GetBusArrangement{
.instance_id = instance_id(), .dir = dir, .index = index});
arr = response.updated_arr;
arr = response.arr;
return response.result;
}
+3 -2
View File
@@ -1128,13 +1128,14 @@ size_t Vst3Bridge::register_object_instance(
},
[&](YaAudioProcessor::GetBusArrangement& request)
-> YaAudioProcessor::GetBusArrangement::Response {
Steinberg::Vst::SpeakerArrangement arr{};
const tresult result =
object_instances[request.instance_id]
.audio_processor->getBusArrangement(
request.dir, request.index, request.arr);
request.dir, request.index, arr);
return YaAudioProcessor::GetBusArrangementResponse{
.result = result, .updated_arr = request.arr};
.result = result, .arr = arr};
},
[&](const YaAudioProcessor::CanProcessSampleSize& request)
-> YaAudioProcessor::CanProcessSampleSize::Response {