Browse Source

Fix linux build, implement MIDI out

Signed-off-by: falkTX <falktx@falktx.com>
tags/v1.0
falkTX 3 years ago
parent
commit
fba6ab6d24
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
3 changed files with 54 additions and 17 deletions
  1. +36
    -10
      plugins/Common/IldaeilPlugin.cpp
  2. +8
    -3
      plugins/Common/SizeUtils.cpp
  3. +10
    -4
      plugins/FX/Makefile

+ 36
- 10
plugins/Common/IldaeilPlugin.cpp View File

@@ -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<IldaeilPlugin*>(handle)->getTimeInfo();
return static_cast<IldaeilPlugin*>(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<IldaeilPlugin*>(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<IldaeilPlugin*>(handle)->resizeUI(index, value);
static_cast<IldaeilPlugin*>(handle)->hostResizeUI(index, value);
break;
default:
break;
}
return 0;
// unused
(void)ptr;
(void)opt;
}
/* ------------------------------------------------------------------------------------------------------------


+ 8
- 3
plugins/Common/SizeUtils.cpp View File

@@ -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<uint> 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<uint> 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<uint>(static_cast<uint>(width), static_cast<uint>(height));
}
}
else
d_stdout("child window without bounds");


+ 10
- 4
plugins/FX/Makefile View File

@@ -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)


Loading…
Cancel
Save