From e0f90173c420dc929ee4acf5bba196e5f594b92c Mon Sep 17 00:00:00 2001 From: falkTX Date: Mon, 14 Apr 2014 21:05:06 +0000 Subject: [PATCH] lilv update complete --- source/includes/lilv | 2 +- source/modules/lilv/Makefile | 2 +- source/modules/lilv/custom-patches.diff | 423 ++++++++++++++++++ .../lilv/custom-patches/fix-mingw-build.patch | 34 -- .../custom-patches/lilv_ui-features.patch | 125 ------ .../lilv/custom-patches/lilvmm_fix-leak.patch | 12 - 6 files changed, 425 insertions(+), 173 deletions(-) create mode 100644 source/modules/lilv/custom-patches.diff delete mode 100644 source/modules/lilv/custom-patches/fix-mingw-build.patch delete mode 100644 source/modules/lilv/custom-patches/lilv_ui-features.patch delete mode 100644 source/modules/lilv/custom-patches/lilvmm_fix-leak.patch diff --git a/source/includes/lilv b/source/includes/lilv index 1221c3132..93fcaa9ee 120000 --- a/source/includes/lilv +++ b/source/includes/lilv @@ -1 +1 @@ -../modules/lilv/lilv-0.16.0/lilv \ No newline at end of file +../modules/lilv/lilv-0.18.0/lilv \ No newline at end of file diff --git a/source/modules/lilv/Makefile b/source/modules/lilv/Makefile index bb60a8861..84b3d9eaf 100644 --- a/source/modules/lilv/Makefile +++ b/source/modules/lilv/Makefile @@ -11,7 +11,7 @@ include ../../Makefile.mk SERD_VERSION = 0.18.2 SORD_VERSION = 0.12.0 SRATOM_VERSION = 0.4.4 -LILV_VERSION = 0.16.0 +LILV_VERSION = 0.18.0 BUILD_C_FLAGS += $(LILV_FLAGS) -Iconfig -I../../includes -w LINK_FLAGS += $(LILV_LIBS) diff --git a/source/modules/lilv/custom-patches.diff b/source/modules/lilv/custom-patches.diff new file mode 100644 index 000000000..a44256d89 --- /dev/null +++ b/source/modules/lilv/custom-patches.diff @@ -0,0 +1,423 @@ +diff -U 3 -H -w -E -d -r -N -- lilv-0.18.0.orig/lilv/lilv.h lilv-0.18.0/lilv/lilv.h +--- lilv-0.18.0.orig/lilv/lilv.h 2014-01-04 04:17:29.000000000 +0000 ++++ lilv-0.18.0/lilv/lilv.h 2014-04-14 20:49:45.340264688 +0000 +@@ -26,8 +26,9 @@ + #include + #include + +-#include "lv2/lv2plug.in/ns/lv2core/lv2.h" +-#include "lv2/lv2plug.in/ns/ext/urid/urid.h" ++#include "lv2/lv2.h" ++#include "lv2/state.h" ++#include "lv2/urid.h" + + #ifdef LILV_SHARED + # ifdef _WIN32 +@@ -1228,7 +1229,7 @@ + LILV_API + LilvState* + lilv_state_new_from_world(LilvWorld* world, +- LV2_URID_Map* map, ++ const LV2_URID_Map* map, + const LilvNode* subject); + + /** +@@ -1247,7 +1248,7 @@ + LILV_API + LilvState* + lilv_state_new_from_file(LilvWorld* world, +- LV2_URID_Map* map, ++ const LV2_URID_Map* map, + const LilvNode* subject, + const char* path); + +@@ -1257,7 +1258,7 @@ + LILV_API + LilvState* + lilv_state_new_from_string(LilvWorld* world, +- LV2_URID_Map* map, ++ const LV2_URID_Map* map, + const char* str); + + /** +@@ -1428,7 +1429,8 @@ + LILV_API + void + lilv_state_restore(const LilvState* state, +- LilvInstance* instance, ++ const LV2_State_Interface* iface, ++ LV2_Handle handle, + LilvSetPortValueFunc set_value, + void* user_data, + uint32_t flags, +@@ -1782,6 +1784,25 @@ + lilv_ui_get_binary_uri(const LilvUI* ui); + + /** ++ Custom calls ++*/ ++LILV_API ++const LilvNodes* ++lilv_ui_get_supported_features(const LilvUI* ui); ++ ++LILV_API ++const LilvNodes* ++lilv_ui_get_required_features(const LilvUI* ui); ++ ++LILV_API ++const LilvNodes* ++lilv_ui_get_optional_features(const LilvUI* ui); ++ ++LILV_API ++const LilvNodes* ++lilv_ui_get_extension_data(const LilvUI* ui); ++ ++/** + @} + @} + */ +diff -U 3 -H -w -E -d -r -N -- lilv-0.18.0.orig/lilv/lilvmm.hpp lilv-0.18.0/lilv/lilvmm.hpp +--- lilv-0.18.0.orig/lilv/lilvmm.hpp 2013-03-19 04:05:10.000000000 +0000 ++++ lilv-0.18.0/lilv/lilvmm.hpp 2014-04-14 20:55:29.312713841 +0000 +@@ -35,6 +35,9 @@ + #define LILV_WRAP0(RT, prefix, name) \ + inline RT name() { return lilv_ ## prefix ## _ ## name (me); } + ++#define LILV_WRAP0_CONST(RT, prefix, name) \ ++ inline RT name() const { return lilv_ ## prefix ## _ ## name (me); } ++ + #define LILV_WRAP0_VOID(prefix, name) \ + inline void name() { lilv_ ## prefix ## _ ## name(me); } + +@@ -65,6 +68,7 @@ + #endif + + struct Node { ++ inline Node(LilvNode* node) : me(node) {} + inline Node(const LilvNode* node) : me(lilv_node_duplicate(node)) {} + inline Node(const Node& copy) : me(lilv_node_duplicate(copy.me)) {} + +@@ -78,20 +82,20 @@ + + LILV_WRAP_CONVERSION(LilvNode); + +- LILV_WRAP0(char*, node, get_turtle_token); +- LILV_WRAP0(bool, node, is_uri); +- LILV_WRAP0(const char*, node, as_uri); +- LILV_WRAP0(bool, node, is_blank); +- LILV_WRAP0(const char*, node, as_blank); +- LILV_WRAP0(bool, node, is_literal); +- LILV_WRAP0(bool, node, is_string); +- LILV_WRAP0(const char*, node, as_string); +- LILV_WRAP0(bool, node, is_float); +- LILV_WRAP0(float, node, as_float); +- LILV_WRAP0(bool, node, is_int); +- LILV_WRAP0(int, node, as_int); +- LILV_WRAP0(bool, node, is_bool); +- LILV_WRAP0(bool, node, as_bool); ++ LILV_WRAP0_CONST(char*, node, get_turtle_token); ++ LILV_WRAP0_CONST(bool, node, is_uri); ++ LILV_WRAP0_CONST(const char*, node, as_uri); ++ LILV_WRAP0_CONST(bool, node, is_blank); ++ LILV_WRAP0_CONST(const char*, node, as_blank); ++ LILV_WRAP0_CONST(bool, node, is_literal); ++ LILV_WRAP0_CONST(bool, node, is_string); ++ LILV_WRAP0_CONST(const char*, node, as_string); ++ LILV_WRAP0_CONST(bool, node, is_float); ++ LILV_WRAP0_CONST(float, node, as_float); ++ LILV_WRAP0_CONST(bool, node, is_int); ++ LILV_WRAP0_CONST(int, node, as_int); ++ LILV_WRAP0_CONST(bool, node, is_bool); ++ LILV_WRAP0_CONST(bool, node, as_bool); + + LilvNode* me; + }; +@@ -126,7 +130,7 @@ + LILV_WRAP0(LilvIter*, prefix, begin); \ + LILV_WRAP1(LilvIter*, prefix, next, LilvIter*, i); \ + LILV_WRAP1(bool, prefix, is_end, LilvIter*, i); \ +- const Lilv ## CT* me; \ ++ const Lilv ## CT* me + + struct PluginClasses { + LILV_WRAP_COLL(PluginClasses, PluginClass, plugin_classes); +@@ -148,15 +152,14 @@ + inline UI(const LilvUI* c_obj) : me(c_obj) {} + LILV_WRAP_CONVERSION(const LilvUI); + +- LILV_WRAP0(const LilvNode*, ui, get_uri); +- LILV_WRAP0(const LilvNode*, ui, get_bundle_uri); +- LILV_WRAP0(const LilvNode*, ui, get_binary_uri); +- LILV_WRAP0(const LilvNodes*, ui, get_classes); +- /*LILV_WRAP3(bool, ui, is_supported, +- LilvUISupportedFunc, supported_func, +- const LilvNode*, container_type, +- const LilvNode**, ui_type);*/ +- LILV_WRAP1(bool, ui, is_a, const LilvNode*, class_uri); ++ LILV_WRAP0(Node, ui, get_uri); ++ LILV_WRAP1(bool, ui, is_a, LilvNode*, ui_class); ++ LILV_WRAP0(Node, ui, get_bundle_uri); ++ LILV_WRAP0(Node, ui, get_binary_uri); ++ LILV_WRAP0(Nodes, ui, get_supported_features); ++ LILV_WRAP0(Nodes, ui, get_required_features); ++ LILV_WRAP0(Nodes, ui, get_optional_features); ++ LILV_WRAP0(Nodes, ui, get_extension_data); + + const LilvUI* me; + }; +@@ -260,7 +263,7 @@ + + LILV_DEPRECATED + inline Instance(Plugin plugin, double sample_rate) { +- me = lilv_plugin_instantiate(plugin, sample_rate, NULL); ++ me = lilv_plugin_instantiate(plugin, sample_rate, nullptr); + } + + LILV_DEPRECATED inline Instance(Plugin plugin, +@@ -275,7 +278,7 @@ + LilvInstance* me = lilv_plugin_instantiate( + plugin, sample_rate, features); + +- return me ? new Instance(me) : NULL; ++ return me ? new Instance(me) : nullptr; + } + + LILV_WRAP_CONVERSION(LilvInstance); +@@ -307,19 +310,19 @@ + inline World() : me(lilv_world_new()) {} + inline ~World() { lilv_world_free(me); } + +- inline LilvNode* new_uri(const char* uri) { ++ inline LilvNode* new_uri(const char* uri) const { + return lilv_new_uri(me, uri); + } +- inline LilvNode* new_string(const char* str) { ++ inline LilvNode* new_string(const char* str) const { + return lilv_new_string(me, str); + } +- inline LilvNode* new_int(int val) { ++ inline LilvNode* new_int(int val) const { + return lilv_new_int(me, val); + } +- inline LilvNode* new_float(float val) { ++ inline LilvNode* new_float(float val) const { + return lilv_new_float(me, val); + } +- inline LilvNode* new_bool(bool val) { ++ inline LilvNode* new_bool(bool val) const { + return lilv_new_bool(me, val); + } + inline Nodes find_nodes(const LilvNode* subject, +diff -U 3 -H -w -E -d -r -N -- lilv-0.18.0.orig/src/lilv_internal.h lilv-0.18.0/src/lilv_internal.h +--- lilv-0.18.0.orig/src/lilv_internal.h 2014-01-04 04:02:22.000000000 +0000 ++++ lilv-0.18.0/src/lilv_internal.h 2014-04-14 20:31:23.028483446 +0000 +@@ -50,7 +50,7 @@ + #include "lilv/lilv.h" + + #ifdef LILV_DYN_MANIFEST +-# include "lv2/lv2plug.in/ns/ext/dynmanifest/dynmanifest.h" ++# include "lv2/dynmanifest.h" + #endif + + /* +diff -U 3 -H -w -E -d -r -N -- lilv-0.18.0.orig/src/plugin.c lilv-0.18.0/src/plugin.c +--- lilv-0.18.0.orig/src/plugin.c 2014-01-04 21:23:47.000000000 +0000 ++++ lilv-0.18.0/src/plugin.c 2014-04-14 20:44:13.939913922 +0000 +@@ -27,7 +27,7 @@ + #include "lilv_config.h" + #include "lilv_internal.h" + +-#include "lv2/lv2plug.in/ns/extensions/ui/ui.h" ++#include "lv2/ui.h" + + #define NS_DOAP (const uint8_t*)"http://usefulinc.com/ns/doap#" + #define NS_FOAF (const uint8_t*)"http://xmlns.com/foaf/0.1/" +diff -U 3 -H -w -E -d -r -N -- lilv-0.18.0.orig/src/port.c lilv-0.18.0/src/port.c +--- lilv-0.18.0.orig/src/port.c 2014-01-04 04:04:20.000000000 +0000 ++++ lilv-0.18.0/src/port.c 2014-04-14 20:33:03.708189391 +0000 +@@ -20,8 +20,8 @@ + #include + #include + +-#include "lv2/lv2plug.in/ns/ext/atom/atom.h" +-#include "lv2/lv2plug.in/ns/ext/event/event.h" ++#include "lv2/atom.h" ++#include "lv2/event.h" + + #include "lilv_internal.h" + +diff -U 3 -H -w -E -d -r -N -- lilv-0.18.0.orig/src/state.c lilv-0.18.0/src/state.c +--- lilv-0.18.0.orig/src/state.c 2013-12-16 03:17:00.000000000 +0000 ++++ lilv-0.18.0/src/state.c 2014-04-14 20:39:02.307711987 +0000 +@@ -18,10 +18,10 @@ + #include + #include + +-#include "lv2/lv2plug.in/ns/ext/atom/atom.h" +-#include "lv2/lv2plug.in/ns/ext/atom/forge.h" +-#include "lv2/lv2plug.in/ns/ext/presets/presets.h" +-#include "lv2/lv2plug.in/ns/ext/state/state.h" ++#include "lv2/atom.h" ++#include "lv2/atom-forge.h" ++#include "lv2/presets.h" ++#include "lv2/state.h" + + #include "lilv_config.h" + #include "lilv_internal.h" +@@ -399,30 +399,18 @@ + LILV_API + void + lilv_state_restore(const LilvState* state, +- LilvInstance* instance, ++ const LV2_State_Interface* iface, ++ LV2_Handle handle, + LilvSetPortValueFunc set_value, + void* user_data, + uint32_t flags, + const LV2_Feature *const * features) + { +- LV2_State_Map_Path map_path = { +- (LilvState*)state, abstract_path, absolute_path }; +- LV2_Feature map_feature = { LV2_STATE__mapPath, &map_path }; +- +- const LV2_Feature** sfeatures = add_features(features, &map_feature, NULL); +- +- const LV2_Descriptor* desc = instance ? instance->lv2_descriptor : NULL; +- const LV2_State_Interface* iface = (desc && desc->extension_data) +- ? (const LV2_State_Interface*)desc->extension_data(LV2_STATE__interface) +- : NULL; +- + if (iface) { +- iface->restore(instance->lv2_handle, retrieve_callback, +- (LV2_State_Handle)state, flags, sfeatures); ++ iface->restore(handle, retrieve_callback, ++ (LV2_State_Handle)state, flags, features); + } + +- free(sfeatures); +- + if (set_value) { + for (uint32_t i = 0; i < state->num_values; ++i) { + const PortValue* val = &state->values[i]; +@@ -569,7 +557,7 @@ + LILV_API + LilvState* + lilv_state_new_from_world(LilvWorld* world, +- LV2_URID_Map* map, ++ const LV2_URID_Map* map, + const LilvNode* node) + { + if (!lilv_node_is_uri(node) && !lilv_node_is_blank(node)) { +@@ -587,7 +575,7 @@ + LILV_API + LilvState* + lilv_state_new_from_file(LilvWorld* world, +- LV2_URID_Map* map, ++ const LV2_URID_Map* map, + const LilvNode* subject, + const char* path) + { +@@ -641,7 +629,7 @@ + LILV_API + LilvState* + lilv_state_new_from_string(LilvWorld* world, +- LV2_URID_Map* map, ++ const LV2_URID_Map* map, + const char* str) + { + if (!str) { +diff -U 3 -H -w -E -d -r -N -- lilv-0.18.0.orig/src/ui.c lilv-0.18.0/src/ui.c +--- lilv-0.18.0.orig/src/ui.c 2012-03-27 03:41:41.000000000 +0000 ++++ lilv-0.18.0/src/ui.c 2014-04-14 20:46:20.491810535 +0000 +@@ -128,3 +128,59 @@ + assert(ui->binary_uri); + return ui->binary_uri; + } ++ ++static LilvNodes* ++lilv_ui_get_value_internal(const LilvUI* ui, ++ const SordNode* predicate) ++{ ++ assert(ui); ++ return lilv_world_find_nodes_internal(ui->world, ui->uri->node, predicate, NULL); ++} ++ ++LILV_API ++const LilvNodes* ++lilv_ui_get_supported_features(const LilvUI* ui) ++{ ++ assert(ui); ++ LilvNodes* optional = lilv_ui_get_optional_features(ui); ++ LilvNodes* required = lilv_ui_get_required_features(ui); ++ LilvNodes* result = lilv_nodes_new(); ++ ++ LILV_FOREACH(nodes, i, optional) ++ zix_tree_insert((ZixTree*)result, lilv_node_duplicate(lilv_nodes_get(optional, i)), NULL); ++ ++ LILV_FOREACH(nodes, i, required) ++ zix_tree_insert((ZixTree*)result, lilv_node_duplicate(lilv_nodes_get(required, i)), NULL); ++ ++ lilv_nodes_free(optional); ++ lilv_nodes_free(required); ++ ++ return result; ++} ++ ++LILV_API ++const LilvNodes* ++lilv_ui_get_required_features(const LilvUI* ui) ++{ ++ assert(ui); ++ assert(ui->world); ++ return lilv_ui_get_value_internal(ui, ui->world->uris.lv2_requiredFeature); ++} ++ ++LILV_API ++const LilvNodes* ++lilv_ui_get_optional_features(const LilvUI* ui) ++{ ++ assert(ui); ++ assert(ui->world); ++ return lilv_ui_get_value_internal(ui, ui->world->uris.lv2_optionalFeature); ++} ++ ++LILV_API ++const LilvNodes* ++lilv_ui_get_extension_data(const LilvUI* ui) ++{ ++ assert(ui); ++ assert(ui->world); ++ return lilv_ui_get_value_internal(ui, ui->world->uris.lv2_extensionData); ++} +diff -U 3 -H -w -E -d -r -N -- lilv-0.18.0.orig/src/util.c lilv-0.18.0/src/util.c +--- lilv-0.18.0.orig/src/util.c 2012-08-09 20:51:00.000000000 +0000 ++++ lilv-0.18.0/src/util.c 2014-04-14 20:43:49.832743279 +0000 +@@ -29,7 +29,6 @@ + #include + + #ifdef _WIN32 +-# define _WIN32_WINNT 0x0600 /* for CreateSymbolicLink */ + # include + # include + # include +@@ -426,7 +425,7 @@ + int ret = 0; + if (strcmp(oldpath, newpath)) { + #ifdef _WIN32 +- ret = !CreateSymbolicLink(newpath, oldpath, 0); ++ ret = 0; + #else + ret = symlink(oldpath, newpath); + #endif +diff -U 3 -H -w -E -d -r -N -- lilv-0.18.0.orig/src/world.c lilv-0.18.0/src/world.c +--- lilv-0.18.0.orig/src/world.c 2013-12-27 19:45:19.000000000 +0000 ++++ lilv-0.18.0/src/world.c 2014-04-14 20:45:37.828508116 +0000 +@@ -19,7 +19,7 @@ + #include + #include + +-#include "lv2/lv2plug.in/ns/ext/presets/presets.h" ++#include "lv2/presets.h" + + #include "lilv_internal.h" + diff --git a/source/modules/lilv/custom-patches/fix-mingw-build.patch b/source/modules/lilv/custom-patches/fix-mingw-build.patch deleted file mode 100644 index d37159609..000000000 --- a/source/modules/lilv/custom-patches/fix-mingw-build.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git a/source/libs/lilv/lilv-0.16.0/src/util.c b/source/libs/lilv/lilv-0.16.0/src/util.c -index 6286446..f21383b 100644 ---- a/source/libs/lilv/lilv-0.16.0/src/util.c -+++ b/source/libs/lilv/lilv-0.16.0/src/util.c -@@ -29,7 +29,6 @@ - #include - - #ifdef _WIN32 --# define _WIN32_WINNT 0x0600 /* for CreateSymbolicLink */ - # include - # include - # include -@@ -426,7 +425,7 @@ lilv_symlink(const char* oldpath, const char* newpath) - int ret = 0; - if (strcmp(oldpath, newpath)) { - #ifdef _WIN32 -- ret = !CreateSymbolicLink(newpath, oldpath, 0); -+ ret = 0; - #else - ret = symlink(oldpath, newpath); - #endif -diff --git a/source/libs/lilv/serd-0.18.2/src/node.c b/source/libs/lilv/serd-0.18.2/src/node.c -index 065ff87..63730c1 100644 ---- a/source/libs/lilv/serd-0.18.2/src/node.c -+++ b/source/libs/lilv/serd-0.18.2/src/node.c -@@ -22,7 +22,7 @@ - #include - #include - --#ifdef _WIN32 -+#if defined(_WIN32) && !defined(__MINGW32__) - # define isnan(x) _isnan(x) - # define isinf(x) (!_finite(x)) - #endif diff --git a/source/modules/lilv/custom-patches/lilv_ui-features.patch b/source/modules/lilv/custom-patches/lilv_ui-features.patch deleted file mode 100644 index b2f63b904..000000000 --- a/source/modules/lilv/custom-patches/lilv_ui-features.patch +++ /dev/null @@ -1,125 +0,0 @@ -diff --git a/source/libs/lilv/lilv-0.16.0/lilv/lilv.h b/source/libs/lilv/lilv-0.16.0/lilv/lilv.h -index ff1839f..c780326 100644 ---- a/source/libs/lilv/lilv-0.16.0/lilv/lilv.h -+++ b/source/libs/lilv/lilv-0.16.0/lilv/lilv.h -@@ -1769,6 +1769,25 @@ const LilvNode* - lilv_ui_get_binary_uri(const LilvUI* ui); - - /** -+ Custom calls -+*/ -+LILV_API -+const LilvNodes* -+lilv_ui_get_supported_features(const LilvUI* ui); -+ -+LILV_API -+const LilvNodes* -+lilv_ui_get_required_features(const LilvUI* ui); -+ -+LILV_API -+const LilvNodes* -+lilv_ui_get_optional_features(const LilvUI* ui); -+ -+LILV_API -+const LilvNodes* -+lilv_ui_get_extension_data(const LilvUI* ui); -+ -+/** - @} - @} - */ -diff --git a/source/libs/lilv/lilv-0.16.0/lilv/lilvmm.hpp b/source/libs/lilv/lilv-0.16.0/lilv/lilvmm.hpp -index 4215ab8..3047930 100644 ---- a/source/libs/lilv/lilv-0.16.0/lilv/lilvmm.hpp -+++ b/source/libs/lilv/lilv-0.16.0/lilv/lilvmm.hpp -@@ -169,6 +169,26 @@ struct Port { - const LilvPort* me; - }; - -+struct UI { -+ inline UI(const LilvUI* c_obj) : me(c_obj) {} -+ LILV_WRAP_CONVERSION(const LilvUI); -+ -+ LILV_WRAP0(Node, ui, get_uri); -+ LILV_WRAP1(bool, ui, is_a, LilvNode*, ui_class); -+ LILV_WRAP0(Node, ui, get_bundle_uri); -+ LILV_WRAP0(Node, ui, get_binary_uri); -+ LILV_WRAP0(Nodes, ui, get_supported_features); -+ LILV_WRAP0(Nodes, ui, get_required_features); -+ LILV_WRAP0(Nodes, ui, get_optional_features); -+ LILV_WRAP0(Nodes, ui, get_extension_data); -+ -+ const LilvUI* me; -+}; -+ -+struct UIs { -+ LILV_WRAP_COLL(UIs, UI, uis); -+}; -+ - struct Plugin { - inline Plugin(const LilvPlugin* c_obj) : me(c_obj) {} - LILV_WRAP_CONVERSION(const LilvPlugin); -diff --git a/source/libs/lilv/lilv-0.16.0/src/ui.c b/source/libs/lilv/lilv-0.16.0/src/ui.c -index 5d2f066..c2780e0 100644 ---- a/source/libs/lilv/lilv-0.16.0/src/ui.c -+++ b/source/libs/lilv/lilv-0.16.0/src/ui.c -@@ -128,3 +128,59 @@ lilv_ui_get_binary_uri(const LilvUI* ui) - assert(ui->binary_uri); - return ui->binary_uri; - } -+ -+static LilvNodes* -+lilv_ui_get_value_internal(const LilvUI* ui, -+ const SordNode* predicate) -+{ -+ assert(ui); -+ return lilv_world_find_nodes_internal(ui->world, ui->uri->node, predicate, NULL); -+} -+ -+LILV_API -+const LilvNodes* -+lilv_ui_get_supported_features(const LilvUI* ui) -+{ -+ assert(ui); -+ LilvNodes* optional = lilv_ui_get_optional_features(ui); -+ LilvNodes* required = lilv_ui_get_required_features(ui); -+ LilvNodes* result = lilv_nodes_new(); -+ -+ LILV_FOREACH(nodes, i, optional) -+ zix_tree_insert((ZixTree*)result, lilv_node_duplicate(lilv_nodes_get(optional, i)), NULL); -+ -+ LILV_FOREACH(nodes, i, required) -+ zix_tree_insert((ZixTree*)result, lilv_node_duplicate(lilv_nodes_get(required, i)), NULL); -+ -+ lilv_nodes_free(optional); -+ lilv_nodes_free(required); -+ -+ return result; -+} -+ -+LILV_API -+const LilvNodes* -+lilv_ui_get_required_features(const LilvUI* ui) -+{ -+ assert(ui); -+ assert(ui->world); -+ return lilv_ui_get_value_internal(ui, ui->world->uris.lv2_requiredFeature); -+} -+ -+LILV_API -+const LilvNodes* -+lilv_ui_get_optional_features(const LilvUI* ui) -+{ -+ assert(ui); -+ assert(ui->world); -+ return lilv_ui_get_value_internal(ui, ui->world->uris.lv2_optionalFeature); -+} -+ -+LILV_API -+const LilvNodes* -+lilv_ui_get_extension_data(const LilvUI* ui) -+{ -+ assert(ui); -+ assert(ui->world); -+ return lilv_ui_get_value_internal(ui, ui->world->uris.lv2_extensionData); -+} diff --git a/source/modules/lilv/custom-patches/lilvmm_fix-leak.patch b/source/modules/lilv/custom-patches/lilvmm_fix-leak.patch deleted file mode 100644 index ebd8ca219..000000000 --- a/source/modules/lilv/custom-patches/lilvmm_fix-leak.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/source/libs/lilv/lilv-0.16.0/lilv/lilvmm.hpp b/source/libs/lilv/lilv-0.16.0/lilv/lilvmm.hpp -index 666f466..4215ab8 100644 ---- a/source/libs/lilv/lilv-0.16.0/lilv/lilvmm.hpp -+++ b/source/libs/lilv/lilv-0.16.0/lilv/lilvmm.hpp -@@ -60,6 +60,7 @@ uri_to_path(const char* uri) { - #endif - - struct Node { -+ inline Node(LilvNode* node) : me(node) {} - inline Node(const LilvNode* node) : me(lilv_node_duplicate(node)) {} - inline Node(const Node& copy) : me(lilv_node_duplicate(copy.me)) {} -