Don't serialize input info for IEditController::getParameterInfo

This commit is contained in:
Robbert van der Helm
2021-02-12 19:01:19 +01:00
parent 5978247a0b
commit 2020acfec1
4 changed files with 12 additions and 15 deletions
+1 -1
View File
@@ -1417,7 +1417,7 @@ void Vst3Logger::log_response(
message << response.result.string(); message << response.result.string();
if (response.result == Steinberg::kResultOk) { if (response.result == Steinberg::kResultOk) {
std::string param_title = std::string param_title =
VST3::StringConvert::convert(response.updated_info.title); VST3::StringConvert::convert(response.info.title);
message << ", <ParameterInfo for '" << param_title << "'>"; message << ", <ParameterInfo for '" << param_title << "'>";
if (from_cache) { if (from_cache) {
message << " (from cache)"; message << " (from cache)";
@@ -118,12 +118,12 @@ class YaEditController : public Steinberg::Vst::IEditController {
*/ */
struct GetParameterInfoResponse { struct GetParameterInfoResponse {
UniversalTResult result; UniversalTResult result;
Steinberg::Vst::ParameterInfo updated_info; Steinberg::Vst::ParameterInfo info;
template <typename S> template <typename S>
void serialize(S& s) { void serialize(S& s) {
s.object(result); s.object(result);
s.object(updated_info); s.object(info);
} }
}; };
@@ -138,13 +138,11 @@ class YaEditController : public Steinberg::Vst::IEditController {
native_size_t instance_id; native_size_t instance_id;
int32 param_index; int32 param_index;
Steinberg::Vst::ParameterInfo info;
template <typename S> template <typename S>
void serialize(S& s) { void serialize(S& s) {
s.value8b(instance_id); s.value8b(instance_id);
s.value4b(param_index); s.value4b(param_index);
s.object(info);
} }
}; };
@@ -490,7 +490,7 @@ tresult PLUGIN_API Vst3PluginProxyImpl::getParameterInfo(
int32 paramIndex, int32 paramIndex,
Steinberg::Vst::ParameterInfo& info /*out*/) { Steinberg::Vst::ParameterInfo& info /*out*/) {
const auto request = YaEditController::GetParameterInfo{ const auto request = YaEditController::GetParameterInfo{
.instance_id = instance_id(), .param_index = paramIndex, .info = info}; .instance_id = instance_id(), .param_index = paramIndex};
// We'll cache this information to work around an issue in REAPER, see // We'll cache this information to work around an issue in REAPER, see
// `parameter_info_cache` // `parameter_info_cache`
@@ -503,8 +503,7 @@ tresult PLUGIN_API Vst3PluginProxyImpl::getParameterInfo(
bridge.logger.log_response( bridge.logger.log_response(
true, true,
YaEditController::GetParameterInfo::Response{ YaEditController::GetParameterInfo::Response{
.result = Steinberg::kResultOk, .result = Steinberg::kResultOk, .info = it->second},
.updated_info = it->second},
true); true);
} }
@@ -516,11 +515,11 @@ tresult PLUGIN_API Vst3PluginProxyImpl::getParameterInfo(
const GetParameterInfoResponse response = bridge.send_message(request); const GetParameterInfoResponse response = bridge.send_message(request);
info = response.updated_info; info = response.info;
{ {
std::lock_guard lock(parameter_info_cache_mutex); std::lock_guard lock(parameter_info_cache_mutex);
parameter_info_cache.parameter_info[paramIndex] = response.updated_info; parameter_info_cache.parameter_info[paramIndex] = response.info;
} }
return response.result; return response.result;
+5 -5
View File
@@ -327,13 +327,13 @@ void Vst3Bridge::run() {
}, },
[&](YaEditController::GetParameterInfo& request) [&](YaEditController::GetParameterInfo& request)
-> YaEditController::GetParameterInfo::Response { -> YaEditController::GetParameterInfo::Response {
const tresult result = Steinberg::Vst::ParameterInfo info{};
object_instances[request.instance_id] const tresult result = object_instances[request.instance_id]
.edit_controller->getParameterInfo(request.param_index, .edit_controller->getParameterInfo(
request.info); request.param_index, info);
return YaEditController::GetParameterInfoResponse{ return YaEditController::GetParameterInfoResponse{
.result = result, .updated_info = std::move(request.info)}; .result = result, .info = std::move(info)};
}, },
[&](const YaEditController::GetParamStringByValue& request) [&](const YaEditController::GetParamStringByValue& request)
-> YaEditController::GetParamStringByValue::Response { -> YaEditController::GetParamStringByValue::Response {