| @@ -53,7 +53,7 @@ posix64: | |||||
| $(MAKE) -C source/discovery posix64 | $(MAKE) -C source/discovery posix64 | ||||
| win32: | win32: | ||||
| $(MAKE) -C source/bridges win32 | |||||
| # $(MAKE) -C source/bridges win32 | |||||
| $(MAKE) -C source/discovery win32 | $(MAKE) -C source/discovery win32 | ||||
| win64: | win64: | ||||
| @@ -286,8 +286,8 @@ else | |||||
| endif | endif | ||||
| # --- Others --- | # --- Others --- | ||||
| endif | endif | ||||
| @echo "" | |||||
| endif | endif | ||||
| @echo "" | |||||
| @echo "\033[36m---> Plugin formats: \033[0m" | @echo "\033[36m---> Plugin formats: \033[0m" | ||||
| @echo "Internal:$(ANS_YES)" | @echo "Internal:$(ANS_YES)" | ||||
| @@ -306,38 +306,43 @@ endif | |||||
| ifeq ($(CARLA_PLUGIN_SUPPORT),true) | ifeq ($(CARLA_PLUGIN_SUPPORT),true) | ||||
| @echo "\033[36m---> LV2 UI toolkit support: \033[0m" | @echo "\033[36m---> LV2 UI toolkit support: \033[0m" | ||||
| @echo "ExternalUI:$(ANS_YES) (direct)" | |||||
| ifeq ($(MACOS),true) | ifeq ($(MACOS),true) | ||||
| # --- MacOS --- | # --- MacOS --- | ||||
| @echo "Cocoa:$(ANS_YES)" | |||||
| @echo "CocoaUI: $(ANS_YES) (direct+bridge)" | |||||
| # --- MacOS --- | # --- MacOS --- | ||||
| else | else | ||||
| # --- Win32 --- | # --- Win32 --- | ||||
| ifeq ($(WIN32),true) | ifeq ($(WIN32),true) | ||||
| # --- Win32 --- | # --- Win32 --- | ||||
| @echo "Windows:$(ANS_YES)" | |||||
| @echo "WindowsUI: $(ANS_YES) (direct+bridge)" | |||||
| else | else | ||||
| # --- Others --- | # --- Others --- | ||||
| ifeq ($(HAVE_GTK2),true) | ifeq ($(HAVE_GTK2),true) | ||||
| @echo "Gtk2:$(ANS_YES)" | |||||
| @echo "GtkUI: $(ANS_YES) (bridge)" | |||||
| else | else | ||||
| @echo "Gtk2:$(ANS_NO) $(mS)Gtk2 missing$(mE)" | |||||
| @echo "GtkUI: $(ANS_NO) $(mS)Gtk2 missing$(mE)" | |||||
| endif | endif | ||||
| ifeq ($(HAVE_GTK3),true) | ifeq ($(HAVE_GTK3),true) | ||||
| @echo "Gtk3:$(ANS_YES)" | |||||
| @echo "Gtk3UI: $(ANS_YES) (bridge)" | |||||
| else | else | ||||
| @echo "Gtk3:$(ANS_NO) $(mS)Gtk3 missing$(mE)" | |||||
| @echo "Gtk3UI: $(ANS_NO) $(mS)Gtk3 missing$(mE)" | |||||
| endif | endif | ||||
| ifeq ($(HAVE_QT4),true) | ifeq ($(HAVE_QT4),true) | ||||
| @echo "Qt4: $(ANS_YES)" | |||||
| @echo "Qt4UI: $(ANS_YES) (direct+bridge)" | |||||
| else | else | ||||
| @echo "Qt4: $(ANS_NO) $(mS)Qt4 missing$(mE)" | |||||
| @echo "Qt4UI: $(ANS_NO) $(mS)Qt4 missing$(mE)" | |||||
| endif | endif | ||||
| ifeq ($(HAVE_QT5),true) | ifeq ($(HAVE_QT5),true) | ||||
| @echo "Qt5: $(ANS_YES)" | |||||
| ifeq ($(HAVE_QT4),true) | |||||
| @echo "Qt5UI: $(ANS_YES) (bridge)" | |||||
| else | |||||
| @echo "Qt5UI: $(ANS_YES) (direct+bridge)" | |||||
| endif | |||||
| else | else | ||||
| @echo "Qt5: $(ANS_NO) $(mS)Qt5 missing$(mE)" | |||||
| @echo "Qt5UI: $(ANS_NO) $(mS)Qt5 missing$(mE)" | |||||
| endif | endif | ||||
| @echo "X11: $(ANS_YES)" | |||||
| @echo "X11UI: $(ANS_YES) (direct+bridge)" | |||||
| endif | endif | ||||
| # --- Others --- | # --- Others --- | ||||
| endif | endif | ||||
| @@ -373,10 +378,10 @@ ifeq ($(HAVE_AF_DEPS),true) | |||||
| ifeq ($(HAVE_FFMPEG),true) | ifeq ($(HAVE_FFMPEG),true) | ||||
| @echo "AudioFile: $(ANS_YES) (with ffmpeg)" | @echo "AudioFile: $(ANS_YES) (with ffmpeg)" | ||||
| else | else | ||||
| @echo "AudioFIle: $(ANS_YES) (without ffmpeg) $(mS)ffmpeg/libav missing$(mE)" | |||||
| @echo "AudioFile: $(ANS_YES) (without ffmpeg) $(mS)ffmpeg/libav missing$(mE)" | |||||
| endif | endif | ||||
| else | else | ||||
| @echo "AudioFIle: $(ANS_NO) $(mS)libsndfile missing$(mE)" | |||||
| @echo "AudioFile: $(ANS_NO) $(mS)libsndfile missing$(mE)" | |||||
| endif | endif | ||||
| ifeq ($(HAVE_MF_DEPS),true) | ifeq ($(HAVE_MF_DEPS),true) | ||||
| @@ -11,9 +11,9 @@ if [ ! -f Makefile ]; then | |||||
| cd ../.. | cd ../.. | ||||
| fi | fi | ||||
| ln -s -f $MINGW_PATH/bin/$MINGW-pkg-config ./data/windows/pkg-config | |||||
| export WIN32=true | |||||
| export PATH=`pwd`/data/windows:$MINGW_PATH/bin:$MINGW_PATH/$MINGW/bin:$PATH | |||||
| export PATH=$MINGW_PATH/bin:$MINGW_PATH/$MINGW/bin:$PATH | |||||
| export AR=$MINGW-ar | export AR=$MINGW-ar | ||||
| export CC=$MINGW-gcc | export CC=$MINGW-gcc | ||||
| export CXX=$MINGW-g++ | export CXX=$MINGW-g++ | ||||
| @@ -23,89 +23,85 @@ export UIC=$MINGW-uic | |||||
| export STRIP=$MINGW-strip | export STRIP=$MINGW-strip | ||||
| export WINDRES=$MINGW-windres | export WINDRES=$MINGW-windres | ||||
| export PKG_CONFIG_PATH=$MINGW_PATH/lib/pkgconfig | |||||
| export WINEPREFIX=~/.winepy3 | |||||
| export PYTHON_EXE="C:\\\\Python33\\\\python.exe" | |||||
| export CXFREEZE="wine $PYTHON_EXE C:\\\\Python33\\\\Scripts\\\\cxfreeze" | |||||
| export PYUIC="wine $PYTHON_EXE C:\\\\Python33\\\\Lib\\\\site-packages\\\\PyQt4\\\\uic\\\\pyuic.py" | |||||
| export PYRCC="wine C:\\\\Python33\\\\Lib\\\\site-packages\\\\PyQt4\\\\pyrcc4.exe -py3" | |||||
| export CFLAGS="-DPTW32_STATIC_LIB -I$MINGW_PATH/include" | export CFLAGS="-DPTW32_STATIC_LIB -I$MINGW_PATH/include" | ||||
| export CXXFLAGS="-DPTW32_STATIC_LIB -DFLUIDSYNTH_NOT_A_DLL -I$MINGW_PATH/include" | export CXXFLAGS="-DPTW32_STATIC_LIB -DFLUIDSYNTH_NOT_A_DLL -I$MINGW_PATH/include" | ||||
| export EXTRA_LIBS1="-lglib-2.0 -lgthread-2.0 -lgig -lsndfile -lFLAC -lvorbisenc -lvorbis -logg" | export EXTRA_LIBS1="-lglib-2.0 -lgthread-2.0 -lgig -lsndfile -lFLAC -lvorbisenc -lvorbis -logg" | ||||
| export EXTRA_LIBS2="$MINGW_PATH/lib/qt4/plugins/imageformats/libqsvg.a $MINGW_PATH/lib/qt4/plugins/iconengines/libqsvgicon.a" | |||||
| export EXTRA_LIBS2="$MINGW_PATH/lib/qt4/plugins/imageformats/libqsvg.a" | |||||
| # Clean build | # Clean build | ||||
| make clean | |||||
| # make clean | |||||
| # Build PyQt4 resources | # Build PyQt4 resources | ||||
| make $JOBS UI RES WIDGETS | |||||
| # make $JOBS UI RES WIDGETS | |||||
| # Build discovery | # Build discovery | ||||
| make $JOBS -C source/discovery WIN32=true EXTRA_LIBS="$EXTRA_LIBS1" | |||||
| mv source/discovery/carla-discovery-native source/discovery/carla-discovery-win32.exe | |||||
| make $JOBS discovery EXTRA_LIBS="$EXTRA_LIBS1" | |||||
| cp source/discovery/carla-discovery-native.exe source/discovery/carla-discovery-win32.exe | |||||
| # Build backend | # Build backend | ||||
| make $JOBS -C source/backend/standalone ../libcarla_standalone.dll WIN32=true EXTRA_LIBS="$EXTRA_LIBS1 $EXTRA_LIBS2" | |||||
| rm -rf ./data/windows/Carla | |||||
| cp ./source/carla.py ./source/carla.pyw | |||||
| $CXFREEZE --target-dir=".\\data\\windows\\Carla" ".\\source\\carla.pyw" | |||||
| rm -f ./source/carla.pyw | |||||
| rm -rf ./data/windows/CarlaControl | |||||
| cp ./source/carla_control.py ./source/carla_control.pyw | |||||
| $CXFREEZE --target-dir=".\\data\\windows\\CarlaControl" ".\\source\\carla_control.pyw" | |||||
| rm -f ./source/carla_control.pyw | |||||
| cd data/windows | |||||
| mkdir Carla/backend | |||||
| mkdir Carla/bridges | |||||
| mkdir Carla/discovery | |||||
| cp ../../source/backend/*.dll Carla/backend/ | |||||
| cp ../../source/discovery/*.exe Carla/discovery/ | |||||
| mv CarlaControl/carla_control.exe CarlaControl/CarlaControl.exe | |||||
| cp $WINEPREFIX/drive_c/windows/syswow64/python33.dll Carla/ | |||||
| cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtCore4.dll Carla/ | |||||
| cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtGui4.dll Carla/ | |||||
| cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtOpenGL4.dll Carla/ | |||||
| cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtSvg4.dll Carla/ | |||||
| cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtXml4.dll Carla/ | |||||
| cp -r $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/plugins/imageformats/ Carla/ | |||||
| cp -r $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/plugins/iconengines/ Carla/ | |||||
| cp $WINEPREFIX/drive_c/windows/syswow64/python33.dll CarlaControl/ | |||||
| cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtCore4.dll CarlaControl/ | |||||
| cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtGui4.dll CarlaControl/ | |||||
| cp -r $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/plugins/imageformats/ CarlaControl/ | |||||
| cp -r $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/plugins/iconengines/ CarlaControl/ | |||||
| rm -f pkg-config | |||||
| # make $JOBS -C source/backend/standalone ../libcarla_standalone.dll WIN32=true EXTRA_LIBS="$EXTRA_LIBS1 $EXTRA_LIBS2" | |||||
| # export WINEPREFIX=~/.winepy3 | |||||
| # | |||||
| # export PYTHON_EXE="C:\\\\Python33\\\\python.exe" | |||||
| # | |||||
| # export CXFREEZE="wine $PYTHON_EXE C:\\\\Python33\\\\Scripts\\\\cxfreeze" | |||||
| # export PYUIC="wine $PYTHON_EXE C:\\\\Python33\\\\Lib\\\\site-packages\\\\PyQt4\\\\uic\\\\pyuic.py" | |||||
| # export PYRCC="wine C:\\\\Python33\\\\Lib\\\\site-packages\\\\PyQt4\\\\pyrcc4.exe -py3" | |||||
| # rm -rf ./data/windows/Carla | |||||
| # cp ./source/carla.py ./source/carla.pyw | |||||
| # $CXFREEZE --target-dir=".\\data\\windows\\Carla" ".\\source\\carla.pyw" | |||||
| # rm -f ./source/carla.pyw | |||||
| # | |||||
| # rm -rf ./data/windows/CarlaControl | |||||
| # cp ./source/carla_control.py ./source/carla_control.pyw | |||||
| # $CXFREEZE --target-dir=".\\data\\windows\\CarlaControl" ".\\source\\carla_control.pyw" | |||||
| # rm -f ./source/carla_control.pyw | |||||
| # cd data/windows | |||||
| # mkdir Carla/backend | |||||
| # mkdir Carla/bridges | |||||
| # mkdir Carla/discovery | |||||
| # cp ../../source/backend/*.dll Carla/backend/ | |||||
| # cp ../../source/discovery/*.exe Carla/discovery/ | |||||
| # mv CarlaControl/carla_control.exe CarlaControl/CarlaControl.exe | |||||
| # | |||||
| # cp $WINEPREFIX/drive_c/windows/syswow64/python33.dll Carla/ | |||||
| # cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtCore4.dll Carla/ | |||||
| # cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtGui4.dll Carla/ | |||||
| # cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtOpenGL4.dll Carla/ | |||||
| # cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtSvg4.dll Carla/ | |||||
| # cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtXml4.dll Carla/ | |||||
| # cp -r $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/plugins/imageformats/ Carla/ | |||||
| # cp -r $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/plugins/iconengines/ Carla/ | |||||
| # | |||||
| # cp $WINEPREFIX/drive_c/windows/syswow64/python33.dll CarlaControl/ | |||||
| # cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtCore4.dll CarlaControl/ | |||||
| # cp $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/QtGui4.dll CarlaControl/ | |||||
| # cp -r $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/plugins/imageformats/ CarlaControl/ | |||||
| # cp -r $WINEPREFIX/drive_c/Python33/Lib/site-packages/PyQt4/plugins/iconengines/ CarlaControl/ | |||||
| # Build unzipfx | # Build unzipfx | ||||
| make -C unzipfx-carla -f Makefile.win32 | |||||
| make -C unzipfx-carla-control -f Makefile.win32 | |||||
| # make -C unzipfx-carla -f Makefile.win32 | |||||
| # make -C unzipfx-carla-control -f Makefile.win32 | |||||
| # Create static build | # Create static build | ||||
| rm -f Carla.zip CarlaControl.zip | |||||
| zip -r -9 Carla.zip Carla | |||||
| zip -r -9 CarlaControl.zip CarlaControl | |||||
| rm -f Carla.exe CarlaControl.exe | |||||
| cat unzipfx-carla/unzipfx2cat.exe Carla.zip > Carla.exe | |||||
| cat unzipfx-carla-control/unzipfx2cat.exe CarlaControl.zip > CarlaControl.exe | |||||
| chmod +x Carla.exe | |||||
| chmod +x CarlaControl.exe | |||||
| # rm -f Carla.zip CarlaControl.zip | |||||
| # zip -r -9 Carla.zip Carla | |||||
| # zip -r -9 CarlaControl.zip CarlaControl | |||||
| # | |||||
| # rm -f Carla.exe CarlaControl.exe | |||||
| # cat unzipfx-carla/unzipfx2cat.exe Carla.zip > Carla.exe | |||||
| # cat unzipfx-carla-control/unzipfx2cat.exe CarlaControl.zip > CarlaControl.exe | |||||
| # chmod +x Carla.exe | |||||
| # chmod +x CarlaControl.exe | |||||
| # Cleanup | # Cleanup | ||||
| make -C unzipfx-carla -f Makefile.win32 clean | |||||
| make -C unzipfx-carla-control -f Makefile.win32 clean | |||||
| rm -f Carla.zip CarlaControl.zip | |||||
| rm -f unzipfx-*/*.exe | |||||
| # make -C unzipfx-carla -f Makefile.win32 clean | |||||
| # make -C unzipfx-carla-control -f Makefile.win32 clean | |||||
| # rm -f Carla.zip CarlaControl.zip | |||||
| # rm -f unzipfx-*/*.exe | |||||
| # Testing: | # Testing: | ||||
| echo "export WINEPREFIX=~/.winepy3" | echo "export WINEPREFIX=~/.winepy3" | ||||
| @@ -1,5 +1,8 @@ | |||||
| # Carla TODO | # Carla TODO | ||||
| MAKEFILE: | |||||
| - "strip" usage | |||||
| GENERAL: | GENERAL: | ||||
| - add direct program access on ui-dialogs (needed for standalone bridges), maybe add extra buttons too (reset plugin, fix ui size) | - add direct program access on ui-dialogs (needed for standalone bridges), maybe add extra buttons too (reset plugin, fix ui size) | ||||
| - implement osc-based uis in bridge mode | - implement osc-based uis in bridge mode | ||||
| @@ -33,7 +33,7 @@ BASE_FLAGS = -Wall -Wextra -fPIC -pipe | |||||
| BASE_OPTS = -O2 -ffast-math -mtune=generic -msse -mfpmath=sse | BASE_OPTS = -O2 -ffast-math -mtune=generic -msse -mfpmath=sse | ||||
| ifeq ($(RASPPI),true) | ifeq ($(RASPPI),true) | ||||
| # RaspberryPi build flags | |||||
| # Raspberry-Pi optimization flags | |||||
| BASE_OPTS = -O2 -ffast-math -march=armv6 -mfpu=vfp -mfloat-abi=hard | BASE_OPTS = -O2 -ffast-math -march=armv6 -mfpu=vfp -mfloat-abi=hard | ||||
| endif | endif | ||||
| @@ -41,6 +41,7 @@ ifeq ($(DEBUG),true) | |||||
| BASE_FLAGS += -DDEBUG -O0 -g | BASE_FLAGS += -DDEBUG -O0 -g | ||||
| else | else | ||||
| BASE_FLAGS += -DNDEBUG $(BASE_OPTS) -fvisibility=hidden | BASE_FLAGS += -DNDEBUG $(BASE_OPTS) -fvisibility=hidden | ||||
| # BASE_FLAGS += -DCARLA_NO_ASSERTS | |||||
| endif | endif | ||||
| 32BIT_FLAGS = -m32 | 32BIT_FLAGS = -m32 | ||||
| @@ -61,7 +62,7 @@ HAVE_FFMPEG = $(shell pkg-config --exists libavcodec libavformat libavutil | |||||
| HAVE_OPENGL = $(shell pkg-config --exists gl && echo true) | HAVE_OPENGL = $(shell pkg-config --exists gl && echo true) | ||||
| HAVE_GTK2 = $(shell pkg-config --exists gtk+-2.0 && echo true) | HAVE_GTK2 = $(shell pkg-config --exists gtk+-2.0 && echo true) | ||||
| HAVE_GTK3 = $(shell pkg-config --exists gtk+-3.0 && echo true) | HAVE_GTK3 = $(shell pkg-config --exists gtk+-3.0 && echo true) | ||||
| HAVE_QT4 = $(shell pkg-config --exists QtCore && echo true) | |||||
| # HAVE_QT4 = $(shell pkg-config --exists QtCore && echo true) | |||||
| HAVE_QT5 = $(shell pkg-config --exists Qt5Core && echo true) | HAVE_QT5 = $(shell pkg-config --exists Qt5Core && echo true) | ||||
| HAVE_AF_DEPS = $(shell pkg-config --exists sndfile && echo true) | HAVE_AF_DEPS = $(shell pkg-config --exists sndfile && echo true) | ||||
| @@ -143,16 +143,16 @@ enum BinaryType { | |||||
| * Some plugin classes might provide more than 1 plugin type. | * Some plugin classes might provide more than 1 plugin type. | ||||
| */ | */ | ||||
| enum PluginType { | enum PluginType { | ||||
| PLUGIN_NONE = 0, //!< Null plugin type. | |||||
| PLUGIN_INTERNAL = 1, //!< Internal plugin. | |||||
| PLUGIN_LADSPA = 2, //!< LADSPA plugin. | |||||
| PLUGIN_DSSI = 3, //!< DSSI plugin. | |||||
| PLUGIN_LV2 = 4, //!< LV2 plugin. | |||||
| PLUGIN_VST = 5, //!< VST1/2 plugin. | |||||
| PLUGIN_VST3 = 6, //!< VST3 plugin. | |||||
| PLUGIN_GIG = 7, //!< GIG sound kit, implemented via LinuxSampler. | |||||
| PLUGIN_SF2 = 8, //!< SF2 sound kit (aka SoundFont), implemented via FluidSynth. | |||||
| PLUGIN_SFZ = 9 //!< SFZ sound kit, implemented via LinuxSampler. | |||||
| PLUGIN_NONE = 0, //!< Null plugin type | |||||
| PLUGIN_INTERNAL = 1, //!< Internal plugin | |||||
| PLUGIN_LADSPA = 2, //!< LADSPA plugin | |||||
| PLUGIN_DSSI = 3, //!< DSSI plugin | |||||
| PLUGIN_LV2 = 4, //!< LV2 plugin | |||||
| PLUGIN_VST = 5, //!< VST1/2 plugin | |||||
| PLUGIN_VST3 = 6, //!< VST3 plugin | |||||
| PLUGIN_GIG = 7, //!< GIG sound kit | |||||
| PLUGIN_SF2 = 8, //!< SF2 sound kit (aka SoundFont) | |||||
| PLUGIN_SFZ = 9 //!< SFZ sound kit | |||||
| }; | }; | ||||
| /*! | /*! | ||||
| @@ -493,7 +493,7 @@ enum CallbackType { | |||||
| /*! | /*! | ||||
| * The plugin's custom GUI state has changed. | * The plugin's custom GUI state has changed. | ||||
| * | * | ||||
| * \param value1 State, as follows:.\n | |||||
| * \param value1 State, as follows:\n | |||||
| * 0: GUI has been closed or hidden\n | * 0: GUI has been closed or hidden\n | ||||
| * 1: GUI has been shown\n | * 1: GUI has been shown\n | ||||
| * -1: GUI has crashed and should not be shown again | * -1: GUI has crashed and should not be shown again | ||||
| @@ -590,39 +590,47 @@ enum CallbackType { | |||||
| CALLBACK_PATCHBAY_CONNECTION_REMOVED = 25, | CALLBACK_PATCHBAY_CONNECTION_REMOVED = 25, | ||||
| /*! | /*! | ||||
| * Non-Session-Manager Announce message. | |||||
| * Engine buffer-size changed. | |||||
| */ | */ | ||||
| CALLBACK_BUFFER_SIZE_CHANGED = 26, | CALLBACK_BUFFER_SIZE_CHANGED = 26, | ||||
| /*! | /*! | ||||
| * Non-Session-Manager Announce message. | |||||
| * Engine sample-rate changed. | |||||
| */ | */ | ||||
| CALLBACK_SAMPLE_RATE_CHANGED = 27, | CALLBACK_SAMPLE_RATE_CHANGED = 27, | ||||
| /*! | |||||
| * Engine process mode changed. | |||||
| * | |||||
| * \param value1 New process mode | |||||
| * \see ProcessMode | |||||
| */ | |||||
| CALLBACK_PROCESS_MODE_CHANGED = 28, | |||||
| /*! | /*! | ||||
| * Non-Session-Manager Announce message. | * Non-Session-Manager Announce message. | ||||
| */ | */ | ||||
| CALLBACK_NSM_ANNOUNCE = 28, | |||||
| CALLBACK_NSM_ANNOUNCE = 29, | |||||
| /*! | /*! | ||||
| * Non-Session-Manager Open message. | * Non-Session-Manager Open message. | ||||
| */ | */ | ||||
| CALLBACK_NSM_OPEN = 29, | |||||
| CALLBACK_NSM_OPEN = 30, | |||||
| /*! | /*! | ||||
| * Non-Session-Manager Save message. | * Non-Session-Manager Save message. | ||||
| */ | */ | ||||
| CALLBACK_NSM_SAVE = 30, | |||||
| CALLBACK_NSM_SAVE = 31, | |||||
| /*! | /*! | ||||
| * An error occurred, show \a valueStr as an error to user. | * An error occurred, show \a valueStr as an error to user. | ||||
| */ | */ | ||||
| CALLBACK_ERROR = 31, | |||||
| CALLBACK_ERROR = 32, | |||||
| /*! | /*! | ||||
| * The engine has crashed or malfunctioned and will no longer work. | * The engine has crashed or malfunctioned and will no longer work. | ||||
| */ | */ | ||||
| CALLBACK_QUIT = 32 | |||||
| CALLBACK_QUIT = 33 | |||||
| }; | }; | ||||
| /*! | /*! | ||||
| @@ -643,8 +651,8 @@ enum ProcessMode { | |||||
| */ | */ | ||||
| enum TransportMode { | enum TransportMode { | ||||
| TRANSPORT_MODE_INTERNAL = 0, //!< Internal transport mode. | TRANSPORT_MODE_INTERNAL = 0, //!< Internal transport mode. | ||||
| TRANSPORT_MODE_JACK = 1, //!< JACK transport, only available if driver name is "JACK" | |||||
| TRANSPORT_MODE_PLUGIN = 2, //!< Plugin transport from host, used when Carla is a plugin | |||||
| TRANSPORT_MODE_JACK = 1, //!< Transport from JACK, only available if driver name is "JACK" | |||||
| TRANSPORT_MODE_PLUGIN = 2, //!< Transport from host, used when Carla is a plugin | |||||
| TRANSPORT_MODE_BRIDGE = 3 //!< Special mode, used in plugin-bridges only. | TRANSPORT_MODE_BRIDGE = 3 //!< Special mode, used in plugin-bridges only. | ||||
| }; | }; | ||||
| @@ -674,6 +682,8 @@ struct ParameterData { | |||||
| hints(0x0), | hints(0x0), | ||||
| midiChannel(0), | midiChannel(0), | ||||
| midiCC(-1) {} | midiCC(-1) {} | ||||
| CARLA_LEAK_DETECTOR(ParameterData) | |||||
| #endif | #endif | ||||
| }; | }; | ||||
| @@ -696,6 +706,8 @@ struct ParameterRanges { | |||||
| step(0.01f), | step(0.01f), | ||||
| stepSmall(0.0001f), | stepSmall(0.0001f), | ||||
| stepLarge(0.1f) {} | stepLarge(0.1f) {} | ||||
| CARLA_LEAK_DETECTOR(ParameterRanges) | |||||
| #endif | #endif | ||||
| void fixDefault() | void fixDefault() | ||||
| @@ -751,6 +763,8 @@ struct MidiProgramData { | |||||
| : bank(0), | : bank(0), | ||||
| program(0), | program(0), | ||||
| name(nullptr) {} | name(nullptr) {} | ||||
| CARLA_LEAK_DETECTOR(MidiProgramData) | |||||
| #endif | #endif | ||||
| }; | }; | ||||
| @@ -770,6 +784,8 @@ struct CustomData { | |||||
| : type(nullptr), | : type(nullptr), | ||||
| key(nullptr), | key(nullptr), | ||||
| value(nullptr) {} | value(nullptr) {} | ||||
| CARLA_LEAK_DETECTOR(CustomData) | |||||
| #endif | #endif | ||||
| }; | }; | ||||
| @@ -49,6 +49,16 @@ protected: | |||||
| return kHost; | return kHost; | ||||
| } | } | ||||
| const char* hostResourceDir() const | |||||
| { | |||||
| CARLA_ASSERT(kHost != nullptr); | |||||
| if (kHost != nullptr) | |||||
| return kHost->resource_dir; | |||||
| return nullptr; | |||||
| } | |||||
| const char* hostUiName() const | const char* hostUiName() const | ||||
| { | { | ||||
| CARLA_ASSERT(kHost != nullptr); | CARLA_ASSERT(kHost != nullptr); | ||||
| @@ -662,8 +662,8 @@ public: | |||||
| #ifdef WANT_ZYNADDSUBFX_UI | #ifdef WANT_ZYNADDSUBFX_UI | ||||
| if (gPixmapPath.isEmpty()) | if (gPixmapPath.isEmpty()) | ||||
| { | { | ||||
| gPixmapPath = host->resource_dir; | |||||
| gPixmapPath += PIXMAP_PATH; | |||||
| gPixmapPath = host->resource_dir; | |||||
| gPixmapPath += PIXMAP_PATH; | |||||
| gUiPixmapPath = gPixmapPath; | gUiPixmapPath = gPixmapPath; | ||||
| } | } | ||||
| #endif | #endif | ||||
| @@ -710,10 +710,11 @@ int ZynAddSubFxPlugin::sInstanceCount = 0; | |||||
| NonRtList<ZynAddSubFxPlugin::ProgramInfo*> ZynAddSubFxPlugin::sPrograms; | NonRtList<ZynAddSubFxPlugin::ProgramInfo*> ZynAddSubFxPlugin::sPrograms; | ||||
| static const struct ProgramsDestructor { | static const struct ProgramsDestructor { | ||||
| ProgramsDestructor() {} | |||||
| ~ProgramsDestructor() { | ~ProgramsDestructor() { | ||||
| ZynAddSubFxPlugin::_clearPrograms(); | ZynAddSubFxPlugin::_clearPrograms(); | ||||
| } | } | ||||
| } programsDestructor; | |||||
| } _programsDestructor; | |||||
| // ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
| @@ -245,13 +245,14 @@ CALLBACK_PATCHBAY_PORT_REMOVED = 22 | |||||
| CALLBACK_PATCHBAY_PORT_RENAMED = 23 | CALLBACK_PATCHBAY_PORT_RENAMED = 23 | ||||
| CALLBACK_PATCHBAY_CONNECTION_ADDED = 24 | CALLBACK_PATCHBAY_CONNECTION_ADDED = 24 | ||||
| CALLBACK_PATCHBAY_CONNECTION_REMOVED = 25 | CALLBACK_PATCHBAY_CONNECTION_REMOVED = 25 | ||||
| CALLBACK_BUFFER_SIZE_CHANGED = 26 | |||||
| CALLBACK_SAMPLE_RATE_CHANGED = 27 | |||||
| CALLBACK_NSM_ANNOUNCE = 28 | |||||
| CALLBACK_NSM_OPEN = 29 | |||||
| CALLBACK_NSM_SAVE = 30 | |||||
| CALLBACK_ERROR = 31 | |||||
| CALLBACK_QUIT = 32 | |||||
| CALLBACK_BUFFER_SIZE_CHANGED = 26 | |||||
| CALLBACK_SAMPLE_RATE_CHANGED = 27 | |||||
| CALLBACK_PROCESS_MODE_CHANGED = 28 | |||||
| CALLBACK_NSM_ANNOUNCE = 29 | |||||
| CALLBACK_NSM_OPEN = 30 | |||||
| CALLBACK_NSM_SAVE = 31 | |||||
| CALLBACK_ERROR = 32 | |||||
| CALLBACK_QUIT = 33 | |||||
| # Process Mode | # Process Mode | ||||
| PROCESS_MODE_SINGLE_CLIENT = 0 | PROCESS_MODE_SINGLE_CLIENT = 0 | ||||
| @@ -43,7 +43,7 @@ POSIX_LINK_FLAGS = $(LINK_FLAGS) -ldl | |||||
| WIN_BUILD_FLAGS = $(BUILD_CXX_FLAGS) | WIN_BUILD_FLAGS = $(BUILD_CXX_FLAGS) | ||||
| WIN_32BIT_FLAGS = $(32BIT_FLAGS) | WIN_32BIT_FLAGS = $(32BIT_FLAGS) | ||||
| WIN_64BIT_FLAGS = $(64BIT_FLAGS) | WIN_64BIT_FLAGS = $(64BIT_FLAGS) | ||||
| WIN_LINK_FLAGS = $(LINK_FLAGS) $(EXTRA_LIBS) -lole32 -luuid -lws2_32 -static | |||||
| WIN_LINK_FLAGS = $(LINK_FLAGS) $(EXTRA_LIBS) -lole32 -luuid -lws2_32 | |||||
| ifeq ($(HAVE_FLUIDSYNTH),true) | ifeq ($(HAVE_FLUIDSYNTH),true) | ||||
| WIN_LINK_FLAGS += -ldsound -lwinmm | WIN_LINK_FLAGS += -ldsound -lwinmm | ||||
| @@ -53,14 +53,6 @@ ifeq ($(HAVE_LINUXSAMPLER),true) | |||||
| WIN_LINK_FLAGS += -lrpcrt4 | WIN_LINK_FLAGS += -lrpcrt4 | ||||
| endif | endif | ||||
| ifeq ($(WIN32),true) | |||||
| NATIVE_BUILD_FLAGS = $(WIN_BUILD_FLAGS) | |||||
| NATIVE_LINK_FLAGS = $(WIN_LINK_FLAGS) | |||||
| else | |||||
| NATIVE_BUILD_FLAGS = $(POSIX_BUILD_FLAGS) | |||||
| NATIVE_LINK_FLAGS = $(POSIX_LINK_FLAGS) | |||||
| endif | |||||
| ifeq ($(CARLA_PLUGIN_SUPPORT),true) | ifeq ($(CARLA_PLUGIN_SUPPORT),true) | ||||
| LIBS = ../libs/lilv.a | LIBS = ../libs/lilv.a | ||||
| LIBS_posix32 = ../libs/lilv.posix32.a | LIBS_posix32 = ../libs/lilv.posix32.a | ||||
| @@ -73,7 +65,11 @@ OBJS = carla-discovery.cpp | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| ifeq ($(WIN32),true) | |||||
| all: carla-discovery-native.exe | |||||
| else | |||||
| all: carla-discovery-native | all: carla-discovery-native | ||||
| endif | |||||
| posix32: carla-discovery-posix32 | posix32: carla-discovery-posix32 | ||||
| posix64: carla-discovery-posix64 | posix64: carla-discovery-posix64 | ||||
| @@ -83,7 +79,10 @@ win64: carla-discovery-win64.exe | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| carla-discovery-native: $(OBJS) $(LIBS) | carla-discovery-native: $(OBJS) $(LIBS) | ||||
| $(CXX) $^ $(NATIVE_BUILD_FLAGS) $(NATIVE_FLAGS) $(NATIVE_LINK_FLAGS) -o $@ && $(STRIP) $@ | |||||
| $(CXX) $^ $(POSIX_BUILD_FLAGS) $(NATIVE_FLAGS) $(POSIX_LINK_FLAGS) -o $@ && $(STRIP) $@ | |||||
| carla-discovery-native.exe: $(OBJS) $(LIBS) | |||||
| $(CXX) $^ $(WIN_BUILD_FLAGS) $(NATIVE_FLAGS) $(WIN_LINK_FLAGS) -o $@ && $(STRIP) $@ | |||||
| carla-discovery-posix32: $(OBJS) $(LIBS_posix32) | carla-discovery-posix32: $(OBJS) $(LIBS_posix32) | ||||
| $(CXX) $^ $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) $(POSIX_LINK_FLAGS) -o $@ && $(STRIP) $@ | $(CXX) $^ $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) $(POSIX_LINK_FLAGS) -o $@ && $(STRIP) $@ | ||||
| @@ -107,5 +106,21 @@ debug: | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| ../libs/%: | |||||
| $(MAKE) -C ../libs $* | |||||
| ../libs/lilv.a: | |||||
| $(MAKE) -C ../libs lilv | |||||
| ../libs/lilv.posix32.a: | |||||
| $(MAKE) -C ../libs lilv_posix32 | |||||
| ../libs/lilv.posix64.a: | |||||
| $(MAKE) -C ../libs lilv_posix32 | |||||
| ../libs/lilv.win32.a: | |||||
| $(MAKE) -C ../libs lilv_win32 | |||||
| ../libs/lilv.win64.a: | |||||
| $(MAKE) -C ../libs lilv_win64 | |||||
| .PHONY: ../libs/lilv.a \ | |||||
| ../libs/lilv.posix32.a ../libs/lilv.posix64.a \ | |||||
| ../libs/lilv.win32.a ../libs/lilv.win64.a | |||||
| @@ -109,11 +109,12 @@ | |||||
| # define BINARY_NATIVE BINARY_OTHER | # define BINARY_NATIVE BINARY_OTHER | ||||
| #endif | #endif | ||||
| // Define CARLA_ASSERT* | |||||
| // Define CARLA_SAFE_ASSERT* | |||||
| #define CARLA_SAFE_ASSERT(cond) ((!(cond)) ? carla_assert(#cond, __FILE__, __LINE__) : pass()) | #define CARLA_SAFE_ASSERT(cond) ((!(cond)) ? carla_assert(#cond, __FILE__, __LINE__) : pass()) | ||||
| #define CARLA_SAFE_ASSERT_INT(cond, value) ((!(cond)) ? carla_assert_int(#cond, __FILE__, __LINE__, value) : pass()) | #define CARLA_SAFE_ASSERT_INT(cond, value) ((!(cond)) ? carla_assert_int(#cond, __FILE__, __LINE__, value) : pass()) | ||||
| #define CARLA_SAFE_ASSERT_INT2(cond, v1, v2) ((!(cond)) ? carla_assert_int2(#cond, __FILE__, __LINE__, v1, v2) : pass()) | #define CARLA_SAFE_ASSERT_INT2(cond, v1, v2) ((!(cond)) ? carla_assert_int2(#cond, __FILE__, __LINE__, v1, v2) : pass()) | ||||
| // Define CARLA_ASSERT* | |||||
| #if defined(CARLA_NO_ASSERTS) | #if defined(CARLA_NO_ASSERTS) | ||||
| # define CARLA_ASSERT(cond) | # define CARLA_ASSERT(cond) | ||||
| # define CARLA_ASSERT_INT(cond, value) | # define CARLA_ASSERT_INT(cond, value) | ||||
| @@ -111,7 +111,7 @@ | |||||
| #define MIDI_CONTROL_OMNI_MODE_OFF 0x7C // 0 (+ all notes off) | #define MIDI_CONTROL_OMNI_MODE_OFF 0x7C // 0 (+ all notes off) | ||||
| #define MIDI_CONTROL_OMNI_MODE_ON 0x7D // 0 (+ all notes off) | #define MIDI_CONTROL_OMNI_MODE_ON 0x7D // 0 (+ all notes off) | ||||
| #define MIDI_CONTROL_MONO_MODE_ON 0x7E // ... | #define MIDI_CONTROL_MONO_MODE_ON 0x7E // ... | ||||
| #define MIDI_CONTROL_POLY_MODE_ON 0x7F // 0 ( + mono off, + all notes off) | |||||
| #define MIDI_CONTROL_POLY_MODE_ON 0x7F // 0 (+ mono off, + all notes off) | |||||
| #define MIDI_CONTROL_SOUND_VARIATION MIDI_CONTROL_SOUND_CONTROLLER_1 | #define MIDI_CONTROL_SOUND_VARIATION MIDI_CONTROL_SOUND_CONTROLLER_1 | ||||
| #define MIDI_CONTROL_TIMBRE MIDI_CONTROL_SOUND_CONTROLLER_2 | #define MIDI_CONTROL_TIMBRE MIDI_CONTROL_SOUND_CONTROLLER_2 | ||||
| @@ -127,13 +127,13 @@ struct LADSPA_RDF_ScalePoint { | |||||
| ~LADSPA_RDF_ScalePoint() | ~LADSPA_RDF_ScalePoint() | ||||
| { | { | ||||
| if (Label != nullptr) | if (Label != nullptr) | ||||
| { | |||||
| delete[] Label; | delete[] Label; | ||||
| Label = nullptr; | |||||
| } | |||||
| } | } | ||||
| #ifdef CARLA_PROPER_CPP11_SUPPORT | |||||
| LADSPA_RDF_ScalePoint(LADSPA_RDF_ScalePoint&) = delete; | |||||
| LADSPA_RDF_ScalePoint(const LADSPA_RDF_ScalePoint&) = delete; | |||||
| #endif | |||||
| CARLA_DECLARE_NON_COPY_STRUCT_WITH_LEAK_DETECTOR(LADSPA_RDF_ScalePoint) | |||||
| }; | }; | ||||
| // Port | // Port | ||||
| @@ -159,15 +159,18 @@ struct LADSPA_RDF_Port { | |||||
| ~LADSPA_RDF_Port() | ~LADSPA_RDF_Port() | ||||
| { | { | ||||
| if (Label != nullptr) | if (Label != nullptr) | ||||
| { | |||||
| delete[] Label; | delete[] Label; | ||||
| Label = nullptr; | |||||
| } | |||||
| if (ScalePoints != nullptr) | if (ScalePoints != nullptr) | ||||
| { | |||||
| delete[] ScalePoints; | delete[] ScalePoints; | ||||
| ScalePoints = nullptr; | |||||
| } | |||||
| } | } | ||||
| #ifdef CARLA_PROPER_CPP11_SUPPORT | |||||
| LADSPA_RDF_Port(LADSPA_RDF_Port&) = delete; | |||||
| LADSPA_RDF_Port(const LADSPA_RDF_Port&) = delete; | |||||
| #endif | |||||
| CARLA_DECLARE_NON_COPY_STRUCT_WITH_LEAK_DETECTOR(LADSPA_RDF_Port) | |||||
| }; | }; | ||||
| // Plugin | // Plugin | ||||
| @@ -191,17 +194,23 @@ struct LADSPA_RDF_Descriptor { | |||||
| ~LADSPA_RDF_Descriptor() | ~LADSPA_RDF_Descriptor() | ||||
| { | { | ||||
| if (Title != nullptr) | if (Title != nullptr) | ||||
| { | |||||
| delete[] Title; | delete[] Title; | ||||
| Title = nullptr; | |||||
| } | |||||
| if (Creator != nullptr) | if (Creator != nullptr) | ||||
| { | |||||
| delete[] Creator; | delete[] Creator; | ||||
| Creator = nullptr; | |||||
| } | |||||
| if (Ports != nullptr) | if (Ports != nullptr) | ||||
| { | |||||
| delete[] Ports; | delete[] Ports; | ||||
| Ports = nullptr; | |||||
| } | |||||
| } | } | ||||
| #ifdef CARLA_PROPER_CPP11_SUPPORT | |||||
| LADSPA_RDF_Descriptor(LADSPA_RDF_Descriptor&) = delete; | |||||
| LADSPA_RDF_Descriptor(const LADSPA_RDF_Descriptor&) = delete; | |||||
| #endif | |||||
| CARLA_DECLARE_NON_COPY_STRUCT_WITH_LEAK_DETECTOR(LADSPA_RDF_Descriptor) | |||||
| }; | }; | ||||
| #endif // LADSPA_RDF_INCLUDED | #endif // LADSPA_RDF_INCLUDED | ||||
| @@ -29,8 +29,8 @@ typedef const char* LV2_URI; | |||||
| typedef uint32_t LV2_Property; | typedef uint32_t LV2_Property; | ||||
| // Port Midi Map Types | // Port Midi Map Types | ||||
| #define LV2_PORT_MIDI_MAP_CC 0x1 | |||||
| #define LV2_PORT_MIDI_MAP_NRPN 0x2 | |||||
| #define LV2_PORT_MIDI_MAP_CC 1 | |||||
| #define LV2_PORT_MIDI_MAP_NRPN 2 | |||||
| #define LV2_IS_PORT_MIDI_MAP_CC(x) ((x) == LV2_PORT_MIDI_MAP_CC) | #define LV2_IS_PORT_MIDI_MAP_CC(x) ((x) == LV2_PORT_MIDI_MAP_CC) | ||||
| #define LV2_IS_PORT_MIDI_MAP_NRPN(x) ((x) == LV2_PORT_MIDI_MAP_NRPN) | #define LV2_IS_PORT_MIDI_MAP_NRPN(x) ((x) == LV2_PORT_MIDI_MAP_NRPN) | ||||
| @@ -56,30 +56,30 @@ typedef uint32_t LV2_Property; | |||||
| #define LV2_HAVE_PORT_UNIT_UNIT(x) ((x) & LV2_PORT_UNIT_UNIT) | #define LV2_HAVE_PORT_UNIT_UNIT(x) ((x) & LV2_PORT_UNIT_UNIT) | ||||
| // Port Unit Unit | // Port Unit Unit | ||||
| #define LV2_PORT_UNIT_BAR 0x01 | |||||
| #define LV2_PORT_UNIT_BEAT 0x02 | |||||
| #define LV2_PORT_UNIT_BPM 0x03 | |||||
| #define LV2_PORT_UNIT_CENT 0x04 | |||||
| #define LV2_PORT_UNIT_CM 0x05 | |||||
| #define LV2_PORT_UNIT_COEF 0x06 | |||||
| #define LV2_PORT_UNIT_DB 0x07 | |||||
| #define LV2_PORT_UNIT_DEGREE 0x08 | |||||
| #define LV2_PORT_UNIT_FRAME 0x09 | |||||
| #define LV2_PORT_UNIT_HZ 0x0A | |||||
| #define LV2_PORT_UNIT_INCH 0x0B | |||||
| #define LV2_PORT_UNIT_KHZ 0x0C | |||||
| #define LV2_PORT_UNIT_KM 0x0D | |||||
| #define LV2_PORT_UNIT_M 0x0E | |||||
| #define LV2_PORT_UNIT_MHZ 0x0F | |||||
| #define LV2_PORT_UNIT_MIDINOTE 0x10 | |||||
| #define LV2_PORT_UNIT_MILE 0x11 | |||||
| #define LV2_PORT_UNIT_MIN 0x12 | |||||
| #define LV2_PORT_UNIT_MM 0x13 | |||||
| #define LV2_PORT_UNIT_MS 0x14 | |||||
| #define LV2_PORT_UNIT_OCT 0x15 | |||||
| #define LV2_PORT_UNIT_PC 0x16 | |||||
| #define LV2_PORT_UNIT_S 0x17 | |||||
| #define LV2_PORT_UNIT_SEMITONE 0x18 | |||||
| #define LV2_PORT_UNIT_BAR 1 | |||||
| #define LV2_PORT_UNIT_BEAT 2 | |||||
| #define LV2_PORT_UNIT_BPM 3 | |||||
| #define LV2_PORT_UNIT_CENT 4 | |||||
| #define LV2_PORT_UNIT_CM 5 | |||||
| #define LV2_PORT_UNIT_COEF 6 | |||||
| #define LV2_PORT_UNIT_DB 7 | |||||
| #define LV2_PORT_UNIT_DEGREE 8 | |||||
| #define LV2_PORT_UNIT_FRAME 9 | |||||
| #define LV2_PORT_UNIT_HZ 10 | |||||
| #define LV2_PORT_UNIT_INCH 11 | |||||
| #define LV2_PORT_UNIT_KHZ 12 | |||||
| #define LV2_PORT_UNIT_KM 13 | |||||
| #define LV2_PORT_UNIT_M 14 | |||||
| #define LV2_PORT_UNIT_MHZ 15 | |||||
| #define LV2_PORT_UNIT_MIDINOTE 16 | |||||
| #define LV2_PORT_UNIT_MILE 17 | |||||
| #define LV2_PORT_UNIT_MIN 18 | |||||
| #define LV2_PORT_UNIT_MM 19 | |||||
| #define LV2_PORT_UNIT_MS 20 | |||||
| #define LV2_PORT_UNIT_OCT 21 | |||||
| #define LV2_PORT_UNIT_PC 22 | |||||
| #define LV2_PORT_UNIT_S 23 | |||||
| #define LV2_PORT_UNIT_SEMITONE 24 | |||||
| #define LV2_IS_PORT_UNIT_BAR(x) ((x) == LV2_PORT_UNIT_BAR) | #define LV2_IS_PORT_UNIT_BAR(x) ((x) == LV2_PORT_UNIT_BAR) | ||||
| #define LV2_IS_PORT_UNIT_BEAT(x) ((x) == LV2_PORT_UNIT_BEAT) | #define LV2_IS_PORT_UNIT_BEAT(x) ((x) == LV2_PORT_UNIT_BEAT) | ||||
| @@ -167,19 +167,19 @@ typedef uint32_t LV2_Property; | |||||
| #define LV2_IS_PORT_TRIGGER(x) ((x) & LV2_PORT_TRIGGER) | #define LV2_IS_PORT_TRIGGER(x) ((x) & LV2_PORT_TRIGGER) | ||||
| // Port Designation | // Port Designation | ||||
| #define LV2_PORT_DESIGNATION_CONTROL 0x1 | |||||
| #define LV2_PORT_DESIGNATION_FREEWHEELING 0x2 | |||||
| #define LV2_PORT_DESIGNATION_LATENCY 0x3 | |||||
| #define LV2_PORT_DESIGNATION_SAMPLE_RATE 0x4 | |||||
| #define LV2_PORT_DESIGNATION_TIME_BAR 0x5 | |||||
| #define LV2_PORT_DESIGNATION_TIME_BAR_BEAT 0x6 | |||||
| #define LV2_PORT_DESIGNATION_TIME_BEAT 0x7 | |||||
| #define LV2_PORT_DESIGNATION_TIME_BEAT_UNIT 0x8 | |||||
| #define LV2_PORT_DESIGNATION_TIME_BEATS_PER_BAR 0x9 | |||||
| #define LV2_PORT_DESIGNATION_TIME_BEATS_PER_MINUTE 0xA | |||||
| #define LV2_PORT_DESIGNATION_TIME_FRAME 0xB | |||||
| #define LV2_PORT_DESIGNATION_TIME_FRAMES_PER_SECOND 0xC | |||||
| #define LV2_PORT_DESIGNATION_TIME_SPEED 0xD | |||||
| #define LV2_PORT_DESIGNATION_CONTROL 1 | |||||
| #define LV2_PORT_DESIGNATION_FREEWHEELING 2 | |||||
| #define LV2_PORT_DESIGNATION_LATENCY 3 | |||||
| #define LV2_PORT_DESIGNATION_SAMPLE_RATE 4 | |||||
| #define LV2_PORT_DESIGNATION_TIME_BAR 5 | |||||
| #define LV2_PORT_DESIGNATION_TIME_BAR_BEAT 6 | |||||
| #define LV2_PORT_DESIGNATION_TIME_BEAT 7 | |||||
| #define LV2_PORT_DESIGNATION_TIME_BEAT_UNIT 8 | |||||
| #define LV2_PORT_DESIGNATION_TIME_BEATS_PER_BAR 9 | |||||
| #define LV2_PORT_DESIGNATION_TIME_BEATS_PER_MINUTE 10 | |||||
| #define LV2_PORT_DESIGNATION_TIME_FRAME 11 | |||||
| #define LV2_PORT_DESIGNATION_TIME_FRAMES_PER_SECOND 12 | |||||
| #define LV2_PORT_DESIGNATION_TIME_SPEED 13 | |||||
| #define LV2_IS_PORT_DESIGNATION_CONTROL(x) ((x) == LV2_PORT_DESIGNATION_CONTROL) | #define LV2_IS_PORT_DESIGNATION_CONTROL(x) ((x) == LV2_PORT_DESIGNATION_CONTROL) | ||||
| #define LV2_IS_PORT_DESIGNATION_FREEWHEELING(x) ((x) == LV2_PORT_DESIGNATION_FREEWHEELING) | #define LV2_IS_PORT_DESIGNATION_FREEWHEELING(x) ((x) == LV2_PORT_DESIGNATION_FREEWHEELING) | ||||
| @@ -197,22 +197,22 @@ typedef uint32_t LV2_Property; | |||||
| #define LV2_IS_PORT_DESIGNATION_TIME(x) ((x) >= LV2_PORT_DESIGNATION_TIME_BAR && (x) <= LV2_PORT_DESIGNATION_TIME_SPEED) | #define LV2_IS_PORT_DESIGNATION_TIME(x) ((x) >= LV2_PORT_DESIGNATION_TIME_BAR && (x) <= LV2_PORT_DESIGNATION_TIME_SPEED) | ||||
| // Feature Types | // Feature Types | ||||
| #define LV2_FEATURE_OPTIONAL 0x1 | |||||
| #define LV2_FEATURE_REQUIRED 0x2 | |||||
| #define LV2_FEATURE_OPTIONAL 1 | |||||
| #define LV2_FEATURE_REQUIRED 2 | |||||
| #define LV2_IS_FEATURE_OPTIONAL(x) ((x) == LV2_FEATURE_OPTIONAL) | #define LV2_IS_FEATURE_OPTIONAL(x) ((x) == LV2_FEATURE_OPTIONAL) | ||||
| #define LV2_IS_FEATURE_REQUIRED(x) ((x) == LV2_FEATURE_REQUIRED) | #define LV2_IS_FEATURE_REQUIRED(x) ((x) == LV2_FEATURE_REQUIRED) | ||||
| // UI Types | // UI Types | ||||
| #define LV2_UI_GTK2 0x1 | |||||
| #define LV2_UI_GTK3 0x2 | |||||
| #define LV2_UI_QT4 0x3 | |||||
| #define LV2_UI_QT5 0x4 | |||||
| #define LV2_UI_COCOA 0x5 | |||||
| #define LV2_UI_WINDOWS 0x6 | |||||
| #define LV2_UI_X11 0x7 | |||||
| #define LV2_UI_EXTERNAL 0x8 | |||||
| #define LV2_UI_OLD_EXTERNAL 0x9 | |||||
| #define LV2_UI_GTK2 1 | |||||
| #define LV2_UI_GTK3 2 | |||||
| #define LV2_UI_QT4 3 | |||||
| #define LV2_UI_QT5 4 | |||||
| #define LV2_UI_COCOA 5 | |||||
| #define LV2_UI_WINDOWS 6 | |||||
| #define LV2_UI_X11 7 | |||||
| #define LV2_UI_EXTERNAL 8 | |||||
| #define LV2_UI_OLD_EXTERNAL 9 | |||||
| #define LV2_IS_UI_GTK2(x) ((x) == LV2_UI_GTK2) | #define LV2_IS_UI_GTK2(x) ((x) == LV2_UI_GTK2) | ||||
| #define LV2_IS_UI_GTK3(x) ((x) == LV2_UI_GTK3) | #define LV2_IS_UI_GTK3(x) ((x) == LV2_UI_GTK3) | ||||
| @@ -299,10 +299,7 @@ struct LV2_RDF_PortMidiMap { | |||||
| : Type(0), | : Type(0), | ||||
| Number(0) {} | Number(0) {} | ||||
| #ifdef CARLA_PROPER_CPP11_SUPPORT | |||||
| LV2_RDF_PortMidiMap(LV2_RDF_PortMidiMap&) = delete; | |||||
| LV2_RDF_PortMidiMap(const LV2_RDF_PortMidiMap&) = delete; | |||||
| #endif | |||||
| CARLA_LEAK_DETECTOR(LV2_RDF_PortMidiMap) | |||||
| }; | }; | ||||
| // Port Points | // Port Points | ||||
| @@ -318,10 +315,7 @@ struct LV2_RDF_PortPoints { | |||||
| Minimum(0.0f), | Minimum(0.0f), | ||||
| Maximum(1.0f) {} | Maximum(1.0f) {} | ||||
| #if 0 // def CARLA_PROPER_CPP11_SUPPORT FIXME! | |||||
| LV2_RDF_PortPoints(LV2_RDF_PortPoints&) = delete; | |||||
| LV2_RDF_PortPoints(const LV2_RDF_PortPoints&) = delete; | |||||
| #endif | |||||
| CARLA_LEAK_DETECTOR(LV2_RDF_PortPoints) | |||||
| }; | }; | ||||
| // Port Unit | // Port Unit | ||||
| @@ -342,17 +336,23 @@ struct LV2_RDF_PortUnit { | |||||
| ~LV2_RDF_PortUnit() | ~LV2_RDF_PortUnit() | ||||
| { | { | ||||
| if (Name != nullptr) | if (Name != nullptr) | ||||
| { | |||||
| delete[] Name; | delete[] Name; | ||||
| Name = nullptr; | |||||
| } | |||||
| if (Render != nullptr) | if (Render != nullptr) | ||||
| { | |||||
| delete[] Render; | delete[] Render; | ||||
| Render = nullptr; | |||||
| } | |||||
| if (Symbol != nullptr) | if (Symbol != nullptr) | ||||
| { | |||||
| delete[] Symbol; | delete[] Symbol; | ||||
| Symbol = nullptr; | |||||
| } | |||||
| } | } | ||||
| #ifdef CARLA_PROPER_CPP11_SUPPORT | |||||
| LV2_RDF_PortUnit(LV2_RDF_PortUnit&) = delete; | |||||
| LV2_RDF_PortUnit(const LV2_RDF_PortUnit&) = delete; | |||||
| #endif | |||||
| CARLA_DECLARE_NON_COPY_STRUCT_WITH_LEAK_DETECTOR(LV2_RDF_PortUnit) | |||||
| }; | }; | ||||
| // Port Scale Point | // Port Scale Point | ||||
| @@ -367,13 +367,13 @@ struct LV2_RDF_PortScalePoint { | |||||
| ~LV2_RDF_PortScalePoint() | ~LV2_RDF_PortScalePoint() | ||||
| { | { | ||||
| if (Label != nullptr) | if (Label != nullptr) | ||||
| { | |||||
| delete[] Label; | delete[] Label; | ||||
| Label = nullptr; | |||||
| } | |||||
| } | } | ||||
| #ifdef CARLA_PROPER_CPP11_SUPPORT | |||||
| LV2_RDF_PortScalePoint(LV2_RDF_PortScalePoint&) = delete; | |||||
| LV2_RDF_PortScalePoint(const LV2_RDF_PortScalePoint&) = delete; | |||||
| #endif | |||||
| CARLA_DECLARE_NON_COPY_STRUCT_WITH_LEAK_DETECTOR(LV2_RDF_PortScalePoint) | |||||
| }; | }; | ||||
| // Port | // Port | ||||
| @@ -403,17 +403,23 @@ struct LV2_RDF_Port { | |||||
| ~LV2_RDF_Port() | ~LV2_RDF_Port() | ||||
| { | { | ||||
| if (Name != nullptr) | if (Name != nullptr) | ||||
| { | |||||
| delete[] Name; | delete[] Name; | ||||
| Name = nullptr; | |||||
| } | |||||
| if (Symbol != nullptr) | if (Symbol != nullptr) | ||||
| { | |||||
| delete[] Symbol; | delete[] Symbol; | ||||
| Symbol = nullptr; | |||||
| } | |||||
| if (ScalePoints != nullptr) | if (ScalePoints != nullptr) | ||||
| { | |||||
| delete[] ScalePoints; | delete[] ScalePoints; | ||||
| ScalePoints = nullptr; | |||||
| } | |||||
| } | } | ||||
| #ifdef CARLA_PROPER_CPP11_SUPPORT | |||||
| LV2_RDF_Port(LV2_RDF_Port&) = delete; | |||||
| LV2_RDF_Port(const LV2_RDF_Port&) = delete; | |||||
| #endif | |||||
| CARLA_DECLARE_NON_COPY_STRUCT_WITH_LEAK_DETECTOR(LV2_RDF_Port) | |||||
| }; | }; | ||||
| // Preset | // Preset | ||||
| @@ -428,15 +434,18 @@ struct LV2_RDF_Preset { | |||||
| ~LV2_RDF_Preset() | ~LV2_RDF_Preset() | ||||
| { | { | ||||
| if (URI != nullptr) | if (URI != nullptr) | ||||
| { | |||||
| delete[] URI; | delete[] URI; | ||||
| URI = nullptr; | |||||
| } | |||||
| if (Label != nullptr) | if (Label != nullptr) | ||||
| { | |||||
| delete[] Label; | delete[] Label; | ||||
| Label = nullptr; | |||||
| } | |||||
| } | } | ||||
| #ifdef CARLA_PROPER_CPP11_SUPPORT | |||||
| LV2_RDF_Preset(LV2_RDF_Preset&) = delete; | |||||
| LV2_RDF_Preset(const LV2_RDF_Preset&) = delete; | |||||
| #endif | |||||
| CARLA_DECLARE_NON_COPY_STRUCT_WITH_LEAK_DETECTOR(LV2_RDF_Preset) | |||||
| }; | }; | ||||
| // Feature | // Feature | ||||
| @@ -451,13 +460,13 @@ struct LV2_RDF_Feature { | |||||
| ~LV2_RDF_Feature() | ~LV2_RDF_Feature() | ||||
| { | { | ||||
| if (URI != nullptr) | if (URI != nullptr) | ||||
| { | |||||
| delete[] URI; | delete[] URI; | ||||
| URI = nullptr; | |||||
| } | |||||
| } | } | ||||
| #ifdef CARLA_PROPER_CPP11_SUPPORT | |||||
| LV2_RDF_Feature(LV2_RDF_Feature&) = delete; | |||||
| LV2_RDF_Feature(const LV2_RDF_Feature&) = delete; | |||||
| #endif | |||||
| CARLA_DECLARE_NON_COPY_STRUCT_WITH_LEAK_DETECTOR(LV2_RDF_Feature) | |||||
| }; | }; | ||||
| // UI | // UI | ||||
| @@ -486,21 +495,33 @@ struct LV2_RDF_UI { | |||||
| ~LV2_RDF_UI() | ~LV2_RDF_UI() | ||||
| { | { | ||||
| if (URI != nullptr) | if (URI != nullptr) | ||||
| { | |||||
| delete[] URI; | delete[] URI; | ||||
| URI = nullptr; | |||||
| } | |||||
| if (Binary != nullptr) | if (Binary != nullptr) | ||||
| { | |||||
| delete[] Binary; | delete[] Binary; | ||||
| Binary = nullptr; | |||||
| } | |||||
| if (Bundle != nullptr) | if (Bundle != nullptr) | ||||
| { | |||||
| delete[] Bundle; | delete[] Bundle; | ||||
| Bundle = nullptr; | |||||
| } | |||||
| if (Features != nullptr) | if (Features != nullptr) | ||||
| { | |||||
| delete[] Features; | delete[] Features; | ||||
| Features = nullptr; | |||||
| } | |||||
| if (Extensions != nullptr) | if (Extensions != nullptr) | ||||
| { | |||||
| delete[] Extensions; | delete[] Extensions; | ||||
| Extensions = nullptr; | |||||
| } | |||||
| } | } | ||||
| #ifdef CARLA_PROPER_CPP11_SUPPORT | |||||
| LV2_RDF_UI(LV2_RDF_UI&) = delete; | |||||
| LV2_RDF_UI(const LV2_RDF_UI&) = delete; | |||||
| #endif | |||||
| CARLA_DECLARE_NON_COPY_STRUCT_WITH_LEAK_DETECTOR(LV2_RDF_UI) | |||||
| }; | }; | ||||
| // Plugin | // Plugin | ||||
| @@ -561,33 +582,63 @@ struct LV2_RDF_Descriptor { | |||||
| ~LV2_RDF_Descriptor() | ~LV2_RDF_Descriptor() | ||||
| { | { | ||||
| if (URI != nullptr) | if (URI != nullptr) | ||||
| { | |||||
| delete[] URI; | delete[] URI; | ||||
| URI = nullptr; | |||||
| } | |||||
| if (Name != nullptr) | if (Name != nullptr) | ||||
| { | |||||
| delete[] Name; | delete[] Name; | ||||
| Name = nullptr; | |||||
| } | |||||
| if (Author != nullptr) | if (Author != nullptr) | ||||
| { | |||||
| delete[] Author; | delete[] Author; | ||||
| Author = nullptr; | |||||
| } | |||||
| if (License != nullptr) | if (License != nullptr) | ||||
| { | |||||
| delete[] License; | delete[] License; | ||||
| License = nullptr; | |||||
| } | |||||
| if (Binary != nullptr) | if (Binary != nullptr) | ||||
| { | |||||
| delete[] Binary; | delete[] Binary; | ||||
| Binary = nullptr; | |||||
| } | |||||
| if (Bundle != nullptr) | if (Bundle != nullptr) | ||||
| { | |||||
| delete[] Bundle; | delete[] Bundle; | ||||
| Bundle = nullptr; | |||||
| } | |||||
| if (Ports != nullptr) | if (Ports != nullptr) | ||||
| { | |||||
| delete[] Ports; | delete[] Ports; | ||||
| Ports = nullptr; | |||||
| } | |||||
| if (Presets != nullptr) | if (Presets != nullptr) | ||||
| { | |||||
| delete[] Presets; | delete[] Presets; | ||||
| Presets = nullptr; | |||||
| } | |||||
| if (Features != nullptr) | if (Features != nullptr) | ||||
| { | |||||
| delete[] Features; | delete[] Features; | ||||
| Features = nullptr; | |||||
| } | |||||
| if (Extensions != nullptr) | if (Extensions != nullptr) | ||||
| { | |||||
| delete[] Extensions; | delete[] Extensions; | ||||
| Extensions = nullptr; | |||||
| } | |||||
| if (UIs != nullptr) | if (UIs != nullptr) | ||||
| { | |||||
| delete[] UIs; | delete[] UIs; | ||||
| UIs = nullptr; | |||||
| } | |||||
| } | } | ||||
| #ifdef CARLA_PROPER_CPP11_SUPPORT | |||||
| LV2_RDF_Descriptor(LV2_RDF_Descriptor&) = delete; | |||||
| LV2_RDF_Descriptor(const LV2_RDF_Descriptor&) = delete; | |||||
| #endif | |||||
| CARLA_DECLARE_NON_COPY_STRUCT_WITH_LEAK_DETECTOR(LV2_RDF_Descriptor) | |||||
| }; | }; | ||||
| #endif // LV2_RDF_INCLUDED | #endif // LV2_RDF_INCLUDED | ||||
| @@ -66,3 +66,7 @@ clean: | |||||
| $(MAKE) clean -C rtmempool | $(MAKE) clean -C rtmempool | ||||
| $(MAKE) clean -C ../theme | $(MAKE) clean -C ../theme | ||||
| $(MAKE) clean -C ../widgets | $(MAKE) clean -C ../widgets | ||||
| # -------------------------------------------------------------- | |||||
| .PHONY: lilv rtmempool | |||||
| @@ -33,15 +33,10 @@ DigitalPeakMeter::DigitalPeakMeter(QWidget* parent) | |||||
| fColorBase(93, 231, 61), | fColorBase(93, 231, 61), | ||||
| fColorBaseAlt(15, 110, 15, 100), | fColorBaseAlt(15, 110, 15, 100), | ||||
| fChannelsData(nullptr), | fChannelsData(nullptr), | ||||
| fLastValueData(nullptr), | |||||
| fPaintTimer(this) | |||||
| fLastValueData(nullptr) | |||||
| { | { | ||||
| setChannels(0); | setChannels(0); | ||||
| setColor(GREEN); | setColor(GREEN); | ||||
| fPaintTimer.setInterval(60); | |||||
| connect(&fPaintTimer, SIGNAL(timeout()), this, SLOT(update())); | |||||
| fPaintTimer.start(); | |||||
| } | } | ||||
| DigitalPeakMeter::~DigitalPeakMeter() | DigitalPeakMeter::~DigitalPeakMeter() | ||||
| @@ -60,12 +55,23 @@ void DigitalPeakMeter::displayMeter(int meter, float level) | |||||
| if (meter <= 0 || meter > fChannels || fChannelsData == nullptr) | if (meter <= 0 || meter > fChannels || fChannelsData == nullptr) | ||||
| return qCritical("DigitalPeakMeter::displayMeter(%i, %f) - invalid meter number", meter, level); | return qCritical("DigitalPeakMeter::displayMeter(%i, %f) - invalid meter number", meter, level); | ||||
| if (level < 0.0f) | |||||
| level = -level; | |||||
| else if (level > 1.0f) | |||||
| int i = meter - 1; | |||||
| if (fSmoothMultiplier > 0) | |||||
| level = (fLastValueData[i] * fSmoothMultiplier + level) / float(fSmoothMultiplier + 1); | |||||
| if (level < 0.001f) | |||||
| level = 0.0f; | |||||
| else if (level > 0.999f) | |||||
| level = 1.0f; | level = 1.0f; | ||||
| fChannelsData[meter-1] = level; | |||||
| if (fChannelsData[i] != level) | |||||
| { | |||||
| fChannelsData[i] = level; | |||||
| update(); | |||||
| } | |||||
| fLastValueData[i] = level; | |||||
| } | } | ||||
| void DigitalPeakMeter::setChannels(int channels) | void DigitalPeakMeter::setChannels(int channels) | ||||
| @@ -146,15 +152,6 @@ void DigitalPeakMeter::setOrientation(Orientation orientation) | |||||
| updateSizes(); | updateSizes(); | ||||
| } | } | ||||
| void DigitalPeakMeter::setRefreshRate(int rate) | |||||
| { | |||||
| Q_ASSERT(rate > 0); | |||||
| fPaintTimer.stop(); | |||||
| fPaintTimer.setInterval(rate); | |||||
| fPaintTimer.start(); | |||||
| } | |||||
| void DigitalPeakMeter::setSmoothRelease(int value) | void DigitalPeakMeter::setSmoothRelease(int value) | ||||
| { | { | ||||
| Q_ASSERT(value >= 0 && value <= 5); | Q_ASSERT(value >= 0 && value <= 5); | ||||
| @@ -169,7 +166,7 @@ void DigitalPeakMeter::setSmoothRelease(int value) | |||||
| QSize DigitalPeakMeter::minimumSizeHint() const | QSize DigitalPeakMeter::minimumSizeHint() const | ||||
| { | { | ||||
| return QSize(30, 30); | |||||
| return QSize(10, 10); | |||||
| } | } | ||||
| QSize DigitalPeakMeter::sizeHint() const | QSize DigitalPeakMeter::sizeHint() const | ||||
| @@ -216,9 +213,6 @@ void DigitalPeakMeter::paintEvent(QPaintEvent* event) | |||||
| { | { | ||||
| float value, level = fChannelsData[i]; | float value, level = fChannelsData[i]; | ||||
| if (level == fLastValueData[i]) | |||||
| continue; | |||||
| if (fOrientation == HORIZONTAL) | if (fOrientation == HORIZONTAL) | ||||
| value = level * float(fWidth); | value = level * float(fWidth); | ||||
| else if (fOrientation == VERTICAL) | else if (fOrientation == VERTICAL) | ||||
| @@ -226,18 +220,12 @@ void DigitalPeakMeter::paintEvent(QPaintEvent* event) | |||||
| else | else | ||||
| value = 0.0f; | value = 0.0f; | ||||
| if (value < 0.0f) | |||||
| value = 0.0f; | |||||
| else if (fSmoothMultiplier > 0) | |||||
| value = (fLastValueData[i] * float(fSmoothMultiplier) + value) / float(fSmoothMultiplier + 1); | |||||
| if (fOrientation == HORIZONTAL) | if (fOrientation == HORIZONTAL) | ||||
| painter.drawRect(0, meterX, int(value), fSizeMeter); | painter.drawRect(0, meterX, int(value), fSizeMeter); | ||||
| else if (fOrientation == VERTICAL) | else if (fOrientation == VERTICAL) | ||||
| painter.drawRect(meterX, int(value), fSizeMeter, fHeight); | painter.drawRect(meterX, int(value), fSizeMeter, fHeight); | ||||
| meterX += fSizeMeter; | meterX += fSizeMeter; | ||||
| fLastValueData[i] = value; | |||||
| } | } | ||||
| painter.setBrush(Qt::black); | painter.setBrush(Qt::black); | ||||
| @@ -42,23 +42,22 @@ public: | |||||
| }; | }; | ||||
| DigitalPeakMeter(QWidget* parent); | DigitalPeakMeter(QWidget* parent); | ||||
| ~DigitalPeakMeter(); | |||||
| ~DigitalPeakMeter() override; | |||||
| void displayMeter(int meter, float level); | void displayMeter(int meter, float level); | ||||
| void setChannels(int channels); | void setChannels(int channels); | ||||
| void setColor(Color color); | void setColor(Color color); | ||||
| void setOrientation(Orientation orientation); | void setOrientation(Orientation orientation); | ||||
| void setRefreshRate(int rate); | |||||
| void setSmoothRelease(int value); | void setSmoothRelease(int value); | ||||
| QSize minimumSizeHint() const; | |||||
| QSize sizeHint() const; | |||||
| QSize minimumSizeHint() const override; | |||||
| QSize sizeHint() const override; | |||||
| protected: | protected: | ||||
| void updateSizes(); | void updateSizes(); | ||||
| void paintEvent(QPaintEvent* event); | |||||
| void resizeEvent(QResizeEvent* event); | |||||
| void paintEvent(QPaintEvent* event) override; | |||||
| void resizeEvent(QResizeEvent* event) override; | |||||
| private: | private: | ||||
| int fChannels; | int fChannels; | ||||
| @@ -75,8 +74,6 @@ private: | |||||
| float* fChannelsData; | float* fChannelsData; | ||||
| float* fLastValueData; | float* fLastValueData; | ||||
| QTimer fPaintTimer; | |||||
| CARLA_LEAK_DETECTOR(DigitalPeakMeter) | CARLA_LEAK_DETECTOR(DigitalPeakMeter) | ||||
| }; | }; | ||||