| @@ -396,20 +396,74 @@ int main(int argc, char* argv[]) | |||||
| // --------------------------------------------------------------------- | // --------------------------------------------------------------------- | ||||
| // Set client name | // Set client name | ||||
| CarlaString clientName(name != nullptr ? name : label); | |||||
| CarlaString clientName; | |||||
| // LV2 URI is not usable as client name | |||||
| //if (itype == CarlaBackend::PLUGIN_LV2 && clientName == label) | |||||
| if (name != nullptr) | |||||
| { | { | ||||
| clientName = name; | |||||
| } | } | ||||
| else if (itype == CarlaBackend::PLUGIN_LV2) | |||||
| { | |||||
| // LV2 requires URI | |||||
| CARLA_SAFE_ASSERT_RETURN(label != nullptr && label[0] != '\0', 1); | |||||
| if (clientName.isEmpty()) | |||||
| // LV2 URI is not usable as client name, create a usable name from URI | |||||
| CarlaString label2(label); | |||||
| // truncate until last valid char | |||||
| for (std::size_t i=label2.length()-1; i != 0; --i) | |||||
| { | |||||
| if (! std::isalnum(label2[i])) | |||||
| continue; | |||||
| label2.truncate(i+1); | |||||
| break; | |||||
| } | |||||
| // get last used separator | |||||
| bool found; | |||||
| std::size_t septmp, sep = 0; | |||||
| septmp = label2.rfind('#', &found)+1; | |||||
| if (found && septmp > sep) | |||||
| sep = septmp; | |||||
| septmp = label2.rfind('/', &found)+1; | |||||
| if (found && septmp > sep) | |||||
| sep = septmp; | |||||
| septmp = label2.rfind('=', &found)+1; | |||||
| if (found && septmp > sep) | |||||
| sep = septmp; | |||||
| septmp = label2.rfind(':', &found)+1; | |||||
| if (found && septmp > sep) | |||||
| sep = septmp; | |||||
| // make name starting from the separator and first valid char | |||||
| const char* name2 = label2.buffer() + sep; | |||||
| for (; *name2 != '\0' && ! std::isalnum(*name2); ++name2) {} | |||||
| if (*name2 != '\0') | |||||
| clientName = name2; | |||||
| } | |||||
| else if (label != nullptr) | |||||
| { | |||||
| clientName = label; | |||||
| } | |||||
| else | |||||
| { | { | ||||
| const String jfilename = String(CharPointer_UTF8(filename)); | const String jfilename = String(CharPointer_UTF8(filename)); | ||||
| clientName = File(jfilename).getFileNameWithoutExtension().toRawUTF8(); | clientName = File(jfilename).getFileNameWithoutExtension().toRawUTF8(); | ||||
| } | } | ||||
| // if we still have no client name by now, use a dummy one | |||||
| if (clientName.isEmpty()) | |||||
| clientName = "carla-plugin"; | |||||
| // just to be safe | |||||
| clientName.toBasic(); | |||||
| // --------------------------------------------------------------------- | // --------------------------------------------------------------------- | ||||
| // Set extraStuff | // Set extraStuff | ||||