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);