Better version of previous commit (fa3ae33a1f
)
Since the file-modification timestamp of the module-path is used if the cache is up-to-date, the file must exist. For macOS/X bundles the mandatory file as per VST3 spec is Info.plist
This commit is contained in:
parent
fa3ae33a1f
commit
fa3051fb24
@ -49,8 +49,7 @@ class VST3MacModule : public VST3PluginModule
|
|||||||
public:
|
public:
|
||||||
VST3MacModule (std::string const& module_path)
|
VST3MacModule (std::string const& module_path)
|
||||||
{
|
{
|
||||||
std::string path = Glib::path_get_dirname (module_path); // MacOS
|
std::string path = Glib::path_get_dirname (module_path); // Contents
|
||||||
path = Glib::path_get_dirname (path); // Contents
|
|
||||||
path = Glib::path_get_dirname (path); // theVST.vst3
|
path = Glib::path_get_dirname (path); // theVST.vst3
|
||||||
CFURLRef url = CFURLCreateFromFileSystemRepresentation (0, (const UInt8*)path.c_str (), (CFIndex)path.length (), true);
|
CFURLRef url = CFURLCreateFromFileSystemRepresentation (0, (const UInt8*)path.c_str (), (CFIndex)path.length (), true);
|
||||||
if (url) {
|
if (url) {
|
||||||
|
@ -244,18 +244,23 @@ ARDOUR::module_path_vst3 (string const& path)
|
|||||||
module_path = Glib::build_filename (path, "Contents",
|
module_path = Glib::build_filename (path, "Contents",
|
||||||
vst3_bindir (), PBD::basename_nosuffix (path) + vst3_suffix ());
|
vst3_bindir (), PBD::basename_nosuffix (path) + vst3_suffix ());
|
||||||
}
|
}
|
||||||
if (!Glib::file_test (module_path, Glib::FILE_TEST_IS_REGULAR)) {
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
|
/* Check for "Contents/MacOS/" and "Context/Info.plist".
|
||||||
|
* VST3MacModule calls CFBundleCreate() which handles Info.plist files.
|
||||||
|
* (on macOS/X the binrary name may differ from the bundle name)
|
||||||
|
*/
|
||||||
|
string plist = Glib::build_filename (path, "Contents", "Info.plist");
|
||||||
if (Glib::file_test (Glib::path_get_dirname (module_path), Glib::FILE_TEST_IS_DIR) &&
|
if (Glib::file_test (Glib::path_get_dirname (module_path), Glib::FILE_TEST_IS_DIR) &&
|
||||||
Glib::file_test (Glib::build_filename (path, "Contents", "Info.plist"), Glib::FILE_TEST_IS_REGULAR)) {
|
Glib::file_test (Glib::build_filename (path, "Contents", "Info.plist"), Glib::FILE_TEST_IS_REGULAR)) {
|
||||||
/* Alternatively check for "Contents/MacOS" and an Info.plist file.
|
return plist;
|
||||||
* VST3MacModule calls CFBundleCreate() which handles Info.plist files.
|
} else {
|
||||||
* (this is for plugins that use PACE, the MacOS folder usually
|
cerr << "VST3 not a valid bundle: '" << path << "'\n";
|
||||||
* contains a file <basename> + "Protect").
|
return "";
|
||||||
*/
|
|
||||||
return module_path;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (!Glib::file_test (module_path, Glib::FILE_TEST_IS_REGULAR)) {
|
||||||
cerr << "VST3 not a valid bundle: '" << module_path << "'\n";
|
cerr << "VST3 not a valid bundle: '" << module_path << "'\n";
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user