diff options
-rw-r--r-- | src/jalv.c | 7 | ||||
-rw-r--r-- | src/jalv_internal.h | 1 |
2 files changed, 5 insertions, 3 deletions
@@ -770,9 +770,9 @@ main(int argc, char** argv) const LilvNode* ui_type = NULL; host.ui = NULL; if (native_ui_type) { - LilvUIs* uis = lilv_plugin_get_uis(host.plugin); // FIXME: leak - LILV_FOREACH(uis, u, uis) { - const LilvUI* this_ui = lilv_uis_get(uis, u); + host.uis = lilv_plugin_get_uis(host.plugin); + LILV_FOREACH(uis, u, host.uis) { + const LilvUI* this_ui = lilv_uis_get(host.uis, u); if (lilv_ui_is_supported( this_ui, suil_ui_supported, native_ui_type, &ui_type)) { // TODO: Multiple UI support @@ -959,6 +959,7 @@ main(int argc, char** argv) symap_free(host.symap); suil_host_free(ui_host); sratom_free(host.sratom); + lilv_uis_free(host.uis); lilv_world_free(world); zix_sem_destroy(&exit_sem); diff --git a/src/jalv_internal.h b/src/jalv_internal.h index 50587a6..737abf0 100644 --- a/src/jalv_internal.h +++ b/src/jalv_internal.h @@ -157,6 +157,7 @@ typedef struct { char* temp_dir; ///< Temporary plugin state directory char* save_dir; ///< Plugin save directory const LilvPlugin* plugin; ///< Plugin class (RDF data) + LilvUIs* uis; ///< All plugin UIs (RDF data) const LilvUI* ui; ///< Plugin UI (RDF data) LilvInstance* instance; ///< Plugin instance (shared library) SuilInstance* ui_instance; ///< Plugin UI instance (shared library) |