Don't serialize input size for IPlugView::GetSize

This commit is contained in:
Robbert van der Helm
2021-02-12 18:58:19 +01:00
parent 3e24610d81
commit 5978247a0b
4 changed files with 13 additions and 17 deletions
+4 -4
View File
@@ -1571,10 +1571,10 @@ void Vst3Logger::log_response(bool is_host_vst,
log_response_base(is_host_vst, [&](auto& message) { log_response_base(is_host_vst, [&](auto& message) {
message << response.result.string(); message << response.result.string();
if (response.result == Steinberg::kResultOk) { if (response.result == Steinberg::kResultOk) {
message << ", <ViewRect* with left = " << response.updated_size.left message << ", <ViewRect* with left = " << response.size.left
<< ", top = " << response.updated_size.top << ", top = " << response.size.top
<< ", right = " << response.updated_size.right << ", right = " << response.size.right
<< ", bottom = " << response.updated_size.bottom << ">"; << ", bottom = " << response.size.bottom << ">";
} }
}); });
} }
@@ -210,12 +210,12 @@ class YaPlugView : public Steinberg::IPlugView {
*/ */
struct GetSizeResponse { struct GetSizeResponse {
UniversalTResult result; UniversalTResult result;
Steinberg::ViewRect updated_size; Steinberg::ViewRect size;
template <typename S> template <typename S>
void serialize(S& s) { void serialize(S& s) {
s.object(result); s.object(result);
s.object(updated_size); s.object(size);
} }
}; };
@@ -227,12 +227,9 @@ class YaPlugView : public Steinberg::IPlugView {
native_size_t owner_instance_id; native_size_t owner_instance_id;
Steinberg::ViewRect size;
template <typename S> template <typename S>
void serialize(S& s) { void serialize(S& s) {
s.value8b(owner_instance_id); s.value8b(owner_instance_id);
s.object(size);
} }
}; };
@@ -168,11 +168,10 @@ tresult PLUGIN_API Vst3PlugViewProxyImpl::onKeyUp(char16 key,
tresult PLUGIN_API Vst3PlugViewProxyImpl::getSize(Steinberg::ViewRect* size) { tresult PLUGIN_API Vst3PlugViewProxyImpl::getSize(Steinberg::ViewRect* size) {
if (size) { if (size) {
const GetSizeResponse response = const GetSizeResponse response = send_mutually_recursive_message(
send_mutually_recursive_message(YaPlugView::GetSize{ YaPlugView::GetSize{.owner_instance_id = owner_instance_id()});
.owner_instance_id = owner_instance_id(), .size = *size});
*size = response.updated_size; *size = response.size;
return response.result; return response.result;
} else { } else {
+4 -4
View File
@@ -724,16 +724,16 @@ void Vst3Bridge::run() {
[&](YaPlugView::GetSize& request) -> YaPlugView::GetSize::Response { [&](YaPlugView::GetSize& request) -> YaPlugView::GetSize::Response {
// Melda plugins will refuse to open dialogs of this function is // Melda plugins will refuse to open dialogs of this function is
// not run from the GUI thread // not run from the GUI thread
Steinberg::ViewRect size{};
const tresult result = const tresult result =
do_mutual_recursion_or_handle_in_main_context<tresult>( do_mutual_recursion_or_handle_in_main_context<tresult>(
[&]() { [&]() {
return object_instances[request.owner_instance_id] return object_instances[request.owner_instance_id]
.plug_view_instance->plug_view->getSize( .plug_view_instance->plug_view->getSize(&size);
&request.size);
}); });
return YaPlugView::GetSizeResponse{ return YaPlugView::GetSizeResponse{.result = result,
.result = result, .updated_size = std::move(request.size)}; .size = std::move(size)};
}, },
[&](YaPlugView::OnSize& request) -> YaPlugView::OnSize::Response { [&](YaPlugView::OnSize& request) -> YaPlugView::OnSize::Response {
// HACK: This function has to be run from the UI thread since // HACK: This function has to be run from the UI thread since