@@ -28,7 +28,7 @@ endif | |||
# -------------------------------------------------------------- | |||
# Plugin bridges | |||
BUILD_PLUGIN_FLAGS = $(BUILD_CXX_FLAGS) -DBUILD_BRIDGE_PLUGIN | |||
BUILD_PLUGIN_FLAGS = $(BUILD_CXX_FLAGS) -DBUILD_BRIDGE_PLUGIN -DBRIDGE_PLUGIN | |||
BUILD_PLUGIN_FLAGS += -DCARLA_ENGINE_JACK -I../carla-backend -I../carla-engine -I../carla-jackbridge -I../carla-plugin | |||
BUILD_PLUGIN_FLAGS += $(shell pkg-config --cflags jack) $(QT_UI_FLAGS) | |||
@@ -123,21 +123,24 @@ win64: carla-bridge-win64.exe | |||
# -------------------------------------------------------------- | |||
# UI common | |||
carla_bridge_osc__lv2.o: carla_bridge_osc.cpp | |||
%__lv2.o: %.cpp | |||
$(CXX) $< $(BUILD_UI_LV2_FLAGS) -c -o $@ | |||
carla_bridge_osc__vst.o: carla_bridge_osc.cpp | |||
%__vst.o: %.cpp | |||
$(CXX) $< $(BUILD_UI_VST_FLAGS) -c -o $@ | |||
OBJS_UI_LV2_LIBS = \ | |||
../carla-lilv/carla_lilv.a \ | |||
../carla-rtmempool/carla_rtmempool.a | |||
# -------------------------------------------------------------- | |||
# ui_lv2-gtk2 | |||
OBJS_UI_LV2_GTK2 = carla_bridge_ui-lv2__lv2-gtk2.o \ | |||
carla_bridge_client__lv2-gtk2.o carla_bridge_osc__lv2.o \ | |||
carla_bridge_toolkit__lv2-gtk2.o carla_bridge_toolkit-gtk__lv2-gtk2.o \ | |||
../carla-lilv/carla_lilv.a ../carla-rtmempool/carla_rtmempool.a | |||
carla_bridge_client__lv2.o carla_bridge_osc__lv2.o \ | |||
carla_bridge_toolkit__lv2.o carla_bridge_toolkit-gtk__lv2-gtk2.o | |||
carla-bridge-lv2-gtk2: $(OBJS_UI_LV2_GTK2) | |||
carla-bridge-lv2-gtk2: $(OBJS_UI_LV2_GTK2) $(OBJS_UI_LV2_LIBS) | |||
$(CXX) $^ $(LINK_UI_LV2_GTK2_FLAGS) -o $@ && $(STRIP) $@ | |||
%__lv2-gtk2.o: %.cpp | |||
@@ -147,11 +150,10 @@ carla-bridge-lv2-gtk2: $(OBJS_UI_LV2_GTK2) | |||
# ui_lv2-gtk3 | |||
OBJS_UI_LV2_GTK3 = carla_bridge_ui-lv2__lv2-gtk3.o \ | |||
carla_bridge_client__lv2-gtk3.o carla_bridge_osc__lv2.o \ | |||
carla_bridge_toolkit__lv2-gtk3.o carla_bridge_toolkit-gtk__lv2-gtk3.o \ | |||
../carla-lilv/carla_lilv.a ../carla-rtmempool/carla_rtmempool.a | |||
carla_bridge_client__lv2.o carla_bridge_osc__lv2.o \ | |||
carla_bridge_toolkit__lv2.o carla_bridge_toolkit-gtk__lv2-gtk3.o | |||
carla-bridge-lv2-gtk3: $(OBJS_UI_LV2_GTK3) | |||
carla-bridge-lv2-gtk3: $(OBJS_UI_LV2_GTK3) $(OBJS_UI_LV2_LIBS) | |||
$(CXX) $^ $(LINK_UI_LV2_GTK3_FLAGS) -o $@ && $(STRIP) $@ | |||
%__lv2-gtk3.o: %.cpp | |||
@@ -161,11 +163,10 @@ carla-bridge-lv2-gtk3: $(OBJS_UI_LV2_GTK3) | |||
# ui_lv2-qt4 | |||
OBJS_UI_LV2_QT4 = carla_bridge_ui-lv2__lv2-qt4.o \ | |||
carla_bridge_client__lv2-qt4.o carla_bridge_osc__lv2.o \ | |||
carla_bridge_toolkit__lv2-qt4.o carla_bridge_toolkit-qt__lv2-qt4.o \ | |||
../carla-lilv/carla_lilv.a ../carla-rtmempool/carla_rtmempool.a | |||
carla_bridge_client__lv2.o carla_bridge_osc__lv2.o \ | |||
carla_bridge_toolkit__lv2.o carla_bridge_toolkit-qt__lv2-qt4.o | |||
carla-bridge-lv2-qt4: $(OBJS_UI_LV2_QT4) | |||
carla-bridge-lv2-qt4: $(OBJS_UI_LV2_QT4) $(OBJS_UI_LV2_LIBS) | |||
$(CXX) $^ $(LINK_UI_LV2_QT4_FLAGS) -o $@ && $(STRIP) $@ | |||
%__lv2-qt4.o: %.cpp | |||
@@ -175,11 +176,10 @@ carla-bridge-lv2-qt4: $(OBJS_UI_LV2_QT4) | |||
# ui_lv2-qt5 | |||
OBJS_UI_LV2_QT5 = carla_bridge_ui-lv2__lv2-qt5.o \ | |||
carla_bridge_client__lv2-qt5.o carla_bridge_osc__lv2.o \ | |||
carla_bridge_toolkit__lv2-qt5.o carla_bridge_toolkit-qt__lv2-qt5.o \ | |||
../carla-lilv/carla_lilv.a ../carla-rtmempool/carla_rtmempool.a | |||
carla_bridge_client__lv2.o carla_bridge_osc__lv2.o \ | |||
carla_bridge_toolkit__lv2.o carla_bridge_toolkit-qt__lv2-qt5.o | |||
carla-bridge-lv2-qt5: $(OBJS_UI_LV2_QT5) | |||
carla-bridge-lv2-qt5: $(OBJS_UI_LV2_QT5) $(OBJS_UI_LV2_LIBS) | |||
$(CXX) $^ $(LINK_UI_LV2_QT5_FLAGS) -o $@ && $(STRIP) $@ | |||
%__lv2-qt5.o: %.cpp | |||
@@ -189,11 +189,10 @@ carla-bridge-lv2-qt5: $(OBJS_UI_LV2_QT5) | |||
# ui_lv2-x11 | |||
OBJS_UI_LV2_X11 = carla_bridge_ui-lv2__lv2-x11.o \ | |||
carla_bridge_client__lv2-x11.o carla_bridge_osc__lv2.o \ | |||
carla_bridge_toolkit__lv2-x11.o carla_bridge_toolkit-qt__lv2-x11.o \ | |||
../carla-lilv/carla_lilv.a ../carla-rtmempool/carla_rtmempool.a | |||
carla_bridge_client__lv2.o carla_bridge_osc__lv2.o \ | |||
carla_bridge_toolkit__lv2.o carla_bridge_toolkit-qt__lv2-x11.o | |||
carla-bridge-lv2-x11: $(OBJS_UI_LV2_X11) | |||
carla-bridge-lv2-x11: $(OBJS_UI_LV2_X11) $(OBJS_UI_LV2_LIBS) | |||
$(CXX) $^ $(LINK_UI_LV2_X11_FLAGS) -o $@ && $(STRIP) $@ | |||
%__lv2-x11.o: %.cpp | |||
@@ -203,8 +202,8 @@ carla-bridge-lv2-x11: $(OBJS_UI_LV2_X11) | |||
# ui_vst-hwnd | |||
OBJS_UI_VST_HWND = carla_bridge_ui-vst__vst-hwnd.o \ | |||
carla_bridge_client__vst-hwnd.o carla_bridge_osc__vst.o \ | |||
carla_bridge_toolkit__vst-hwnd.o carla_bridge_toolkit-qt__vst-hwnd.o | |||
carla_bridge_client__vst.o carla_bridge_osc__vst.o \ | |||
carla_bridge_toolkit__vst.o carla_bridge_toolkit-qt__vst-hwnd.o | |||
carla-bridge-vst-hwnd.exe: $(OBJS_UI_VST_HWND) | |||
$(CXX) $^ $(LINK_UI_VST_HWND_FLAGS) -o $@ && $(STRIP) $@ | |||
@@ -216,8 +215,8 @@ carla-bridge-vst-hwnd.exe: $(OBJS_UI_VST_HWND) | |||
# ui_vst-x11 | |||
OBJS_UI_VST_X11 = carla_bridge_ui-vst__vst-x11.o \ | |||
carla_bridge_client__vst-x11.o carla_bridge_osc__vst.o \ | |||
carla_bridge_toolkit__vst-x11.o carla_bridge_toolkit-qt__vst-x11.o | |||
carla_bridge_client__vst.o carla_bridge_osc__vst.o \ | |||
carla_bridge_toolkit__vst.o carla_bridge_toolkit-qt__vst-x11.o | |||
carla-bridge-vst-x11: $(OBJS_UI_VST_X11) | |||
$(CXX) $^ $(LINK_UI_VST_X11_FLAGS) -o $@ && $(STRIP) $@ | |||
@@ -228,193 +227,137 @@ carla-bridge-vst-x11: $(OBJS_UI_VST_X11) | |||
# -------------------------------------------------------------- | |||
# posix32 | |||
OBJS_POSIX32 = \ | |||
carla_bridge_plugin__posix32.o carla_bridge_osc__posix32.o \ | |||
carla_engine__posix32.o carla_engine_osc__posix32.o carla_engine_thread__posix32.o carla_engine_jack__posix32.o \ | |||
carla_plugin__posix32.o carla_plugin_thread__posix32.o ladspa__posix32.o dssi__posix32.o lv2__posix32.o vst__posix32.o \ | |||
../carla-lilv/carla_lilv_posix32.a ../carla-rtmempool/carla_rtmempool_posix32.a | |||
OBJS_POSIX32 = carla_bridge_plugin__posix32.o \ | |||
carla_bridge_client__posix32.o carla_bridge_osc__posix32.o \ | |||
carla_bridge_toolkit__posix32.o | |||
# carla-engine | |||
OBJS_POSIX32 += \ | |||
../carla-engine/carla_engine__posix32.o \ | |||
../carla-engine/carla_engine_osc__posix32.o \ | |||
../carla-engine/carla_engine_thread__posix32.o \ | |||
../carla-engine/jack__posix32.o | |||
# carla-plugin | |||
OBJS_POSIX32 += \ | |||
../carla-plugin/carla_plugin__posix32.o \ | |||
../carla-plugin/carla_plugin_thread__posix32.o \ | |||
../carla-plugin/ladspa__posix32.o \ | |||
../carla-plugin/dssi__posix32.o \ | |||
../carla-plugin/lv2__posix32.o \ | |||
../carla-plugin/vst__posix32.o | |||
# libs | |||
OBJS_POSIX32 += \ | |||
../carla-lilv/carla_lilv_posix32.a \ | |||
../carla-rtmempool/carla_rtmempool_posix32.a | |||
carla-bridge-posix32: $(OBJS_POSIX32) | |||
$(CXX) $^ $(POSIX_LINK_FLAGS) $(POSIX_32BIT_FLAGS) -o $@ && $(STRIP) $@ | |||
carla_bridge_plugin__posix32.o: carla_bridge_plugin.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ | |||
carla_bridge_osc__posix32.o: carla_bridge_osc.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ | |||
carla_engine__posix32.o: ../carla-engine/carla_engine.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ | |||
carla_engine_osc__posix32.o: ../carla-engine/carla_engine_osc.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ | |||
carla_engine_thread__posix32.o: ../carla-engine/carla_engine_thread.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ | |||
carla_engine_jack__posix32.o: ../carla-engine/jack.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ | |||
carla_plugin__posix32.o: ../carla-plugin/carla_plugin.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ | |||
carla_plugin_thread__posix32.o: ../carla-plugin/carla_plugin_thread.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ | |||
ladspa__posix32.o: ../carla-plugin/ladspa.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ | |||
dssi__posix32.o: ../carla-plugin/dssi.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ | |||
lv2__posix32.o: ../carla-plugin/lv2.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ | |||
vst__posix32.o: ../carla-plugin/vst.cpp | |||
%__posix32.o: %.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) -c -o $@ | |||
# -------------------------------------------------------------- | |||
# posix64 | |||
OBJS_POSIX64 = \ | |||
carla_bridge_plugin__posix64.o carla_bridge_osc__posix64.o \ | |||
carla_engine__posix64.o carla_engine_osc__posix64.o carla_engine_thread__posix64.o carla_engine_jack__posix64.o \ | |||
carla_plugin__posix64.o carla_plugin_thread__posix64.o ladspa__posix64.o dssi__posix64.o lv2__posix64.o vst__posix64.o \ | |||
../carla-lilv/carla_lilv_posix64.a ../carla-rtmempool/carla_rtmempool_posix64.a | |||
OBJS_POSIX64 = carla_bridge_plugin__posix64.o \ | |||
carla_bridge_client__posix64.o carla_bridge_osc__posix64.o \ | |||
carla_bridge_toolkit__posix64.o | |||
# carla-engine | |||
OBJS_POSIX64 += \ | |||
../carla-engine/carla_engine__posix64.o \ | |||
../carla-engine/carla_engine_osc__posix64.o \ | |||
../carla-engine/carla_engine_thread__posix64.o \ | |||
../carla-engine/jack__posix64.o | |||
# carla-plugin | |||
OBJS_POSIX64 += \ | |||
../carla-plugin/carla_plugin__posix64.o \ | |||
../carla-plugin/carla_plugin_thread__posix64.o \ | |||
../carla-plugin/ladspa__posix64.o \ | |||
../carla-plugin/dssi__posix64.o \ | |||
../carla-plugin/lv2__posix64.o \ | |||
../carla-plugin/vst__posix64.o | |||
# libs | |||
OBJS_POSIX64 += \ | |||
../carla-lilv/carla_lilv_posix64.a \ | |||
../carla-rtmempool/carla_rtmempool_posix64.a | |||
carla-bridge-posix64: $(OBJS_POSIX64) | |||
$(CXX) $^ $(POSIX_LINK_FLAGS) $(POSIX_64BIT_FLAGS) -o $@ && $(STRIP) $@ | |||
carla_bridge_plugin__posix64.o: carla_bridge_plugin.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | |||
carla_bridge_osc__posix64.o: carla_bridge_osc.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | |||
carla_engine__posix64.o: ../carla-engine/carla_engine.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | |||
carla_engine_osc__posix64.o: ../carla-engine/carla_engine_osc.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | |||
carla_engine_thread__posix64.o: ../carla-engine/carla_engine_thread.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | |||
carla_engine_jack__posix64.o: ../carla-engine/jack.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | |||
carla_plugin__posix64.o: ../carla-plugin/carla_plugin.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | |||
carla_plugin_thread__posix64.o: ../carla-plugin/carla_plugin_thread.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | |||
ladspa__posix64.o: ../carla-plugin/ladspa.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | |||
dssi__posix64.o: ../carla-plugin/dssi.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | |||
lv2__posix64.o: ../carla-plugin/lv2.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | |||
vst__posix64.o: ../carla-plugin/vst.cpp | |||
%__posix64.o: %.cpp | |||
$(CXX) $< $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) -c -o $@ | |||
# -------------------------------------------------------------- | |||
# win32 | |||
OBJS_WIN32 = \ | |||
carla_bridge_plugin__win32.o carla_bridge_osc__win32.o \ | |||
carla_engine__win32.o carla_engine_osc__win32.o carla_engine_thread__win32.o carla_engine_jack__win32.o \ | |||
carla_plugin__win32.o carla_plugin_thread__win32.o ladspa__win32.o dssi__win32.o lv2__win32.o vst__win32.o \ | |||
../carla-lilv/carla_lilv_win32.a ../carla-rtmempool/carla_rtmempool_win32.a | |||
OBJS_WIN32 = carla_bridge_plugin__win32.o \ | |||
carla_bridge_client__win32.o carla_bridge_osc__win32.o \ | |||
carla_bridge_toolkit__win32.o | |||
# carla-engine | |||
OBJS_WIN32 += \ | |||
../carla-engine/carla_engine__win32.o \ | |||
../carla-engine/carla_engine_osc__win32.o \ | |||
../carla-engine/carla_engine_thread__win32.o \ | |||
../carla-engine/jack__win32.o | |||
# carla-plugin | |||
OBJS_WIN32 += \ | |||
../carla-plugin/carla_plugin__win32.o \ | |||
../carla-plugin/carla_plugin_thread__win32.o \ | |||
../carla-plugin/ladspa__win32.o \ | |||
../carla-plugin/dssi__win32.o \ | |||
../carla-plugin/lv2__win32.o \ | |||
../carla-plugin/vst__win32.o | |||
# libs | |||
OBJS_WIN32 += \ | |||
../carla-lilv/carla_lilv_win32.a \ | |||
../carla-rtmempool/carla_rtmempool_win32.a | |||
carla-bridge-win32.exe: $(OBJS_WIN32) ../carla-jackbridge/libcarla-jackbridge-win32.dll | |||
$(CXX) $(OBJS_WIN32) $(WIN_32BIT_FLAGS) $(WIN_LINK_FLAGS) -lcarla-jackbridge-win32 -o $@ && $(STRIP) $@ | |||
carla_bridge_plugin__win32.o: carla_bridge_plugin.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
carla_bridge_osc__win32.o: carla_bridge_osc.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
carla_engine__win32.o: ../carla-engine/carla_engine.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
carla_engine_osc__win32.o: ../carla-engine/carla_engine_osc.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
carla_engine_thread__win32.o: ../carla-engine/carla_engine_thread.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
carla_engine_jack__win32.o: ../carla-engine/jack.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
carla_plugin__win32.o: ../carla-plugin/carla_plugin.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
carla_plugin_thread__win32.o: ../carla-plugin/carla_plugin_thread.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
ladspa__win32.o: ../carla-plugin/ladspa.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
dssi__win32.o: ../carla-plugin/dssi.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
lv2__win32.o: ../carla-plugin/lv2.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
vst__win32.o: ../carla-plugin/vst.cpp | |||
%__win32.o: %.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) -c -o $@ | |||
# -------------------------------------------------------------- | |||
# win64 | |||
OBJS_WIN64 = \ | |||
carla_bridge_plugin__win64.o carla_bridge_osc__win64.o \ | |||
carla_engine__win64.o carla_engine_osc__win64.o carla_engine_thread__win64.o carla_engine_jack__win64.o \ | |||
carla_plugin__win64.o carla_plugin_thread__win64.o ladspa__win64.o dssi__win64.o lv2__win64.o vst__win64.o \ | |||
../carla-lilv/carla_lilv_win64.a ../carla-rtmempool/carla_rtmempool_win64.a | |||
OBJS_WIN64 = carla_bridge_plugin__win64.o \ | |||
carla_bridge_client__win64.o carla_bridge_osc__win64.o \ | |||
carla_bridge_toolkit__win64.o | |||
# carla-engine | |||
OBJS_WIN64 += \ | |||
../carla-engine/carla_engine__win64.o \ | |||
../carla-engine/carla_engine_osc__win64.o \ | |||
../carla-engine/carla_engine_thread__win64.o \ | |||
../carla-engine/jack__win64.o | |||
# carla-plugin | |||
OBJS_WIN64 += \ | |||
../carla-plugin/carla_plugin__win64.o \ | |||
../carla-plugin/carla_plugin_thread__win64.o \ | |||
../carla-plugin/ladspa__win64.o \ | |||
../carla-plugin/dssi__win64.o \ | |||
../carla-plugin/lv2__win64.o \ | |||
../carla-plugin/vst__win64.o | |||
# libs | |||
OBJS_WIN64 += \ | |||
../carla-lilv/carla_lilv_win64.a \ | |||
../carla-rtmempool/carla_rtmempool_win64.a | |||
carla-bridge-win64.exe: $(OBJS_WIN64) ../carla-jackbridge/libcarla-jackbridge-win64.dll | |||
$(CXX) $(OBJS_WIN64) $(WIN_64BIT_FLAGS) $(WIN_LINK_FLAGS) -lcarla-jackbridge-win64 -o $@ && $(STRIP) $@ | |||
carla_bridge_plugin__win64.o: carla_bridge_plugin.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
carla_bridge_osc__win64.o: carla_bridge_osc.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
carla_engine__win64.o: ../carla-engine/carla_engine.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
carla_engine_osc__win64.o: ../carla-engine/carla_engine_osc.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
carla_engine_thread__win64.o: ../carla-engine/carla_engine_thread.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
carla_engine_jack__win64.o: ../carla-engine/jack.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
carla_plugin__win64.o: ../carla-plugin/carla_plugin.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
carla_plugin_thread__win64.o: ../carla-plugin/carla_plugin_thread.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
ladspa__win64.o: ../carla-plugin/ladspa.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
dssi__win64.o: ../carla-plugin/dssi.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
lv2__win64.o: ../carla-plugin/lv2.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
vst__win64.o: ../carla-plugin/vst.cpp | |||
%__win64.o: %.cpp | |||
$(CXX) $< $(WIN_BUILD_FLAGS) $(WIN_64BIT_FLAGS) -c -o $@ | |||
# -------------------------------------------------------------- | |||
@@ -464,3 +407,4 @@ clean: | |||
rm -f *.o *.dll *.so *.exe | |||
rm -f carla-bridge-lv2-gtk2 carla-bridge-lv2-gtk3 carla-bridge-lv2-qt4 carla-bridge-lv2-qt5 carla-bridge-lv2-x11 carla-bridge-vst-x11 | |||
rm -f carla-bridge-posix32 carla-bridge-posix64 | |||
rm -f $(OBJS_POSIX32) $(OBJS_POSIX64) $(OBJS_WIN32) $(OBJS_WIN64) |
@@ -142,13 +142,14 @@ void CarlaBridgeClient::sendOscUpdate() | |||
} | |||
#ifdef BUILD_BRIDGE_PLUGIN | |||
void CarlaBridgeClient::registerOscEngine(CarlaBackend::CarlaEngine* const engine) | |||
void CarlaBridgeClient::sendOscBridgeUpdate() | |||
{ | |||
qDebug("CarlaBridgeClient::registerOscEngine(%p)", engine); | |||
CARLA_ASSERT(engine); | |||
qDebug("CarlaBridgeClient::sendOscBridgeUpdate()"); | |||
CARLA_ASSERT(m_oscData); | |||
CARLA_ASSERT(m_oscData->target && m_oscData->path); | |||
if (engine) | |||
engine->setOscBridgeData(m_oscData); | |||
if (m_oscData && m_oscData->target && m_oscData->path) | |||
osc_send_bridge_update(m_oscData, m_oscData->path); | |||
} | |||
void CarlaBridgeClient::sendOscBridgeError(const char* const error) | |||
@@ -279,18 +280,6 @@ void CarlaBridgeClient::sendOscLv2TransferEvent(const int32_t portIndex, const c | |||
} | |||
#endif | |||
#ifdef BUILD_BRIDGE_PLUGIN | |||
void CarlaBridgeClient::sendOscBridgeUpdate() | |||
{ | |||
qDebug("CarlaBridgeClient::sendOscBridgeUpdate()"); | |||
CARLA_ASSERT(m_oscData); | |||
CARLA_ASSERT(m_oscData->target && m_osc.m_serverPath); | |||
if (m_oscData && m_oscData->target && m_osc.m_serverPath) | |||
osc_send_bridge_update(m_oscData, m_osc.m_serverPath); | |||
} | |||
#endif | |||
// --------------------------------------------------------------------- | |||
#ifdef BUILD_BRIDGE_UI | |||
@@ -20,12 +20,6 @@ | |||
#include "carla_bridge_osc.hpp" | |||
#ifdef BUILD_BRIDGE_PLUGIN | |||
namespace CarlaBackend { | |||
class CarlaEngine; | |||
} | |||
#endif | |||
CARLA_BRIDGE_START_NAMESPACE | |||
#if 0 | |||
@@ -96,7 +90,7 @@ public: | |||
void sendOscUpdate(); | |||
#ifdef BUILD_BRIDGE_PLUGIN | |||
void registerOscEngine(CarlaBackend::CarlaEngine* const engine); | |||
void sendOscBridgeUpdate(); | |||
void sendOscBridgeError(const char* const error); | |||
#endif | |||
@@ -124,10 +118,6 @@ protected: | |||
void sendOscLv2TransferEvent(const int32_t portIndex, const char* const typeStr, const char* const atomBuf); | |||
#endif | |||
#ifdef BUILD_BRIDGE_PLUGIN | |||
void sendOscBridgeUpdate(); | |||
#endif | |||
// --------------------------------------------------------------------- | |||
#ifdef BUILD_BRIDGE_UI | |||
@@ -150,6 +140,8 @@ private: | |||
char* m_uiFilename; | |||
void* m_uiLib; | |||
bool m_uiQuit; | |||
#else | |||
friend class CarlaPluginClient; | |||
#endif | |||
}; | |||
@@ -15,25 +15,29 @@ | |||
* For a full copy of the GNU General Public License see the COPYING file | |||
*/ | |||
#ifdef BUILD_BRIDGE_PLUGIN | |||
#ifdef BRIDGE_PLUGIN | |||
#include "carla_bridge_client.hpp" | |||
#include "carla_backend_utils.hpp" | |||
#include "carla_bridge_toolkit.hpp" | |||
#include "carla_plugin.hpp" | |||
#include <set> | |||
//#include <QtCore/QTimerEvent> | |||
#include <QtCore/QDir> | |||
#include <QtCore/QFile> | |||
#include <QtCore/QTextStream> | |||
#include <QtCore/QTimerEvent> | |||
#include <QtGui/QApplication> | |||
#include <QtGui/QMainWindow> | |||
#include <QtGui/QtEvents> | |||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)) | |||
# include <QtWidgets/QApplication> | |||
#else | |||
# include <QtGui/QApplication> | |||
#endif | |||
#ifdef Q_OS_UNIX | |||
# include <signal.h> | |||
#endif | |||
// ------------------------------------------------------------------------- | |||
static int qargc = 0; | |||
static char** qargv = nullptr; | |||
static bool qCloseNow = false; | |||
@@ -94,307 +98,261 @@ CARLA_BRIDGE_START_NAMESPACE | |||
// ------------------------------------------------------------------------- | |||
class BridgePluginGUI : public QMainWindow | |||
class CarlaBridgeToolkitPlugin : public CarlaBridgeToolkit, | |||
public CarlaBackend::CarlaPluginGUI::Callback | |||
{ | |||
public: | |||
class Callback | |||
{ | |||
public: | |||
virtual ~Callback() {} | |||
virtual void guiClosedCallback() = 0; | |||
}; | |||
BridgePluginGUI(QWidget* const parent, Callback* const callback_) | |||
: QMainWindow(parent), | |||
callback(callback_) | |||
CarlaBridgeToolkitPlugin(CarlaBridgeClient* const client, const char* const uiTitle) | |||
: CarlaBridgeToolkit(client, uiTitle) | |||
{ | |||
qDebug("BridgePluginGUI::BridgePluginGUI(%p, %p", parent, callback); | |||
CARLA_ASSERT(callback); | |||
m_firstShow = true; | |||
m_resizable = true; | |||
qDebug("CarlaBridgeToolkitPlugin::CarlaBridgeToolkitPlugin(%p, \"%s\")", client, uiTitle); | |||
container = new GuiContainer(this); | |||
setCentralWidget(container); | |||
app = nullptr; | |||
gui = nullptr; | |||
setNewSize(50, 50); | |||
} | |||
~BridgePluginGUI() | |||
{ | |||
qDebug("BridgePluginGUI::~BridgePluginGUI()"); | |||
CARLA_ASSERT(container); | |||
m_uiQuit = false; | |||
m_uiShow = true; | |||
delete container; | |||
init(); | |||
} | |||
GuiContainer* getContainer() | |||
~CarlaBridgeToolkitPlugin() | |||
{ | |||
return container; | |||
qDebug("CarlaBridgeToolkitPlugin::~CarlaBridgeToolkitPlugin()"); | |||
CARLA_ASSERT(! app); | |||
CARLA_ASSERT(! gui); | |||
} | |||
void setResizable(bool resizable) | |||
void init() | |||
{ | |||
m_resizable = resizable; | |||
setNewSize(width(), height()); | |||
qDebug("CarlaBridgeToolkitPlugin::init()"); | |||
CARLA_ASSERT(! app); | |||
CARLA_ASSERT(! gui); | |||
#ifdef Q_OS_WIN | |||
if (! resizable) | |||
setWindowFlags(windowFlags() | Qt::MSWindowsFixedSizeDialogHint); | |||
#endif | |||
} | |||
app = new QApplication(qargc, qargv); | |||
void setTitle(const char* title) | |||
{ | |||
CARLA_ASSERT(title); | |||
setWindowTitle(QString("%1 (GUI)").arg(title)); | |||
gui = new CarlaBackend::CarlaPluginGUI(nullptr, this); | |||
} | |||
void setNewSize(int width, int height) | |||
void exec(const bool showGui) | |||
{ | |||
qDebug("BridgePluginGUI::setNewSize(%i, %i)", width, height); | |||
qDebug("CarlaBridgeToolkitPlugin::exec(%s)", bool2str(showGui)); | |||
CARLA_ASSERT(app); | |||
CARLA_ASSERT(gui); | |||
CARLA_ASSERT(client); | |||
if (width < 30) | |||
width = 30; | |||
if (height < 30) | |||
height = 30; | |||
if (m_resizable) | |||
if (showGui) | |||
{ | |||
resize(width, height); | |||
if (m_uiShow) | |||
show(); | |||
} | |||
else | |||
{ | |||
setFixedSize(width, height); | |||
container->setFixedSize(width, height); | |||
app->setQuitOnLastWindowClosed(false); | |||
client->sendOscUpdate(); | |||
client->sendOscBridgeUpdate(); | |||
} | |||
m_uiQuit = showGui; | |||
// Main loop | |||
app->exec(); | |||
} | |||
void setVisible(const bool yesNo) | |||
void quit() | |||
{ | |||
qDebug("BridgePluginGUI::setVisible(%s)", bool2str(yesNo)); | |||
qDebug("CarlaBridgeToolkitPlugin::quit()"); | |||
CARLA_ASSERT(app); | |||
if (yesNo) | |||
if (gui) | |||
{ | |||
if (m_firstShow) | |||
{ | |||
m_firstShow = false; | |||
restoreGeometry(QByteArray()); | |||
} | |||
else if (! m_geometry.isNull()) | |||
restoreGeometry(m_geometry); | |||
gui->close(); | |||
delete gui; | |||
gui = nullptr; | |||
} | |||
else | |||
m_geometry = saveGeometry(); | |||
QMainWindow::setVisible(yesNo); | |||
if (app) | |||
{ | |||
if (! app->closingDown()) | |||
app->quit(); | |||
delete app; | |||
app = nullptr; | |||
} | |||
} | |||
protected: | |||
void hideEvent(QHideEvent* const event) | |||
void show() | |||
{ | |||
qDebug("BridgePluginGUI::hideEvent(%p)", event); | |||
qDebug("CarlaBridgeToolkitPlugin::show()"); | |||
CARLA_ASSERT(gui); | |||
event->accept(); | |||
close(); | |||
if (gui && m_uiShow) | |||
gui->setVisible(true); | |||
} | |||
void closeEvent(QCloseEvent* const event) | |||
void hide() | |||
{ | |||
qDebug("BridgePluginGUI::closeEvent(%p)", event); | |||
qDebug("CarlaBridgeToolkitPlugin::hide()"); | |||
CARLA_ASSERT(gui); | |||
if (event->spontaneous()) | |||
{ | |||
callback->guiClosedCallback(); | |||
QMainWindow::closeEvent(event); | |||
return; | |||
} | |||
if (gui && m_uiShow) | |||
gui->setVisible(false); | |||
} | |||
void resize(const int width, const int height) | |||
{ | |||
qDebug("CarlaBridgeToolkitPlugin::resize(%i, %i)", width, height); | |||
CARLA_ASSERT(gui); | |||
event->ignore(); | |||
if (gui) | |||
gui->setNewSize(width, height); | |||
} | |||
private: | |||
Callback* const callback; | |||
GuiContainer* getContainer() const | |||
{ | |||
CARLA_ASSERT(gui); | |||
if (gui) | |||
return gui->getContainer(); | |||
return nullptr; | |||
} | |||
GuiContainer* container; | |||
void* getContainerId() | |||
{ | |||
CARLA_ASSERT(gui); | |||
if (gui) | |||
return (void*)gui->getWinId(); | |||
return nullptr; | |||
} | |||
bool m_firstShow; | |||
bool m_resizable; | |||
QByteArray m_geometry; | |||
void hasUI(const bool yesNo) | |||
{ | |||
m_uiShow = yesNo; | |||
} | |||
protected: | |||
QApplication* app; | |||
CarlaBackend::CarlaPluginGUI* gui; | |||
void guiClosedCallback(); | |||
private: | |||
bool m_uiQuit; | |||
bool m_uiShow; | |||
}; | |||
CarlaBridgeToolkit* CarlaBridgeToolkit::createNew(CarlaBridgeClient* const client, const char* const uiTitle) | |||
{ | |||
return new CarlaBridgeToolkitPlugin(client, uiTitle); | |||
} | |||
// ------------------------------------------------------------------------- | |||
class BridgePluginClient : public CarlaBridgeToolkit, | |||
public CarlaBridgeClient, | |||
public BridgePluginGUI::Callback, | |||
public QApplication | |||
class CarlaPluginClient : public CarlaBridgeClient, | |||
public QObject | |||
{ | |||
public: | |||
BridgePluginClient() | |||
: CarlaBridgeToolkit("carla-bridge-plugin"), | |||
CarlaBridgeClient("ui title"), | |||
QApplication(qargc, qargv, true) | |||
CarlaPluginClient() | |||
: CarlaBridgeClient(""), | |||
QObject(nullptr) | |||
{ | |||
qDebug("BridgePluginClient::BridgePluginClient()"); | |||
qDebug("CarlaPluginClient::CarlaPluginClient()"); | |||
msgTimerGUI = 0; | |||
msgTimerOSC = 0; | |||
engine = nullptr; | |||
plugin = nullptr; | |||
pluginGui = nullptr; | |||
m_client = this; | |||
m_doQuit = false; | |||
m_hasUI = false; | |||
m_qt4UI = false; | |||
m_needsResize = false; | |||
m_nextSize[0] = 0; | |||
m_nextSize[1] = 0; | |||
engine = nullptr; | |||
plugin = nullptr; | |||
} | |||
~BridgePluginClient() | |||
~CarlaPluginClient() | |||
{ | |||
qDebug("BridgePluginClient::~BridgePluginClient()"); | |||
qDebug("CarlaPluginClient::~CarlaPluginClient()"); | |||
CARLA_ASSERT(msgTimerGUI == 0); | |||
CARLA_ASSERT(msgTimerOSC == 0); | |||
CARLA_ASSERT(! pluginGui); | |||
} | |||
void setStuff(CarlaBackend::CarlaEngine* const engine, CarlaBackend::CarlaPlugin* const plugin) | |||
{ | |||
qDebug("BridgePluginClient::setStuff(%p, %p)", engine, plugin); | |||
CARLA_ASSERT(engine); | |||
CARLA_ASSERT(plugin); | |||
this->engine = engine; | |||
this->plugin = plugin; | |||
} | |||
// --------------------------------------------------------------------- | |||
// toolkit | |||
void init() | |||
{ | |||
qDebug("BridgePluginClient::init()"); | |||
pluginGui = new BridgePluginGUI(nullptr, this); | |||
pluginGui->hide(); | |||
} | |||
CARLA_ASSERT(plugin); | |||
void exec(CarlaClient* const, const bool showGui) | |||
{ | |||
qDebug("BridgePluginClient::exec()"); | |||
msgTimerGUI = startTimer(50); | |||
msgTimerOSC = startTimer(25); | |||
if (showGui) | |||
{ | |||
if (m_hasUI) | |||
show(); | |||
if (! plugin) | |||
return; | |||
m_doQuit = true; | |||
} | |||
else | |||
{ | |||
CarlaClient::sendOscUpdate(); | |||
CarlaClient::sendOscBridgeUpdate(); | |||
QApplication::setQuitOnLastWindowClosed(false); | |||
} | |||
// create window if needed | |||
bool guiResizable; | |||
CarlaBackend::GuiType guiType; | |||
plugin->getGuiInfo(&guiType, &guiResizable); | |||
msgTimerGUI = startTimer(50); | |||
msgTimerOSC = startTimer(25); | |||
CarlaBridgeToolkitPlugin* const plugToolkit = (CarlaBridgeToolkitPlugin*)m_toolkit; | |||
plugToolkit->hasUI(guiType != CarlaBackend::GUI_NONE); | |||
QApplication::exec(); | |||
if (guiType == CarlaBackend::GUI_INTERNAL_QT4 || guiType == CarlaBackend::GUI_INTERNAL_COCOA || guiType == CarlaBackend::GUI_INTERNAL_HWND || guiType == CarlaBackend::GUI_INTERNAL_X11) | |||
plugin->setGuiContainer(plugToolkit->getContainer()); | |||
} | |||
void quit() | |||
{ | |||
qDebug("BridgePluginClient::quit()"); | |||
if (msgTimerGUI != 0) | |||
{ | |||
QApplication::killTimer(msgTimerGUI); | |||
killTimer(msgTimerGUI); | |||
msgTimerGUI = 0; | |||
} | |||
if (msgTimerOSC != 0) | |||
{ | |||
QApplication::killTimer(msgTimerOSC); | |||
killTimer(msgTimerOSC); | |||
msgTimerOSC = 0; | |||
} | |||
if (pluginGui) | |||
{ | |||
if (pluginGui->isVisible()) | |||
hide(); | |||
pluginGui->close(); | |||
delete pluginGui; | |||
pluginGui = nullptr; | |||
} | |||
if (! QApplication::closingDown()) | |||
QApplication::quit(); | |||
} | |||
void show() | |||
{ | |||
qDebug("BridgePluginClient::show()"); | |||
CARLA_ASSERT(pluginGui); | |||
if (plugin) | |||
plugin->showGui(true); | |||
if (pluginGui && m_qt4UI) | |||
pluginGui->show(); | |||
} | |||
// --------------------------------------------------------------------- | |||
void hide() | |||
void setEngine(CarlaBackend::CarlaEngine* const engine) | |||
{ | |||
qDebug("BridgePluginClient::hide()"); | |||
CARLA_ASSERT(pluginGui); | |||
qDebug("CarlaPluginClient::setEngine(%p)", engine); | |||
CARLA_ASSERT(engine); | |||
if (pluginGui && m_qt4UI) | |||
pluginGui->hide(); | |||
this->engine = engine; | |||
if (plugin) | |||
plugin->showGui(false); | |||
engine->setOscBridgeData(m_oscData); | |||
} | |||
void resize(int width, int height) | |||
void setPlugin(CarlaBackend::CarlaPlugin* const plugin) | |||
{ | |||
qDebug("BridgePluginClient::resize(%i, %i)", width, height); | |||
CARLA_ASSERT(pluginGui); | |||
qDebug("CarlaPluginClient::setPlugin(%p)", plugin); | |||
CARLA_ASSERT(plugin); | |||
if (pluginGui) | |||
pluginGui->setNewSize(width, height); | |||
this->plugin = plugin; | |||
} | |||
// --------------------------------------------------------------------- | |||
void createWindow(const bool resizable) | |||
void guiClosed() | |||
{ | |||
qDebug("BridgePluginClient::createWindow(%s)", bool2str(resizable)); | |||
CARLA_ASSERT(plugin); | |||
CARLA_ASSERT(pluginGui); | |||
if (! (plugin && pluginGui)) | |||
return; | |||
m_hasUI = true; | |||
m_qt4UI = true; | |||
pluginGui->setResizable(resizable); | |||
pluginGui->setTitle(plugin->name()); | |||
CARLA_ASSERT(engine); | |||
plugin->setGuiContainer(pluginGui->getContainer()); | |||
if (engine) | |||
engine->osc_send_bridge_configure(CarlaBackend::CARLA_BRIDGE_MSG_HIDE_GUI, ""); | |||
} | |||
void enableUI() | |||
// --------------------------------------------------------------------- | |||
static void callback(void* const ptr, CarlaBackend::CallbackType const action, const unsigned short, const int value1, const int value2, const double value3, const char* const valueStr) | |||
{ | |||
m_hasUI = true; | |||
CARLA_ASSERT(ptr); | |||
if (CarlaPluginClient* const _this_ = (CarlaPluginClient*)ptr) | |||
_this_->handleCallback(action, value1, value2, value3, valueStr); | |||
} | |||
// --------------------------------------------------------------------- | |||
@@ -405,10 +363,8 @@ public: | |||
qDebug("CarlaPluginClient::setParameter(%i, %g)", rindex, value); | |||
CARLA_ASSERT(plugin); | |||
if (! plugin) | |||
return; | |||
plugin->setParameterValueByRIndex(rindex, value, true, true, false); | |||
if (plugin) | |||
plugin->setParameterValueByRIndex(rindex, value, true, true, false); | |||
} | |||
void setProgram(const uint32_t index) | |||
@@ -571,7 +527,12 @@ public: | |||
} | |||
// --------------------------------------------------------------------- | |||
// callback | |||
protected: | |||
int msgTimerGUI, msgTimerOSC; | |||
CarlaBackend::CarlaEngine* engine; | |||
CarlaBackend::CarlaPlugin* plugin; | |||
void handleCallback(const CarlaBackend::CallbackType action, const int value1, const int value2, const double value3, const char* const valueStr) | |||
{ | |||
@@ -579,167 +540,99 @@ public: | |||
if (! engine) | |||
return; | |||
} | |||
switch (action) | |||
{ | |||
case CarlaBackend::CALLBACK_PARAMETER_VALUE_CHANGED: | |||
#if 0 | |||
parametersToUpdate.insert(value1); | |||
#endif | |||
engine->osc_send_bridge_set_parameter_value(value1, value3); | |||
break; | |||
case CarlaBackend::CALLBACK_PROGRAM_CHANGED: | |||
engine->osc_send_bridge_set_program(value1); | |||
break; | |||
case CarlaBackend::CALLBACK_MIDI_PROGRAM_CHANGED: | |||
engine->osc_send_bridge_set_midi_program(value1); | |||
break; | |||
void timerEvent(QTimerEvent* const event) | |||
{ | |||
if (qCloseNow) | |||
return toolkitQuit(); | |||
case CarlaBackend::CALLBACK_NOTE_ON: | |||
if (qSaveNow) | |||
{ | |||
//uint8_t mdata[4] = { 0, MIDI_STATUS_NOTE_ON, (uint8_t)value1, (uint8_t)value2 }; | |||
//osc_send_midi(mdata); | |||
break; | |||
// TODO | |||
qSaveNow = false; | |||
} | |||
case CarlaBackend::CALLBACK_NOTE_OFF: | |||
if (event->timerId() == msgTimerGUI) | |||
{ | |||
//uint8_t mdata[4] = { 0, MIDI_STATUS_NOTE_OFF, (uint8_t)value1, (uint8_t)value2 }; | |||
//osc_send_midi(mdata); | |||
break; | |||
if (plugin) | |||
plugin->idleGui(); | |||
} | |||
else if (event->timerId() == msgTimerOSC) | |||
{ | |||
if (isOscControlRegistered()) | |||
oscIdle(); | |||
} | |||
case CarlaBackend::CALLBACK_SHOW_GUI: | |||
if (value1 == 0) | |||
{ | |||
engine->osc_send_bridge_configure(CarlaBackend::CARLA_BRIDGE_MSG_HIDE_GUI, ""); | |||
if (m_doQuit) | |||
qCloseNow = true; | |||
} | |||
break; | |||
case CarlaBackend::CALLBACK_RESIZE_GUI: | |||
CARLA_ASSERT(value1 > 0 && value2 > 0); | |||
CARLA_ASSERT(pluginGui); | |||
if (value1 > 0 && value2 > 0 && pluginGui) | |||
{ | |||
m_needsResize = true; | |||
m_nextSize[0] = value1; | |||
m_nextSize[1] = value2; | |||
} | |||
break; | |||
QObject::timerEvent(event); | |||
} | |||
}; | |||
case CarlaBackend::CALLBACK_RELOAD_PARAMETERS: | |||
//if (CARLA_PLUGIN) | |||
//{ | |||
// for (uint32_t i=0; i < CARLA_PLUGIN->parameterCount(); i++) | |||
// { | |||
// osc_send_control(i, CARLA_PLUGIN->getParameterValue(i)); | |||
// } | |||
//} | |||
break; | |||
// ------------------------------------------------------------------------- | |||
case CarlaBackend::CALLBACK_QUIT: | |||
//QApplication::quit(); | |||
break; | |||
void CarlaBridgeToolkitPlugin::guiClosedCallback() | |||
{ | |||
CarlaPluginClient* const plugClient = (CarlaPluginClient*)client; | |||
default: | |||
break; | |||
} | |||
if (m_uiQuit) | |||
{ | |||
plugClient->quit(); | |||
quit(); | |||
} | |||
// --------------------------------------------------------------------- | |||
static void callback(void* const ptr, CarlaBackend::CallbackType const action, const unsigned short, const int value1, const int value2, const double value3, const char* const valueStr) | |||
else | |||
{ | |||
CARLA_ASSERT(ptr); | |||
plugClient->guiClosed(); | |||
} | |||
} | |||
if (! ptr) | |||
return; | |||
// ------------------------------------------------------------------------- | |||
BridgePluginClient* const _this_ = (BridgePluginClient*)ptr; | |||
_this_->handleCallback(action, value1, value2, value3, valueStr); | |||
} | |||
int CarlaBridgeOsc::handleMsgPluginSaveNow() | |||
{ | |||
qDebug("CarlaBridgeOsc::handleMsgPluginSaveNow()"); | |||
protected: | |||
void guiClosedCallback() | |||
{ | |||
if (engine) | |||
engine->osc_send_bridge_configure(CarlaBackend::CARLA_BRIDGE_MSG_HIDE_GUI, ""); | |||
} | |||
if (! client) | |||
return 1; | |||
void timerEvent(QTimerEvent* const event) | |||
{ | |||
if (qCloseNow) | |||
return quit(); | |||
CarlaPluginClient* const plugClient = (CarlaPluginClient*)client; | |||
plugClient->saveNow(); | |||
if (qSaveNow) | |||
{ | |||
// TODO | |||
qSaveNow = false; | |||
} | |||
return 0; | |||
} | |||
if (event->timerId() == msgTimerGUI) | |||
{ | |||
#if 0 | |||
if (parametersToUpdate.size() > 0) | |||
{ | |||
for (auto it = parametersToUpdate.begin(); it != parametersToUpdate.end(); it++) | |||
{ | |||
const int32_t paramId(*it); | |||
engine->osc_send_bridge_set_parameter_value(paramId, plugin->getParameterValue(paramId)); | |||
} | |||
int CarlaBridgeOsc::handleMsgPluginSetChunk(CARLA_BRIDGE_OSC_HANDLE_ARGS) | |||
{ | |||
qDebug("CarlaBridgeOsc::handleMsgPluginSaveNow()"); | |||
CARLA_BRIDGE_OSC_CHECK_OSC_TYPES(1, "s"); | |||
parametersToUpdate.clear(); | |||
} | |||
#endif | |||
if (! client) | |||
return 1; | |||
if (plugin) | |||
plugin->idleGui(); | |||
const char* const chunkFile = (const char*)&argv[0]->s; | |||
if (pluginGui && m_needsResize) | |||
{ | |||
pluginGui->setNewSize(m_nextSize[0], m_nextSize[1]); | |||
m_needsResize = false; | |||
} | |||
} | |||
else if (event->timerId() == msgTimerOSC) | |||
{ | |||
if (! CarlaClient::oscIdle()) | |||
{ | |||
CARLA_ASSERT(msgTimerOSC == 0); | |||
msgTimerOSC = 0; | |||
return; | |||
} | |||
} | |||
CarlaPluginClient* const plugClient = (CarlaPluginClient*)client; | |||
plugClient->setChunkData(chunkFile); | |||
QApplication::timerEvent(event); | |||
} | |||
return 0; | |||
} | |||
// --------------------------------------------------------------------- | |||
int CarlaBridgeOsc::handleMsgPluginSetCustomData(CARLA_BRIDGE_OSC_HANDLE_ARGS) | |||
{ | |||
qDebug("CarlaBridgeOsc::handleMsgPluginSaveNow()"); | |||
CARLA_BRIDGE_OSC_CHECK_OSC_TYPES(3, "sss"); | |||
private: | |||
int msgTimerGUI, msgTimerOSC; | |||
#if 0 | |||
std::set<int32_t> parametersToUpdate; | |||
#endif | |||
if (! client) | |||
return 1; | |||
bool m_doQuit; | |||
bool m_hasUI; | |||
bool m_qt4UI; | |||
bool m_needsResize; | |||
int m_nextSize[2]; | |||
const char* const type = (const char*)&argv[0]->s; | |||
const char* const key = (const char*)&argv[1]->s; | |||
const char* const value = (const char*)&argv[2]->s; | |||
CarlaBackend::CarlaEngine* engine; | |||
CarlaBackend::CarlaPlugin* plugin; | |||
CarlaPluginClient* const plugClient = (CarlaPluginClient*)client; | |||
plugClient->setCustomData(type, key, value); | |||
BridgePluginGUI* pluginGui; | |||
}; | |||
return 0; | |||
} | |||
// ------------------------------------------------------------------------- | |||
@@ -747,15 +640,14 @@ CARLA_BRIDGE_END_NAMESPACE | |||
int main(int argc, char* argv[]) | |||
{ | |||
CARLA_BRIDGE_USE_NAMESPACE | |||
if (argc != 6) | |||
{ | |||
qWarning("usage: %s <osc-url|\"null\"> <type> <filename> <name|\"(none)\"> <label>", argv[0]); | |||
return 1; | |||
} | |||
qargc = argc; | |||
qargv = argv; | |||
const char* const oscUrl = argv[1]; | |||
const char* const stype = argv[2]; | |||
const char* const filename = argv[3]; | |||
@@ -783,15 +675,13 @@ int main(int argc, char* argv[]) | |||
return 1; | |||
} | |||
// Init bridge client | |||
CarlaBridge::BridgePluginClient client; | |||
client.init(); | |||
// Init Plugin client | |||
CarlaPluginClient client; | |||
// Init OSC | |||
if (useOsc && ! client.oscInit(oscUrl)) | |||
{ | |||
client.quit(); | |||
return -1; | |||
return 1; | |||
} | |||
// Listen for ctrl+c or sigint/sigterm events | |||
@@ -800,22 +690,19 @@ int main(int argc, char* argv[]) | |||
// Init backend engine | |||
CarlaBackend::CarlaEngine* engine = CarlaBackend::CarlaEngine::newDriverByName("JACK"); | |||
engine->setCallback(client.callback, &client); | |||
client.setEngine(engine); | |||
// bridge client <-> engine | |||
client.registerOscEngine(engine); | |||
// Init engine | |||
QString engName = QString("%1 (master)").arg(name ? name : label); | |||
engName.truncate(engine->maxClientNameSize()); | |||
if (! engine->init(engName.toUtf8().constData())) | |||
if (! engine->init("")) | |||
{ | |||
const char* const lastError = engine->getLastError(); | |||
qWarning("Bridge engine failed to start, error was:\n%s", lastError); | |||
if (const char* const lastError = engine->getLastError()) | |||
{ | |||
qWarning("Bridge engine failed to start, error was:\n%s", lastError); | |||
client.sendOscBridgeError(lastError); | |||
} | |||
engine->close(); | |||
delete engine; | |||
client.sendOscBridgeError(lastError); | |||
client.quit(); | |||
return 2; | |||
} | |||
@@ -833,22 +720,14 @@ int main(int argc, char* argv[]) | |||
if (id >= 0 && id < CarlaBackend::MAX_PLUGINS) | |||
{ | |||
CarlaBackend::CarlaPlugin* const plugin = engine->getPlugin(id); | |||
client.setStuff(engine, plugin); | |||
// create window if needed | |||
bool guiResizable; | |||
CarlaBackend::GuiType guiType; | |||
plugin->getGuiInfo(&guiType, &guiResizable); | |||
if (guiType == CarlaBackend::GUI_INTERNAL_QT4 || guiType == CarlaBackend::GUI_INTERNAL_COCOA || guiType == CarlaBackend::GUI_INTERNAL_HWND || guiType == CarlaBackend::GUI_INTERNAL_X11) | |||
client.createWindow(guiResizable); | |||
else if (guiType == CarlaBackend::GUI_EXTERNAL_LV2 || guiType == CarlaBackend::GUI_EXTERNAL_OSC) | |||
client.enableUI(); | |||
client.setPlugin(plugin); | |||
if (! useOsc) | |||
plugin->setActive(true, false, false); | |||
client.exec(nullptr, !useOsc); | |||
client.init(); | |||
client.toolkitExec(!useOsc); | |||
client.quit(); | |||
ret = 0; | |||
} | |||
@@ -863,23 +742,18 @@ int main(int argc, char* argv[]) | |||
ret = 1; | |||
} | |||
engine->aboutToClose(); | |||
engine->removeAllPlugins(); | |||
engine->close(); | |||
delete engine; | |||
// Close OSC | |||
if (useOsc) | |||
{ | |||
// Close OSC | |||
client.oscClose(); | |||
// bridge client can't be closed manually, only by host | |||
} | |||
else | |||
{ | |||
// Close bridge client | |||
client.quit(); | |||
} | |||
return ret; | |||
} | |||
#endif // BUILD_BRIDGE_PLUGIN | |||
#endif // BRIDGE_PLUGIN |
@@ -98,21 +98,6 @@ public: | |||
qDebug("CarlaBridgeToolkitQt::~CarlaBridgeToolkitQt()"); | |||
CARLA_ASSERT(! app); | |||
CARLA_ASSERT(! msgTimer); | |||
if (window) | |||
{ | |||
window->close(); | |||
delete window; | |||
} | |||
#ifdef BRIDGE_CONTAINER | |||
// TESTING | |||
if (embedContainer) | |||
{ | |||
embedContainer->close(); | |||
delete embedContainer; | |||
} | |||
#endif | |||
} | |||
void init() | |||
@@ -216,6 +201,16 @@ public: | |||
window = nullptr; | |||
} | |||
#ifdef BRIDGE_CONTAINER | |||
if (embedContainer) | |||
{ | |||
embedContainer->close(); | |||
delete embedContainer; | |||
embedContainer = nullptr; | |||
} | |||
#endif | |||
if (app) | |||
{ | |||
if (! app->closingDown()) | |||
@@ -40,12 +40,10 @@ CarlaBridgeToolkit::~CarlaBridgeToolkit() | |||
free(uiTitle); | |||
} | |||
#if BUILD_BRIDGE_UI | |||
void* CarlaBridgeToolkit::getContainerId() | |||
{ | |||
qDebug("CarlaBridgeToolkit::getContainerId()"); | |||
return nullptr; | |||
} | |||
#endif | |||
CARLA_BRIDGE_END_NAMESPACE |
@@ -47,11 +47,9 @@ public: | |||
virtual void hide() = 0; | |||
virtual void resize(const int width, const int height) = 0; | |||
#if BUILD_BRIDGE_UI | |||
virtual void* getContainerId(); | |||
static CarlaBridgeToolkit* createNew(CarlaBridgeClient* const client, const char* const uiTitle); | |||
#endif | |||
protected: | |||
CarlaBridgeClient* const client; | |||
@@ -1023,10 +1023,10 @@ int CarlaBridgeOsc::handleMsgLv2TransferAtom(CARLA_BRIDGE_OSC_HANDLE_ARGS) | |||
chunk = QByteArray::fromBase64(atomBuf); | |||
LV2_Atom* const atom = (LV2_Atom*)chunk.constData(); | |||
CarlaLv2Client* const lv2client = (CarlaLv2Client*)client; | |||
CarlaLv2Client* const lv2Client = (CarlaLv2Client*)client; | |||
atom->type = lv2client->getCustomURID(typeStr); | |||
lv2client->handleTransferAtom(portIndex, atom); | |||
atom->type = lv2Client->getCustomURID(typeStr); | |||
lv2Client->handleTransferAtom(portIndex, atom); | |||
return 0; | |||
} | |||
@@ -1047,10 +1047,10 @@ int CarlaBridgeOsc::handleMsgLv2TransferEvent(CARLA_BRIDGE_OSC_HANDLE_ARGS) | |||
chunk = QByteArray::fromBase64(atomBuf); | |||
LV2_Atom* const atom = (LV2_Atom*)chunk.constData(); | |||
CarlaLv2Client* const lv2client = (CarlaLv2Client*)client; | |||
CarlaLv2Client* const lv2Client = (CarlaLv2Client*)client; | |||
atom->type = lv2client->getCustomURID(typeStr); | |||
lv2client->handleTransferEvent(portIndex, atom); | |||
atom->type = lv2Client->getCustomURID(typeStr); | |||
lv2Client->handleTransferEvent(portIndex, atom); | |||
return 0; | |||
} | |||
@@ -1115,4 +1115,4 @@ int main(int argc, char* argv[]) | |||
return ret; | |||
} | |||
#endif | |||
#endif // BRIDGE_LV2 |
@@ -530,6 +530,8 @@ private: | |||
CarlaVstClient* CarlaVstClient::lastVstPlugin = nullptr; | |||
// ------------------------------------------------------------------------- | |||
CARLA_BRIDGE_END_NAMESPACE | |||
int main(int argc, char* argv[]) | |||
@@ -589,4 +591,5 @@ int main(int argc, char* argv[]) | |||
return ret; | |||
} | |||
#endif | |||
#endif // BRIDGE_VST | |||
@@ -1,6 +1,10 @@ | |||
# QtCreator project file | |||
contains(QT_VERSION, ^5.*) { | |||
QT = core widgets | |||
} else { | |||
QT = core gui | |||
} | |||
CONFIG = debug link_pkgconfig qt warn_on | |||
PKGCONFIG = jack liblo | |||
@@ -10,15 +14,30 @@ TEMPLATE = app | |||
VERSION = 0.5.0 | |||
SOURCES = \ | |||
../carla_bridge_client.cpp \ | |||
../carla_bridge_osc.cpp \ | |||
../carla_bridge_toolkit.cpp \ | |||
../carla_bridge_plugin.cpp | |||
HEADERS = \ | |||
../carla_bridge.hpp \ | |||
../carla_bridge_client.hpp \ | |||
../carla_bridge_osc.hpp \ | |||
../carla_bridge_toolkit.hpp \ | |||
# carla-engine | |||
SOURCES += \ | |||
../../carla-engine/carla_engine.cpp \ | |||
../../carla-engine/carla_engine_osc.cpp \ | |||
../../carla-engine/carla_engine_thread.cpp \ | |||
../../carla-engine/jack.cpp | |||
HEADERS += \ | |||
../../carla-engine/carla_engine.hpp \ | |||
../../carla-engine/carla_engine_osc.hpp \ | |||
../../carla-engine/carla_engine_thread.hpp \ | |||
# carla-plugin | |||
SOURCES += \ | |||
../../carla-plugin/carla_plugin.cpp \ | |||
../../carla-plugin/carla_plugin_thread.cpp \ | |||
@@ -27,31 +46,23 @@ SOURCES += \ | |||
../../carla-plugin/lv2.cpp \ | |||
../../carla-plugin/vst.cpp | |||
HEADERS = \ | |||
../carla_bridge.hpp \ | |||
../carla_bridge_client.hpp \ | |||
../carla_bridge_osc.hpp \ | |||
../carla_bridge_toolkit.hpp \ | |||
HEADERS += \ | |||
../../carla-includes/carla_defines.hpp \ | |||
../../carla-includes/carla_midi.h \ | |||
../../carla-includes/ladspa_rdf.hpp \ | |||
../../carla-includes/lv2_rdf.hpp | |||
../../carla-plugin/carla_plugin.hpp \ | |||
../../carla-plugin/carla_plugin_thread.hpp | |||
# carla-backend | |||
HEADERS += \ | |||
../../carla-backend/carla_backend.hpp \ | |||
../../carla-backend/carla_backend_utils.hpp | |||
# carla-includes | |||
HEADERS += \ | |||
../../carla-engine/carla_engine.hpp \ | |||
../../carla-engine/carla_engine_osc.hpp \ | |||
../../carla-engine/carla_engine_thread.hpp \ | |||
HEADERS += \ | |||
../../carla-plugin/carla_plugin.hpp \ | |||
../../carla-plugin/carla_plugin_thread.hpp | |||
../../carla-includes/carla_defines.hpp \ | |||
../../carla-includes/carla_midi.h \ | |||
../../carla-includes/ladspa_rdf.hpp \ | |||
../../carla-includes/lv2_rdf.hpp | |||
# carla-utils | |||
HEADERS += \ | |||
../../carla-utils/carla_lib_utils.hpp \ | |||
../../carla-utils/carla_osc_utils.hpp \ | |||
@@ -70,7 +81,8 @@ INCLUDEPATH = .. \ | |||
DEFINES = QTCREATOR_TEST | |||
DEFINES += DEBUG | |||
#DEFINES += VESTIGE_HEADER | |||
DEFINES += BUILD_BRIDGE BUILD_BRIDGE_PLUGIN | |||
DEFINES += BUILD_BRIDGE BUILD_BRIDGE_PLUGIN BRIDGE_PLUGIN | |||
DEFINES += CARLA_ENGINE_JACK | |||
DEFINES += WANT_LADSPA WANT_DSSI WANT_LV2 WANT_VST | |||
@@ -18,6 +18,8 @@ | |||
#include "carla_plugin.hpp" | |||
#include "carla_lib_utils.hpp" | |||
#include <QtGui/QtEvents> | |||
CARLA_BACKEND_START_NAMESPACE | |||
// ------------------------------------------------------------------- | |||
@@ -1550,4 +1552,132 @@ void CarlaPlugin::engineMidiUnlock() | |||
x_engine->midiUnlock(); | |||
} | |||
// ------------------------------------------------------------------- | |||
// CarlaPluginGUI | |||
CarlaPluginGUI::CarlaPluginGUI(QWidget* const parent, Callback* const callback) | |||
: QMainWindow(parent), | |||
m_callback(callback) | |||
{ | |||
qDebug("CarlaPluginGUI::CarlaPluginGUI(%p, %p", parent, callback); | |||
CARLA_ASSERT(callback); | |||
m_container = new GuiContainer(this); | |||
setCentralWidget(m_container); | |||
adjustSize(); | |||
m_container->setParent(this); | |||
m_container->show(); | |||
m_resizable = true; | |||
setNewSize(50, 50); | |||
QMainWindow::setVisible(false); | |||
} | |||
CarlaPluginGUI::~CarlaPluginGUI() | |||
{ | |||
qDebug("CarlaPluginGUI::~CarlaPluginGUI()"); | |||
CARLA_ASSERT(m_container); | |||
delete m_container; | |||
} | |||
// ------------------------------------------------------------------- | |||
GuiContainer* CarlaPluginGUI::getContainer() const | |||
{ | |||
return m_container; | |||
} | |||
WId CarlaPluginGUI::getWinId() const | |||
{ | |||
return m_container->winId(); | |||
} | |||
// ------------------------------------------------------------------- | |||
void CarlaPluginGUI::setNewSize(int width, int height) | |||
{ | |||
qDebug("CarlaPluginGUI::setNewSize(%i, %i)", width, height); | |||
if (width < 30) | |||
width = 30; | |||
if (height < 30) | |||
height = 30; | |||
if (m_resizable) | |||
{ | |||
resize(width, height); | |||
} | |||
else | |||
{ | |||
setFixedSize(width, height); | |||
m_container->setFixedSize(width, height); | |||
} | |||
} | |||
void CarlaPluginGUI::setResizable(bool resizable) | |||
{ | |||
m_resizable = resizable; | |||
setNewSize(width(), height()); | |||
#ifdef Q_OS_WIN | |||
if (! resizable) | |||
setWindowFlags(windowFlags() | Qt::MSWindowsFixedSizeDialogHint); | |||
#endif | |||
} | |||
void CarlaPluginGUI::setTitle(const char* const title) | |||
{ | |||
CARLA_ASSERT(title); | |||
setWindowTitle(QString("%1 (GUI)").arg(title)); | |||
} | |||
void CarlaPluginGUI::setVisible(const bool yesNo) | |||
{ | |||
qDebug("CarlaPluginGUI::setVisible(%s)", bool2str(yesNo)); | |||
if (yesNo) | |||
{ | |||
if (! m_geometry.isNull()) | |||
restoreGeometry(m_geometry); | |||
} | |||
else | |||
m_geometry = saveGeometry(); | |||
QMainWindow::setVisible(yesNo); | |||
} | |||
// ------------------------------------------------------------------- | |||
void CarlaPluginGUI::hideEvent(QHideEvent* const event) | |||
{ | |||
qDebug("CarlaPluginGUI::hideEvent(%p)", event); | |||
CARLA_ASSERT(event); | |||
event->accept(); | |||
close(); | |||
} | |||
void CarlaPluginGUI::closeEvent(QCloseEvent* const event) | |||
{ | |||
qDebug("CarlaPluginGUI::closeEvent(%p)", event); | |||
CARLA_ASSERT(event); | |||
if (event->spontaneous()) | |||
{ | |||
if (m_callback) | |||
m_callback->guiClosedCallback(); | |||
QMainWindow::closeEvent(event); | |||
return; | |||
} | |||
event->ignore(); | |||
} | |||
// ------------------------------------------------------------------- | |||
CARLA_BACKEND_END_NAMESPACE |
@@ -21,24 +21,23 @@ | |||
#include "carla_midi.h" | |||
#include "carla_engine.hpp" | |||
#include "carla_osc_utils.hpp" | |||
#include "carla_plugin_thread.hpp" | |||
#ifdef BUILD_BRIDGE | |||
//# include "carla_backend_utils.hpp" | |||
# include "carla_bridge_osc.hpp" | |||
//#else | |||
#endif | |||
#include "carla_plugin_thread.hpp" | |||
// common includes | |||
#include <cmath> | |||
#include <vector> | |||
#include <QtCore/QMutex> | |||
#include <QtGui/QMainWindow> | |||
#ifdef Q_WS_X11 | |||
#include <QtGui/QX11EmbedContainer> | |||
# include <QtGui/QX11EmbedContainer> | |||
typedef QX11EmbedContainer GuiContainer; | |||
#else | |||
#include <QtGui/QWidget> | |||
# include <QtGui/QWidget> | |||
typedef QWidget GuiContainer; | |||
#endif | |||
@@ -983,6 +982,90 @@ protected: | |||
friend class CarlaEngineJack; | |||
}; | |||
/*! | |||
* \class CarlaPluginGUI | |||
* | |||
* \brief Carla Backend gui plugin class | |||
* | |||
* \see CarlaPlugin | |||
*/ | |||
class CarlaPluginGUI : public QMainWindow | |||
{ | |||
public: | |||
/*! | |||
* \class Callback | |||
* | |||
* \brief Carla plugin GUI callback | |||
*/ | |||
class Callback | |||
{ | |||
public: | |||
virtual ~Callback() {} | |||
virtual void guiClosedCallback() = 0; | |||
}; | |||
// ------------------------------------------------------------------- | |||
// Constructor and destructor | |||
/*! | |||
* TODO | |||
*/ | |||
CarlaPluginGUI(QWidget* const parent, Callback* const callback); | |||
/*! | |||
* TODO | |||
*/ | |||
~CarlaPluginGUI(); | |||
// ------------------------------------------------------------------- | |||
// Get data | |||
/*! | |||
* TODO | |||
*/ | |||
GuiContainer* getContainer() const; | |||
/*! | |||
* TODO | |||
*/ | |||
WId getWinId() const; | |||
// ------------------------------------------------------------------- | |||
// Set data | |||
/*! | |||
* TODO | |||
*/ | |||
void setNewSize(const int width, const int height); | |||
/*! | |||
* TODO | |||
*/ | |||
void setResizable(const bool resizable); | |||
/*! | |||
* TODO | |||
*/ | |||
void setTitle(const char* const title); | |||
/*! | |||
* TODO | |||
*/ | |||
void setVisible(const bool yesNo); | |||
// ------------------------------------------------------------------- | |||
private: | |||
Callback* const m_callback; | |||
GuiContainer* m_container; | |||
QByteArray m_geometry; | |||
bool m_resizable; | |||
void hideEvent(QHideEvent* const event); | |||
void closeEvent(QCloseEvent* const event); | |||
}; | |||
/**@}*/ | |||
CARLA_BACKEND_END_NAMESPACE | |||