From 270fd1c5f214819121e9e54ab2285205fbb3e613 Mon Sep 17 00:00:00 2001 From: falkTX Date: Tue, 26 Jul 2011 21:10:15 +0100 Subject: [PATCH] Misc --- .../audio/plugin_client/LV2/juce_LV2_Wrapper.cpp | 38 ++++++++++++++-------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/juce/source/src/audio/plugin_client/LV2/juce_LV2_Wrapper.cpp b/juce/source/src/audio/plugin_client/LV2/juce_LV2_Wrapper.cpp index 7088766..1e3c6eb 100644 --- a/juce/source/src/audio/plugin_client/LV2/juce_LV2_Wrapper.cpp +++ b/juce/source/src/audio/plugin_client/LV2/juce_LV2_Wrapper.cpp @@ -4,6 +4,8 @@ #include "../juce_IncludeCharacteristics.h" +#define JucePlugin_Build_LV2 1 + #if JucePlugin_Build_LV2 // LV2 includes.. @@ -436,15 +438,17 @@ public: ui_descriptor(ui_descriptor_), write_function(write_function_), controller(controller_), - widget(widget_) + widget(widget_), + editor(nullptr) { - initialiseJuce_GUI(); - filter = wrapper->getFilter(); - //printf("TEST - Before\n"); - //editor = filter->createEditorIfNeeded(); - //printf("TEST - After\n"); + if (filter != nullptr) + { + printf("TEST - Before\n"); + //editor = filter->createEditorIfNeeded(); + printf("TEST - After\n"); + } // Padding for control ports ctrl_pad = 0; @@ -460,8 +464,11 @@ public: ~JuceLv2Editor() { - deleteAndZero (editor); - shutdownJuce_GUI(); + JUCE_AUTORELEASEPOOL + PopupMenu::dismissAllActiveMenus(); + + if (editor != nullptr) + deleteAndZero (editor); } void do_port_event(uint32_t port_index, float value) @@ -471,11 +478,14 @@ public: void do_cleanup() { + // We should only do this after UI gets working +#if 0 if (ui_descriptor) { free((void*)ui_descriptor->URI); delete ui_descriptor; } +#endif } void audioProcessorParameterChanged (AudioProcessor*, int index, float newValue) @@ -505,7 +515,7 @@ private: // LV2 descriptor functions LV2_Handle juce_lv2_instantiate(const LV2_Descriptor* descriptor, double sample_rate, const char* bundle_path, const LV2_Feature* const* features) { - MessageManagerLock mmLock; + const MessageManagerLock mmLock; JuceLV2Wrapper* wrapper = new JuceLV2Wrapper(descriptor, sample_rate, features); return wrapper; } @@ -536,7 +546,7 @@ void juce_lv2_deactivate(LV2_Handle instance) void juce_lv2_cleanup(LV2_Handle instance) { - MessageManagerLock mmLock; + const MessageManagerLock mmLock; JuceLV2Wrapper* wrapper = (JuceLV2Wrapper*)instance; wrapper->do_cleanup(); delete wrapper; @@ -551,11 +561,11 @@ const void* juce_lv2_extension_data(const char* uri) //============================================================================== LV2UI_Handle juce_lv2ui_instantiate(const LV2UI_Descriptor* descriptor, const char* plugin_uri, const char* bundle_path, LV2UI_Write_Function write_function, LV2UI_Controller controller, LV2UI_Widget* widget, const LV2_Feature* const* features) { - MessageManagerLock mmLock; for (uint16_t i = 0; features[i]; i++) { if (strcmp(features[i]->URI, LV2_INSTANCE_ACCESS_URI) == 0 && features[i]->data) { + const MessageManagerLock mmLock; JuceLV2Wrapper* wrapper = (JuceLV2Wrapper*)features[i]->data; JuceLv2Editor* editor = new JuceLv2Editor(wrapper, descriptor, write_function, controller, widget, features); return editor; @@ -567,7 +577,7 @@ LV2UI_Handle juce_lv2ui_instantiate(const LV2UI_Descriptor* descriptor, const ch void juce_lv2ui_port_event(LV2UI_Handle instance, uint32_t port_index, uint32_t buffer_size, uint32_t format, const void* buffer) { - MessageManagerLock mmLock; + const MessageManagerLock mmLock; JuceLv2Editor* editor = (JuceLv2Editor*)instance; if (buffer_size == sizeof(float) && format == 0) @@ -579,9 +589,9 @@ void juce_lv2ui_port_event(LV2UI_Handle instance, uint32_t port_index, uint32_t void juce_lv2ui_cleanup(LV2UI_Handle instance) { - MessageManagerLock mmLock; + const MessageManagerLock mmLock; JuceLv2Editor* editor = (JuceLv2Editor*)instance; - //editor->do_cleanup(); + editor->do_cleanup(); delete editor; } -- 2.11.4.GIT