Further reduce allocations by reusing responses

On the plugin's side, still need to do a lot of work on the Wine side of
things.
This commit is contained in:
Robbert van der Helm
2021-05-07 17:00:43 +02:00
parent fcaac219a6
commit 671587f981
5 changed files with 49 additions and 6 deletions
+18
View File
@@ -462,6 +462,24 @@ class Vst3Sockets : public Sockets {
audio_processor_buffers.at(object_ref.get().instance_id));
}
/**
* Alternative to `send_audio_processor_message()` for use with
* `MessageReference<T>`, where we also want deserialize into an existing
* object to prevent allocations. Used during audio processing.q
*
* TODO: Think of a better name for this
*/
template <typename T>
typename T::Response& receive_audio_processor_message_into(
const MessageReference<T>& request_ref,
typename T::Response& response_ref,
std::optional<std::pair<Vst3Logger&, bool>> logging) {
return audio_processor_sockets.at(request_ref.get().instance_id)
.receive_into(
request_ref, response_ref, logging,
audio_processor_buffers.at(request_ref.get().instance_id));
}
/**
* For sending messages from the host to the plugin. After we have a better
* idea of what our communication model looks like we'll probably want to