diff --git a/plugins/Common/IldaeilPlugin.cpp b/plugins/Common/IldaeilPlugin.cpp index 3b9e364..e79855d 100644 --- a/plugins/Common/IldaeilPlugin.cpp +++ b/plugins/Common/IldaeilPlugin.cpp @@ -42,7 +42,7 @@ public: NativeHostDescriptor fCarlaHostDescriptor; CarlaHostHandle fCarlaHostHandle; - NativeTimeInfo fCarlaTimeInfo; + mutable NativeTimeInfo fCarlaTimeInfo; UI* fUI; @@ -100,7 +100,7 @@ public: fCarlaPluginDescriptor->cleanup(fCarlaPluginHandle); } - const NativeTimeInfo* getTimeInfo() + const NativeTimeInfo* hostGetTimeInfo() const noexcept { const TimePosition& timePos(getTimePosition()); @@ -119,7 +119,25 @@ public: return &fCarlaTimeInfo; } - void resizeUI(const uint width, const uint height) +#if DISTRHO_PLUGIN_WANT_MIDI_OUTPUT + bool hostWriteMidiEvent(const NativeMidiEvent* const event) + { + MidiEvent midiEvent; + midiEvent.frame = event->time; + midiEvent.size = event->size; + midiEvent.dataExt = nullptr; + + uint32_t i = 0; + for (; i < event->size; ++i) + midiEvent.data[i] = event->data[i]; + for (; i < MidiEvent::kDataSize; ++i) + midiEvent.data[i] = 0; + + return writeMidiEvent(midiEvent); + } +#endif + + void hostResizeUI(const uint width, const uint height) { DISTRHO_SAFE_ASSERT_RETURN(fUI != nullptr,); @@ -262,29 +280,37 @@ static bool host_is_offline(NativeHostHandle) return false; } -static const NativeTimeInfo* host_get_time_info(NativeHostHandle handle) +static const NativeTimeInfo* host_get_time_info(const NativeHostHandle handle) { - return static_cast(handle)->getTimeInfo(); + return static_cast(handle)->hostGetTimeInfo(); } -static bool host_write_midi_event(NativeHostHandle handle, const NativeMidiEvent* event) +static bool host_write_midi_event(const NativeHostHandle handle, const NativeMidiEvent* const event) { - return false; +#if DISTRHO_PLUGIN_WANT_MIDI_OUTPUT + return static_cast(handle)->hostWriteMidiEvent(event); +#else + return handle != nullptr && event != nullptr && false; +#endif } -static intptr_t host_dispatcher(NativeHostHandle handle, NativeHostDispatcherOpcode opcode, - int32_t index, intptr_t value, void* ptr, float opt) +static intptr_t host_dispatcher(const NativeHostHandle handle, const NativeHostDispatcherOpcode opcode, + const int32_t index, const intptr_t value, void* const ptr, const float opt) { switch (opcode) { case NATIVE_HOST_OPCODE_UI_RESIZE: - static_cast(handle)->resizeUI(index, value); + static_cast(handle)->hostResizeUI(index, value); break; default: break; } return 0; + + // unused + (void)ptr; + (void)opt; } /* ------------------------------------------------------------------------------------------------------------ diff --git a/plugins/Common/SizeUtils.cpp b/plugins/Common/SizeUtils.cpp index fdfae34..18fa047 100644 --- a/plugins/Common/SizeUtils.cpp +++ b/plugins/Common/SizeUtils.cpp @@ -34,13 +34,13 @@ START_NAMESPACE_DGL #elif defined(DISTRHO_OS_MAC) #elif defined(DISTRHO_OS_WINDOWS) #else -::Window getChildWindow(::Display* const display, const ::Window hostWindow) const +static ::Window getChildWindow(::Display* const display, const ::Window ourWindow) { ::Window rootWindow, parentWindow, ret = 0; ::Window* childWindows = nullptr; uint numChildren = 0; - XQueryTree(display, hostWindow, &rootWindow, &parentWindow, &childWindows, &numChildren); + XQueryTree(display, ourWindow, &rootWindow, &parentWindow, &childWindows, &numChildren); if (numChildren > 0 && childWindows != nullptr) { @@ -66,7 +66,7 @@ Size getChildWindowSize(const uintptr_t winId) #else if (::Display* const display = XOpenDisplay(nullptr)) { - if (const ::Window childWindow = getChildWindow(display, fOurWindowLookingToResize)) + if (const ::Window childWindow = getChildWindow(display, (::Window)winId)) { d_stdout("found child window"); @@ -97,7 +97,12 @@ Size getChildWindowSize(const uintptr_t winId) d_stdout("child window bounds %u %u", width, height); if (width > 1 && height > 1) + { + // XMoveWindow(display, (::Window)winId, 0, 40); + // XResizeWindow(display, (::Window)winId, width, height); + // XMoveWindow(display, childWindow, 0, 40); return Size(static_cast(width), static_cast(height)); + } } else d_stdout("child window without bounds"); diff --git a/plugins/FX/Makefile b/plugins/FX/Makefile index 36e34d6..29643f6 100644 --- a/plugins/FX/Makefile +++ b/plugins/FX/Makefile @@ -10,14 +10,14 @@ NAME = Ildaeil-FX # -------------------------------------------------------------- -# Files to build (DPF stuff) +# Files to build FILES_DSP = \ IldaeilPlugin.cpp FILES_UI = \ IldaeilUI.cpp \ - ../common/SizeUtils.cpp \ + ../Common/SizeUtils.cpp \ ../../dpf-widgets/opengl/DearImGui.cpp # -------------------------------------------------------------- @@ -33,10 +33,10 @@ endif EXTRA_LIBS += $(CARLA_BUILD_DIR)/plugin/$(CARLA_BUILD_TYPE)/carla-host-plugin.cpp.o EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/carla_engine_plugin.a EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/carla_plugin.a +EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/native-plugins.a EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/audio_decoder.a EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/jackbridge.a EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/lilv.a -EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/native-plugins.a EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/rtmempool.a EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/sfzero.a EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/water.a @@ -55,6 +55,7 @@ EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/juce_gui_extra.a include ../../dpf/Makefile.plugins.mk +BUILD_CXX_FLAGS += -pthread BUILD_CXX_FLAGS += -I../Common BUILD_CXX_FLAGS += -I../../dpf-widgets/generic BUILD_CXX_FLAGS += -I../../dpf-widgets/opengl @@ -64,7 +65,7 @@ BUILD_CXX_FLAGS += -I../../carla/source/backend BUILD_CXX_FLAGS += -I../../carla/source/includes ifeq ($(MACOS),true) -$(BUILD_DIR)/../common/SizeUtils.cpp.o: BUILD_CXX_FLAGS += -ObjC++ +$(BUILD_DIR)/../Common/SizeUtils.cpp.o: BUILD_CXX_FLAGS += -ObjC++ LINK_FLAGS += -framework AppKit LINK_FLAGS += -framework Accelerate LINK_FLAGS += -framework AudioToolbox @@ -76,6 +77,11 @@ LINK_FLAGS += -framework CoreAudioKit LINK_FLAGS += -framework Carbon LINK_FLAGS += -framework QuartzCore LINK_FLAGS += -framework IOKit +else ifeq ($(WIN32),true) +else ifeq ($(LINUX),true) +LINK_FLAGS += $(shell pkg-config --libs fluidsynth freetype2) +LINK_FLAGS += -ldl -lrt +LINK_FLAGS += -lmagic endif # BUILD_CXX_FLAGS += $(shell pkg-config --cflags carla-host-plugin carla-native-plugin carla-utils)