View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0007837 | ardour | features | public | 2019-10-28 14:48 | 2019-10-28 16:30 |
| Reporter | rncbc | Assigned To | x42 | ||
| Priority | normal | Severity | minor | Reproducibility | N/A |
| Status | closed | Resolution | fixed | ||
| Platform | Some Other Linux | OS | Some Other Linux | OS Version | unknown |
| Product Version | 5.12 | ||||
| Summary | 0007837: [PATCH] Pefer LV2UI:X11 when multiple UI options are provided by a LV2 plugin | ||||
| Description | - Let LV2 Plugin UI support (via SUIL) prefer and select a X11 UI whenever multiple UI type options are provided by LV2 plugins (eg. Vee-One's do present several but their native Qt5UI should never be raised by Ardour, on any chance:)). Signed-off-by: Rui Nuno Capela <rncbc@rncbc.org> | ||||
| Steps To Reproduce | N/A | ||||
| Tags | lv2, suil, x11 | ||||
|
|
ardour6-lv2_plugin-suil-prefer-x11-1.patch (2,926 bytes)
- Let LV2 Plugin UI support (via SUIL) prefer and select a X11 UI whenever
multiple UI type options are provided by LV2 plugins (eg. Vee-One's do
present several but their native Qt5UI should never be raised by Ardour,
on any chance:)).
Signed-off-by: Rui Nuno Capela <rncbc@rncbc.org>
diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc
index 5da1895d61..39c1220d04 100644
--- a/libs/ardour/lv2_plugin.cc
+++ b/libs/ardour/lv2_plugin.cc
@@ -182,6 +182,7 @@ public:
LilvNode* time_Position;
LilvNode* time_beatsPerMin;
LilvNode* ui_GtkUI;
+ LilvNode* ui_X11UI;
LilvNode* ui_external;
LilvNode* ui_externalkx;
LilvNode* units_hz;
@@ -848,19 +849,36 @@ LV2Plugin::init(const void* c_plugin, samplecnt_t rate)
if (lilv_uis_size(uis) > 0) {
#ifdef HAVE_SUIL
// Look for embeddable UI
- LILV_FOREACH(uis, u, uis) {
- const LilvUI* this_ui = lilv_uis_get(uis, u);
- const LilvNode* this_ui_type = NULL;
- if (lilv_ui_is_supported(this_ui,
- suil_ui_supported,
- _world.ui_GtkUI,
- &this_ui_type)) {
- // TODO: Multiple UI support
- _impl->ui = this_ui;
- _impl->ui_type = this_ui_type;
- break;
+ // TODO: Multiple UI support
+ const LilvUI* this_ui = NULL;
+ const LilvNode* this_ui_type = NULL;
+ // Always prefer X11 UIs...
+ LILV_FOREACH(uis, i, uis) {
+ const LilvUI* ui = lilv_uis_get(uis, i);
+ if (lilv_ui_is_a(ui, _world.ui_X11UI)) {
+ this_ui = ui;
+ this_ui_type = _world.ui_X11UI;
+ break;
+ }
+ }
+ // then anything else...
+ if (this_ui_type == NULL) {
+ LILV_FOREACH(uis, i, uis) {
+ const LilvUI* ui = lilv_uis_get(uis, i);
+ if (lilv_ui_is_supported(ui,
+ suil_ui_supported,
+ _world.ui_GtkUI,
+ &this_ui_type)) {
+ this_ui = ui;
+ break;
+ }
}
}
+ // Found one that is supported by SUIL?...
+ if (this_ui_type != NULL) {
+ _impl->ui = this_ui;
+ _impl->ui_type = this_ui_type;
+ }
#else
// Look for Gtk native UI
LILV_FOREACH(uis, i, uis) {
@@ -3266,6 +3284,7 @@ LV2World::LV2World()
time_Position = lilv_new_uri(world, LV2_TIME__Position);
time_beatsPerMin = lilv_new_uri(world, LV2_TIME__beatsPerMinute);
ui_GtkUI = lilv_new_uri(world, LV2_UI__GtkUI);
+ ui_X11UI = lilv_new_uri(world, LV2_UI__X11UI);
ui_external = lilv_new_uri(world, "http://lv2plug.in/ns/extensions/ui#external");
ui_externalkx = lilv_new_uri(world, "http://kxstudio.sf.net/ns/lv2ext/external-ui#Widget");
units_unit = lilv_new_uri(world, LV2_UNITS__unit);
@@ -3318,6 +3337,7 @@ LV2World::~LV2World()
lilv_node_free(units_render);
lilv_node_free(ui_externalkx);
lilv_node_free(ui_external);
+ lilv_node_free(ui_X11UI);
lilv_node_free(ui_GtkUI);
lilv_node_free(time_beatsPerMin);
lilv_node_free(time_Position);
|
|
|
Applied as 6.0-pre0-2680-g760a7fda81 Thanks! |
|
|
This second patch applies on top the last commit as for making sure the preferred LV2 X11 UI is actually supported by SUIL. ardour6-lv2_plugin-suil-prefer-x11-2.patch (1,204 bytes)
diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc
index 6b1dbde4ca..f3bff0154f 100644
--- a/libs/ardour/lv2_plugin.cc
+++ b/libs/ardour/lv2_plugin.cc
@@ -855,15 +855,18 @@ LV2Plugin::init(const void* c_plugin, samplecnt_t rate)
// Always prefer X11 UIs...
LILV_FOREACH(uis, i, uis) {
const LilvUI* ui = lilv_uis_get(uis, i);
- if (lilv_ui_is_a(ui, _world.ui_X11UI)) {
- this_ui = ui;
- this_ui_type = _world.ui_X11UI;
+ if (lilv_ui_is_a(ui, _world.ui_X11UI) &&
+ lilv_ui_is_supported (ui,
+ suil_ui_supported,
+ world.ui_GtkUI,
+ &this_ui_type)) {
+ this_ui = ui;
break;
}
}
#endif
- // then anything else...
- if (this_ui_type == NULL) {
+ // Then anything else...
+ if (this_ui == NULL) {
LILV_FOREACH(uis, i, uis) {
const LilvUI* ui = lilv_uis_get(uis, i);
if (lilv_ui_is_supported (ui,
@@ -876,7 +879,7 @@ LV2Plugin::init(const void* c_plugin, samplecnt_t rate)
}
}
// Found one that is supported by SUIL?...
- if (this_ui_type != NULL) {
+ if (this_ui != NULL) {
_impl->ui = this_ui;
_impl->ui_type = this_ui_type;
}
|
|
|
oops, there's a typo on last patch; consider this the correct one: ardour6-lv2_plugin-suil-prefer-x11-2-2.patch (1,205 bytes)
diff --git a/libs/ardour/lv2_plugin.cc b/libs/ardour/lv2_plugin.cc
index 6b1dbde4ca..f3bff0154f 100644
--- a/libs/ardour/lv2_plugin.cc
+++ b/libs/ardour/lv2_plugin.cc
@@ -855,15 +855,18 @@ LV2Plugin::init(const void* c_plugin, samplecnt_t rate)
// Always prefer X11 UIs...
LILV_FOREACH(uis, i, uis) {
const LilvUI* ui = lilv_uis_get(uis, i);
- if (lilv_ui_is_a(ui, _world.ui_X11UI)) {
- this_ui = ui;
- this_ui_type = _world.ui_X11UI;
+ if (lilv_ui_is_a(ui, _world.ui_X11UI) &&
+ lilv_ui_is_supported (ui,
+ suil_ui_supported,
+ _world.ui_GtkUI,
+ &this_ui_type)) {
+ this_ui = ui;
break;
}
}
#endif
- // then anything else...
- if (this_ui_type == NULL) {
+ // Then anything else...
+ if (this_ui == NULL) {
LILV_FOREACH(uis, i, uis) {
const LilvUI* ui = lilv_uis_get(uis, i);
if (lilv_ui_is_supported (ui,
@@ -876,7 +879,7 @@ LV2Plugin::init(const void* c_plugin, samplecnt_t rate)
}
}
// Found one that is supported by SUIL?...
- if (this_ui_type != NULL) {
+ if (this_ui != NULL) {
_impl->ui = this_ui;
_impl->ui_type = this_ui_type;
}
|
|
|
Thanks again. applied as 6.0-pre0-2683-ge4601e54e9 |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2019-10-28 14:48 | rncbc | New Issue | |
| 2019-10-28 14:48 | rncbc | Tag Attached: lv2 | |
| 2019-10-28 14:48 | rncbc | Tag Attached: suil | |
| 2019-10-28 14:48 | rncbc | Tag Attached: x11 | |
| 2019-10-28 14:48 | rncbc | File Added: ardour6-lv2_plugin-suil-prefer-x11-1.patch | |
| 2019-10-28 15:02 | x42 | Assigned To | => x42 |
| 2019-10-28 15:02 | x42 | Status | new => resolved |
| 2019-10-28 15:02 | x42 | Resolution | open => fixed |
| 2019-10-28 15:02 | x42 | Note Added: 0020797 | |
| 2019-10-28 16:12 | rncbc | File Added: ardour6-lv2_plugin-suil-prefer-x11-2.patch | |
| 2019-10-28 16:12 | rncbc | Note Added: 0020798 | |
| 2019-10-28 16:17 | rncbc | File Added: ardour6-lv2_plugin-suil-prefer-x11-2-2.patch | |
| 2019-10-28 16:17 | rncbc | Note Added: 0020799 | |
| 2019-10-28 16:30 | x42 | Status | resolved => closed |
| 2019-10-28 16:30 | x42 | Note Added: 0020800 |