@@ -1177,16 +1177,48 @@ This mode is not available for VST plugins.</string> | |||
</layout> | |||
</widget> | |||
<widget class="QWidget" name="tw_paths_lv2"> | |||
<layout class="QVBoxLayout" name="verticalLayout_6"> | |||
<property name="spacing"> | |||
<layout class="QGridLayout" name="gridLayout"> | |||
<property name="leftMargin"> | |||
<number>0</number> | |||
</property> | |||
<property name="margin"> | |||
<property name="topMargin"> | |||
<number>0</number> | |||
</property> | |||
<item> | |||
<property name="rightMargin"> | |||
<number>0</number> | |||
</property> | |||
<property name="bottomMargin"> | |||
<number>6</number> | |||
</property> | |||
<item row="0" column="0" colspan="2"> | |||
<widget class="QListWidget" name="lw_lv2"/> | |||
</item> | |||
<item row="1" column="0"> | |||
<widget class="QLabel" name="label_4"> | |||
<property name="maximumSize"> | |||
<size> | |||
<width>22</width> | |||
<height>22</height> | |||
</size> | |||
</property> | |||
<property name="text"> | |||
<string/> | |||
</property> | |||
<property name="pixmap"> | |||
<pixmap resource="../resources.qrc">:/16x16/dialog-information.png</pixmap> | |||
</property> | |||
<property name="alignment"> | |||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> | |||
</property> | |||
</widget> | |||
</item> | |||
<item row="1" column="1"> | |||
<widget class="QLabel" name="label_5"> | |||
<property name="text"> | |||
<string>Restart Carla to be able to load new found plugins</string> | |||
</property> | |||
</widget> | |||
</item> | |||
</layout> | |||
</widget> | |||
<widget class="QWidget" name="tw_paths_vst"> | |||
@@ -1361,6 +1393,7 @@ This mode is not available for VST plugins.</string> | |||
<include location="../resources.qrc"/> | |||
<include location="../resources.qrc"/> | |||
<include location="../resources.qrc"/> | |||
<include location="../../../Carla-stable/resources/resources.qrc"/> | |||
</resources> | |||
<connections> | |||
<connection> | |||
@@ -4245,17 +4245,6 @@ public: | |||
// --------------------------------------------------------------- | |||
// get plugin from lv2_rdf (lilv) | |||
Lv2WorldClass& lv2World(Lv2WorldClass::getInstance()); | |||
// Convert bundle filename to URI | |||
QString qBundle(QUrl::fromLocalFile(bundle).toString()); | |||
if (! qBundle.endsWith(OS_SEP_STR)) | |||
qBundle += OS_SEP_STR; | |||
// Load bundle | |||
Lilv::Node lilvBundle(lv2World.new_uri(qBundle.toUtf8().constData())); | |||
lv2World.load_bundle(lilvBundle); | |||
fRdfDescriptor = lv2_rdf_new(uri, true); | |||
if (fRdfDescriptor == nullptr) | |||
@@ -349,10 +349,7 @@ public: | |||
// ----------------------------------------------------------------- | |||
// get plugin from lv2_rdf (lilv) | |||
Lv2WorldClass& lv2World(Lv2WorldClass::getInstance()); | |||
lv2World.load_all(); // FIXME | |||
fRdfDescriptor = lv2_rdf_new(pluginURI, false); | |||
fRdfDescriptor = lv2_rdf_new(pluginURI, true); | |||
if (fRdfDescriptor == nullptr) | |||
return false; | |||
@@ -216,6 +216,8 @@ public: | |||
Lilv::Node rdf_type; | |||
Lilv::Node rdfs_label; | |||
bool needsInit; | |||
// ------------------------------------------------------------------- | |||
Lv2WorldClass() | |||
@@ -330,7 +332,11 @@ public: | |||
dct_replaces (new_uri(NS_dct "replaces")), | |||
doap_license (new_uri(NS_doap "license")), | |||
rdf_type (new_uri(NS_rdf "type")), | |||
rdfs_label (new_uri(NS_rdfs "label")) {} | |||
rdfs_label (new_uri(NS_rdfs "label")), | |||
needsInit(true) | |||
{ | |||
} | |||
static Lv2WorldClass& getInstance() | |||
{ | |||
@@ -338,6 +344,15 @@ public: | |||
return lv2World; | |||
} | |||
void init() | |||
{ | |||
if (! needsInit) | |||
return; | |||
needsInit = false; | |||
Lilv::World::load_all(); | |||
} | |||
const LilvPlugin* getPlugin(const LV2_URI uri) const | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(uri != nullptr && uri[0] != '\0', nullptr); | |||
@@ -402,12 +417,15 @@ public: | |||
// Create new RDF object (using lilv) | |||
static inline | |||
const LV2_RDF_Descriptor* lv2_rdf_new(const LV2_URI uri, const bool fillPresets) | |||
const LV2_RDF_Descriptor* lv2_rdf_new(const LV2_URI uri, const bool doInit) | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(uri != nullptr && uri[0] != '\0', nullptr); | |||
Lv2WorldClass& lv2World(Lv2WorldClass::getInstance()); | |||
if (doInit) | |||
lv2World.init(); | |||
const LilvPlugin* const cPlugin(lv2World.getPlugin(uri)); | |||
if (cPlugin == nullptr) | |||
@@ -1019,11 +1037,10 @@ const LV2_RDF_Descriptor* lv2_rdf_new(const LV2_URI uri, const bool fillPresets) | |||
} | |||
} | |||
#if 1 | |||
// ------------------------------------------------------------------- | |||
// Set Plugin Presets | |||
if (fillPresets) | |||
if (doInit) | |||
{ | |||
Lilv::Nodes presetNodes(lilvPlugin.get_related(lv2World.preset_preset)); | |||
@@ -1081,7 +1098,6 @@ const LV2_RDF_Descriptor* lv2_rdf_new(const LV2_URI uri, const bool fillPresets) | |||
} | |||
} | |||
} | |||
#endif | |||
// ------------------------------------------------------------------- | |||
// Set Plugin Features | |||