From cbb6b36f52f12ad2e4e768c1a92ebc8b145e8da1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduard=20M=C3=BCller?= Date: Thu, 16 Apr 2026 18:24:31 +0200 Subject: [PATCH] Fix some missing VST3 PClassInfo2 properties - set missing `vendor` and `subCategories` properties in PClassInfo2 - set missing `vendor` properties in PClassInfoW --- plinth-plugin/src/formats/vst3/factory.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/plinth-plugin/src/formats/vst3/factory.rs b/plinth-plugin/src/formats/vst3/factory.rs index 79ec9ae..f909abd 100644 --- a/plinth-plugin/src/formats/vst3/factory.rs +++ b/plinth-plugin/src/formats/vst3/factory.rs @@ -22,7 +22,7 @@ impl Factory

{ .to_com_ptr::() .unwrap() .into_raw() as _ - } + } } impl vst3::Class for Factory

{ @@ -112,11 +112,19 @@ impl IPluginFactory2Trait for Factory

{ copy_u128_to_char8(&P::CLASS_ID, &mut local_info.cid); copy_str_to_char8(P::NAME, &mut local_info.name); + copy_str_to_char8(P::VENDOR, &mut local_info.vendor); copy_str_to_char8(P::VERSION, &mut local_info.version); copy_str_to_char8("Audio Module Class", &mut local_info.category); copy_str_to_char8(unsafe { CStr::from_ptr(SDKVersionString).to_str().unwrap() }, &mut local_info.sdkVersion); + let subcategory_string = P::SUBCATEGORIES + .iter() + .map(|subcategory| subcategory.to_str()) + .collect::>() + .join("|"); + copy_str_to_char8(&subcategory_string, &mut local_info.subCategories); + // We have to do a workaround like this for FL Studio which is giving us unaligned addresses unsafe { std::ptr::write_unaligned(info, local_info) }; @@ -136,6 +144,7 @@ impl IPluginFactory3Trait for Factory

{ copy_u128_to_char8(&P::CLASS_ID, &mut local_info.cid); copy_str_to_char16(P::NAME, &mut local_info.name); + copy_str_to_char16(P::VENDOR, &mut local_info.vendor); copy_str_to_char16(P::VERSION, &mut local_info.version); copy_str_to_char8("Audio Module Class", &mut local_info.category);